Kann mir jemand bei dem Java Laufzeitsystem/ Umgebung helfen?

... komplette Frage anzeigen

2 Antworten

Wie du bereits erwähnt hast wandeln diese mithilfe von Just-In-Time-Kompilierung (JIT) den Java Virtual Machine Bytecode in der .class Datei in Maschinensprache um.

Dies geschieht wie der Name Just-In-Time sagt gerade bevor der Code benötigt wird.
Der Unterschied zwischen JIT-Kompilierung und Interpretation besteht darin, dass Die Interpretation den Bytecode übersetzt direkt bevor er ausgeführt wird. Die JIT-Kompilierung jedoch stellt eine intelligentere Art der ausführung dar, da bei Mehrfach-Ausführung von Code dieser als ganzer Block in die Maschinensprache des spezifischen Prozessors umgewandelt wird. Dies ist schneller wenn der Code tatsächlich mehrfach ausgeführt wird, bringt andernfalls jedoch Verluste.

Falls du noch mehr über die Java Virtual Machine lernen willst empfehle ich das Buch vom O'Reilly Verlag über sie.

Viel Spaß beim Bytecode hacken ;-)

Antwort bewerten Vielen Dank für Deine Bewertung

Java Source Dateien, also .java, werden vom Java Compiler in einen Bytecode umgewandelt der nur von der Java Virtual Machine, also einem virtuellem System, verstanden wird. Dieser Bytecode ist kein Maschinencode, wodurch Hotspot, die JVM von Oracle, auch ein Interpreter ist, d.h. er "liest" den Bytecode aus und handelt dann auf Grund dessen Anweisungen. Das ist auch der Grund wieso Java deutlich schneller als andere Interpreter Sprachen ist, der Bytecode kann weder Syntaxfehler noch zB Typfehler enthalten, die überprüft werden müssen.

Die Java JIT Compiler wie Excelsior Jet wandeln den Java Code in Maschinencode für einen spezifischen Kernel um, dieser ist in Regel auch schneller als ein normales Java Programm, weil er eben nicht interpretiert werden muss. Dieser Code ist dann aber nicht mehr JVM kompatibel und muss deswegen etliche Funktionen der JVM mitliefern wodurch das Programm bedeutend größer wird, genauso sind lange nicht alle Funktionen der JVM enthalten. JIT Compiler haben noch den letzten Vorteil, dass es nur sehr schwer möglich ist den ursprünglichen Code wieder zu erhalten, man kann nur mit Reverse Engineering versuchen die grundsätzlichen bestandteile herauszufinden, aber den kompletten Source Code kann man dadurch unmöglich bekommen, Java Bytecode dagegen kann man einfach durch einen Decompiler jagen und bekommt den komplett funktionsfähigen Java Source Code wieder.

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?