Was sind Bytecode und wie funktioniert die JVM mit Ihnen umgehen
Ich oft gehört, dass Java implemments JIT(just-in-time) - Kompilierung, und seine bytecodes, die sind portabel über Plattformen bekommen "interpretiert" durch die JVM. Aber ich weiß wirklich nicht, was die bytecodes sind, und was die JVM tatsächlich bedeutet in der Sprache Java Architektur; ich würde gerne mehr über Sie wissen.
hoffe en.wikipedia.org/wiki/Bytecode helfen würde.
InformationsquelleAutor Midnight Blue | 2010-02-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
JVM (Java Virtual Machine) ist ein Befehlssatz, der nur wie eine echte Maschine. Der name dieser Befehlssatz von Java-Bytecode. Es ist beschrieben in der Java Virtual Machine Specification. Andere Sprachen werden übersetzt in ein bytecode vor der Ausführung, zum Beispiel ruby und python. Java-bytecode ist auf einem relativ geringen Niveau, während python ' s ist viel mehr high-level.
Interpretation und JIT-Kompilierung sind zwei unterschiedliche Strategien für die Ausführung von bytecode. Interpretation Prozesse bytecodes ein zu einer Zeit machen, die änderungen am Zustand der virtuellen Maschine, die codiert werden in jedem Unterricht. Die JIT-Kompilierung übersetzt den bytecode in native Anweisungen an die host-Plattform, die Durchführung von entsprechenden Vorgängen.
Interpretation ist in der Regel schnell zu beginnen, aber langsam, während Ausführung, während JIT hat mehr startup-overhead-läuft aber schneller danach. Moderne JVMs verwenden eine Kombination von interpretation und JIT-Techniken, um die Vorteile beider. Der bytecode wird zunächst interpretiert, während die JIT-übersetzen Sie es in den hintergrund. Nachdem die JIT-Kompilierung abgeschlossen ist, wird die JVM-switches zu verwenden, die code statt den interpreter. Manchmal JIT-Kompilierung kann bessere Ergebnisse produzieren als die ahead-of-time-compilation wird für C und C++, weil es mehr Dynamik. Die JVM kann verfolgen, wie oft code genannt wird und was die typischen Pfade durch den code, und verwenden Sie diese Informationen zur Generierung von effizienteren code, während das Programm ausgeführt wird. Die JVM kann switch zu diesem neuen code nur, wenn es zunächst wechselt von der Dolmetscherin an den JIT-code.
Genauso, wie es andere Sprachen, die zu systemeigenen code kompiliert, wie C, C++, Fortran; es gibt Compiler für andere Sprachen, die Ausgabe JVM-bytecode. Ein Beispiel dafür ist der scala-Sprache. Ich glaube, dass groovy und jruby können auch konvertieren von java-bytecode.
Der bytecode wird zunächst interpretiert, während die JIT-übersetzen im hintergrund .Ist das ein mutli-threaded-Konzept oder ein sequentieller Prozess?
das ist, natürlich, bis zu den besonderen Umsetzung, aber ich erwarte, dass die moderne JVMs ausführen der JIT-compiler in einem parallelen thread
Habe eine gute Erklärung dafür, nach einer langen Suche.
Vielen Dank für die ausführliche Erklärung.
InformationsquelleAutor Geoff Reedy
Bytecode ist ein Schritt zwischen Ihren source-code und der tatsächlichen Computer-code. Die JVM ist, was den bytecode und übersetzt Sie in Maschinencode.
JIT bezieht sich auf die Tatsache, dass die JVM tut dies die übersetzung on-the-fly, wenn das Programm ausgeführt wird, anstatt in einem einzigen Schritt (wie in einem traditionell kompiliert/gelinkt Sprache wie C oder C++)
Den Punkt der bytecode ist, dass Sie eine bessere Leistung als eine streng interpretierte Sprache (wie PHP zum Beispiel), weil der bytecode ist teilweise bereits kompiliert und optimiert wird. Auch, da der bytecode nicht direkt interpretiert durch die CPU, es muß nicht gebunden werden, um jede spezifische CPU-Architektur, die macht es mehr tragbar.
Der Nachteil ist natürlich, dass es im Allgemeinen ein bisschen langsamer als eine nativ kompilierte Anwendung, da die JVM noch um einige Arbeit zu tun in der übersetzung von bytecode zu Maschinencode.
InformationsquelleAutor Eric Petroelje
Beim kompilieren etwas in Java, der compiler erzeugt bytecode. Dies ist nativen code für die Java Virtual Machine. Die JVM übersetzt den bytecode in nativen code für den Prozessor/Architektur, dies ist, wo die JIT passiert. Ohne JIT-Compiler für die JVM übersetzen möchte das Programm eine Anweisung zu einem Zeitpunkt, was sehr langsam ist.
InformationsquelleAutor Cesar
Bytecode wird der JVM entspricht der Maschinenbefehle.
InformationsquelleAutor Kaleb Brasee
jcyang bereits einen link zu wikipedia, aber dieser hier ist eine bessere übereinstimmung zu deiner Frage:
Java-Bytecode
Dem Java-Compiler kompiliert Java-Quellcode, class-Dateien. Methoden der Klasse sind übersetzt Bytecode und die Java virtual machine (JVM) interpretiert diesen byte-code. Eine Just-In-Time-compiler (JIT) kann verwendet werden, um übersetzen den byte code Maschinen-code, um die Geschwindigkeit der Ausführung von Klassenmethoden.
InformationsquelleAutor Andreas_D
JVM ist eine virtuelle Maschine, die verwendet wird, um die Ausführung von Java-code. Vergleichen wir die JVM mit einem compiler, denn ohne ihn können wir nicht kompilieren von Java-code und-Anwendungen. JVM ist nichts anderes als ein Stück code, das bezeugen Ihre Java-code. Die Hauptaufgabe der JVM ist die Umwandlung von Java-code in Java-bytecode und kompilieren Sie es. Dies macht Java Entwicklung leicht. Check-out dieser Artikel wenn Sie mehr darüber wissen möchten, wie funktioniert die Java Virtual Machine Funktioniert?
InformationsquelleAutor Bessie Hamilton