"Java wird für systemnahe Programmierung verwendet"?

4 Antworten

Oh, das kann man nur falsch beantworten.

Also im Bereich "normaler" Computer ist es in der Regel eine ganz schlechte Idee, sehr systemnahe Dinge mit Java erledigen zu wollen. Java ist tendenziell eher langsam, hat ein vom Außenverhalten her nichtdeterministisches Speichernutzungsverhalten, braucht ohnehin für fast alles viel zu viel Speicher, und will ja bereits per Sprachphilosophie eben von der konkreten Hardwareplattform abstrahieren. Insofern tut es konzeptionell quasi das Gegenteil dessen, was z. B. ein Betriebssystem leisten soll.

Andererseits gibt es tatsächlich Bereiche, wo man sehr "systemnah" Java bzw. zumindest Java Byte Code verwendet. Ein Bereich, wo z. B. gern mit Java Byte Code gearbeitet wird, sind diverse Chipkarten. Da läuft tatsächlich die Software auf manchen dieser Chipkarten auf Basis Java Byte Code, der von spezialisierten Prozessoren dann sogar nativ abinterpretiert werden kann. (Zugegeben aber mit etlichen Restriktionen.)


range99gf 
Beitragsersteller
 10.10.2018, 23:20

Danke dir! :)

0

Nein. Java hat einen Quellcode, d.h ist es leserfreundlich, d.h kannst oder musst du nicht festlegen, auf welchem Speicherplatz etwas gespeichert (z.B assembler) wird. Du musst den Speicherplatz auch nicht leeren oder dir einen Trash-Collector schreiben (zB wie in C++).


range99gf 
Beitragsersteller
 10.10.2018, 23:14

Danke dir :D

0
Isendrak  10.10.2018, 23:20
Java hat einen Quellcode

Genau wie C, C++ und (auf gewisse Weise) auch Assembler.

Die Antwort an sich ist zwar korrekt, aber dieser Teil der Begründung definitiv nicht.

1

Klären wir erstmal, was Systemprogrammierung bedeutet:

Im Normalfall bedeutet es die Programmierung direkt auf Systemebene, die Nutzung der Systemaufrufe, auch unter expliziter Umgehung der Sprachbibliotheken. Hierfür ist Java der Sprachspezifikation nach nicht gemacht. Man kann sicherlich mit JNI etwas hinkrücken, aber so wirklich gut klappt das (IMHO) nicht. (Auf Microkernelarchitekturen können wir auch gerne Dienste die Dateisysteme etc. bereitstellen dazuzählen, wir sind ja nicht kleinlich).

Natürlich kann ein Prozessor prinzipiell Java-Bytecode direkt ausführen, wenn er dafür gebaut ist, sodaß sogar ein OS in Java denkbar ist, aber das ist ein ganz anderes Thema. (Siehe das obsolete JavaOS, es gibt auch Java-Prozessoren)

Aber egal wie, um Systemaufrufe ausführen zu können muß ich die Sprachspezifikation abändern und die der VM und dann ist es (IMHO) auch kein Java mehr. Aber ob Oracle so Aventgardistisch ist?

Mit Java kann man nicht systemnah programmieren, da die Sprache das so nicht zulässt und es auch nie vorgesehen war. Es widerspräche den Sinn von Java.

Systemnahe Programmierung findet mit der Programmiersprache C statt.

Java läuft in einer virtuellen Umgebung und nicht direkt auf der Hardware.

Woher ich das weiß:Studium / Ausbildung