Warum c, wenn es Java gibt?
3 Antworten
Alle Programmiersprachen sind schlecht und keine Programmiersprache kann alle Probleme gut lösen, es ist eher so, daß man sich die Sprache nimmt, die in einem Szenario am wenigsten schlecht ist.
Du hast in Java nicht einmal Primitive, um mit der Hardware umzugehen, das hat man ja gerade bewußt in die JVM gelegt (resp. das OS auf dem diese läuft), um das wegzuabstrahieren.
Für irgendwelche 0815-Anwendungen mit trivialer Business-Logik und ähnlichem wirst Du immer auch Java nutzen können, die Anwendung ist portabel, Du bist aber eben auch auf die JVM angewiesen.
Und da fangen dann ggf. Lizensierungsprobleme an.
Was Systemprogrammierung betrifft, da wirst Du mit JNI/JNA nicht so wirklich viel Spaß haben.
Prinzipiell ist es so, dass Sprachen erst dann aussterben wenn sie kaum mehr genutzt werden.
Da viele Systemnahe Programme wie Microcontroller Firmware oder Betriebssysteme (zB Linux als ausschließliches C Projekt) in C programmiert sind und nach wie vor in dieser Sprache weiterentwickelt und gewartet werden, gibt es auch noch viele Personen die C beherrschen und in so fern ist es naheliegend, dass auch einige dieser Personen C für neue Projekte weiter verwenden werden, anstatt auf eine andere Sprache zu wechseln.
Dieser Absatz war mehr auf zB Rust und C bezogen und warum C generell als Sprache noch nicht all zu bald ausstirbt.
Bei Java und C ist es so, dass Java nicht für die Low Level Systemprogrammierung geeignet ist, da die Sprache dafür designed ist um in einer Laufzeitumgebung (Java Virtual Machine auch JVM genannt) ausgeführt zu werden und diese Laufzeitumgebung selbst benötigt ein Betriebssystem, oder zumindest eine Implementierung der JVM. Daher eignet sich Java nicht für solche Aufgaben.
Es gibt bzw gab natürliche Ansätze das zu Ändern und es meines wissens für FPGAs Softcores die direkt Javabytecode ausführen können, hier ist die JVM eben in Hardware abgebildet, aber diese Ansätze haben sich nicht durchgesetzt, weil dadurch Komplexität von der Software auf die Hardware transferiert wird und Hardware idR eben teurer ist als Software.
Weil C auch für hardwarenahe Programmierung (z.B. Mikrocontroller) genutzt werden kann, wofür Java prinzipbedingt eher nicht sooo gut geeignet ist.