Hi,
Ich habe mich jetzt schon etwas länger über das JRE informiert,
aber ich habe immer noch offene Fragen.
Also soweit ich das verstanden habe übersetzt ein Compiler den von
einem Programmierer geschriebenen Quellcode in Bytecode,
um einen Geschwindigkeitsvorteil zu Scriptsprachen zu erzielen, die
vor der Interpretation noch die Programmlogik/Semantik auswerten müssen.
Das hat aber noch nichts mit dem JRE zu tun.
Der JIT übersetzt dann vor dem Start eines Java-Programms den
Bytecode in Plattformabhängigen Maschinencode. Dieser Vorgang
hat die Nachteile, dass der Start verzögert wird und
dass der Speicher das Programm im Speicher halten muss.
Hier kommt bei mir die Frage auf, warum ein in Maschinensprache
vorliegendes Programm nicht lokal (von mir aus versteckt)
als ausführbare Datei gespeichert und ganz normal gestartet wird.
Hat die JVM zur Ausführungszeit immer noch die Möglichkeit
den Programmfluss zu steuern?
Wieso ersetzt man die Kontrollmechanismen dann nicht mithilfe von
mitcompilierten Strukturen? :bahnhof:
Der HotSpot-Compiler ist eine Lösung, die die Vorteile des vor dem JIT
genutzten Interpreters und des JIT-Compilers selbst vereint.
Das heißt, dass der Bytecode nicht vor dem Programmstart übersetzt wird,
sondern wie beim Interpreter zur Laufzeit.
Allerdings gibt es den Unterschied,
dass Performance-kritische Abschnitte des Programms
zur Laufzeit in stark optimierten Maschinencode übersetzt werden.
Ich hoffe, dass ihr dazu einige Ergänzungen/Korrekturen machen und
mir meine Fragen beantworten könnt.
Liebe grüße,
Mindstream.
Ich habe mich jetzt schon etwas länger über das JRE informiert,
aber ich habe immer noch offene Fragen.
Also soweit ich das verstanden habe übersetzt ein Compiler den von
einem Programmierer geschriebenen Quellcode in Bytecode,
um einen Geschwindigkeitsvorteil zu Scriptsprachen zu erzielen, die
vor der Interpretation noch die Programmlogik/Semantik auswerten müssen.
Das hat aber noch nichts mit dem JRE zu tun.
Der JIT übersetzt dann vor dem Start eines Java-Programms den
Bytecode in Plattformabhängigen Maschinencode. Dieser Vorgang
hat die Nachteile, dass der Start verzögert wird und
dass der Speicher das Programm im Speicher halten muss.
Hier kommt bei mir die Frage auf, warum ein in Maschinensprache
vorliegendes Programm nicht lokal (von mir aus versteckt)
als ausführbare Datei gespeichert und ganz normal gestartet wird.
Hat die JVM zur Ausführungszeit immer noch die Möglichkeit
den Programmfluss zu steuern?
Wieso ersetzt man die Kontrollmechanismen dann nicht mithilfe von
mitcompilierten Strukturen? :bahnhof:
Der HotSpot-Compiler ist eine Lösung, die die Vorteile des vor dem JIT
genutzten Interpreters und des JIT-Compilers selbst vereint.
Das heißt, dass der Bytecode nicht vor dem Programmstart übersetzt wird,
sondern wie beim Interpreter zur Laufzeit.
Allerdings gibt es den Unterschied,
dass Performance-kritische Abschnitte des Programms
zur Laufzeit in stark optimierten Maschinencode übersetzt werden.
Ich hoffe, dass ihr dazu einige Ergänzungen/Korrekturen machen und
mir meine Fragen beantworten könnt.
Liebe grüße,
Mindstream.