Was ist eine Java Virtual Machine?

Glücklicherweise müssen Sie sich niemals Java Bytecode schreiben oder zu entschlüsseln. Schreiben Bytecode ist die Aufgabe des Compilers. Bytecode Entzifferung ist die Java Virtual Machine des Jobs.

Menu

Im Allgemeinen Computer nicht ausführen Java Bytecode-Anweisungen. Stattdessen hat jede Art von Computer-Prozessor seinen eigenen Satz von ausführbaren Anweisungen und jeder Computer-Betriebssystem verwendet den Anweisungen des Prozessors in einer etwas anderen Weise.

"Eine Java Virtual Machine läuft Ihr Code (und Java-Code anderer Menschen) auf Ihrem Computer."
-- Barry Burd, Java für Dummies, 6. Auflage

Beispiel Java Inserate

Hier ist eine hypothetische Situation: Stellen Sie sich vor, dass Sie das Linux-Betriebssystem auf einem Computer ausführen, der einen alten Pentium-Prozessor hat. Ihr Freund läuft Linux auf einem Computer mit einer anderen Art von Prozessor - ein PowerPC-Prozessor. (In den 1990er Jahren machte Intel Corporation Pentium-Prozessoren und IBM gemacht PowerPC-Prozessoren.)

Diese Auflistung enthält eine Reihe von Anweisungen anzuzeigen Hallo Welt! auf dem Computerbildschirm. Die Anweisungen arbeiten auf einem Pentium-Prozessor mit Linux-Betriebssystem läuft.

.datamsg: .ascii "Hallo Welt! n" len =. - Msg.text.global _start_start: movl $ len,% edxmovl $ msg,% ecxmovl 1 $,% ebxmovl 4 $,% eaxint $ 0x80movl 0 $,% ebxmovl 1 $,% eaxint 0x80 $

Hier ist ein weiterer Satz von Anweisungen anzuzeigen Hallo Welt! auf dem Bildschirm. Die Anweisungen in dieser Auflistung Arbeit auf einem PowerPC-Prozessor mit Linux.

.datamsg: .String "Hallo, Welt! n" len =. - Msg.text.global _start_start: li 0,4li 3,1lis 4, msg @ haaddi4,4, msg @ LLI 5, lenscli 0,1li 3,1sc

Die Anweisungen hier reibungslos laufen auf einem Pentium-Prozessor. Aber diese Anweisungen bedeuten nichts zu einem PowerPC-Prozessor. Ebenso laufen andere Anweisungen gut auf einem PowerPC, aber diese gleichen Instruktionen sind vollständig Kauderwelsch an einen Computer mit einem Pentium-Prozessor. So PowerPC-Software Ihr Freund möglicherweise nicht auf Ihrem Computer verfügbar. Und die Software von Intel Computer möglicherweise nicht überhaupt auf Ihr Freund Computer ausgeführt werden.

Gehen Sie jetzt zu Hause Ihre Cousine. Ihr Cousin Computer verfügt über einen Pentium-Prozessor (wie Sie), aber Ihr Cousin Computer läuft unter Windows anstelle von Linux. Was macht Computer Ihre Cousine zu tun, wenn Sie es der Pentium-Code in Listing 2-3 füttern? Es schreit: "Nicht gültige Win32-Anwendung" oder "Windows kann diese Datei nicht öffnen." Was für ein Chaos!

Was ist Java-Bytecode?

Java-Bytecode erzeugt aus all diesem Chaos Ordnung. Java-Bytecode ist so etwas wie den Code in Anzeigen 2-3 und 2-4, aber Java-Bytecode ist eine Art von Prozessor oder einem Betriebssystem nicht spezifisch. Stattdessen wird eine Reihe von Java-Bytecode-Anweisungen auf jedem Computer.

Wenn Sie ein Java-Programm schreiben, und das Java-Programm in Bytecode kompiliert, dann kann der Computer den Bytecode ausführen, Computer Ihres Freundes den Bytecode ausführen können, Supercomputer Ihrer Großmutter den Bytecode ausführen können, und mit etwas Glück, Ihr Handy oder Tablet kann das laufen Bytecode.

Mit Java können Sie eine Bytecode-Datei übernehmen, die Sie mit einem Windows-Computer erstellt, kopieren Sie den Bytecode wer weiß, welche Art von Computer und dann den Bytecode ohne Probleme laufen überhaupt nicht. Das ist einer der vielen Gründe, warum Java so schnell populär geworden ist. Diese herausragende Eigenschaft, die Ihnen die Möglichkeit, Code auf viele verschiedene Arten von Computern ausgeführt werden, heißt Portabilität.

Was ist die Java Virtual Machine zu tun?

Was macht Java-Bytecode so vielseitig? Diese fantastische Universalität von Java-Bytecode-Programme genossen kommt von der Java Virtual Machine. Die Java Virtual Machine ist eine dieser drei Tools, die Sie auf Ihrem Computer haben.

Stellen Sie sich vor, dass Sie die Windows-Vertreter in den Sicherheitsrat der Vereinten Nationen sind. (Siehe Abbildung.) Der Macintosh Vertreter auf der rechten Seite sitzt, und der Linux-Vertreter ist auf der linken Seite. Der angesehene Vertreter von Java ist auf dem Podium. Die Java-Vertreter wird in Bytecode gesprochen, und weder Sie noch Ihre Kolleginnen und Botschafter (Mac und Linux) verstehen, um ein Wort von Java-Bytecode.

Aber jeder von euch hat einen Dolmetscher. Ihr Dolmetscher übersetzt von Bytecode auf Windows, während die Java-Vertreter spricht. Ein weiterer Dolmetscher übersetzt von Bytecode Macintosh-ese. Und ein dritter Dolmetscher übersetzt Bytecode in Linux-sprechen.

Denken Sie an Ihren Dolmetscher als virtueller Botschafter. Der Dolmetscher ist nicht wirklich repräsentieren Ihr Land, aber der Dolmetscher führt eine der wichtigen Aufgaben, die ein echter Botschafter führt.

Der Dolmetscher hört in Ihrem Namen Bytecode. Der Dolmetscher tut, was Sie tun würden, wenn Ihre Muttersprache Java-Bytecode waren. Der Dolmetscher gibt vor, die Windows-Botschafter zu sein, und setzt sich durch die Bohrung Bytecode Sprache, in jedem Wort nehmen, und die Verarbeitung jedes Wort in eine oder andere Weise.

Sie haben einen Dolmetscher - einen virtuellen Botschafter. In gleicher Weise läuft ein Windows-Computer seine eigene Bytecode-Interpretieren Software. Diese Software ist die Java Virtual Machine.

Eine imaginäre Sitzung des UN-Sicherheitsrates.
Eine imaginäre Sitzung des UN-Sicherheitsrates.

Eine Java Virtual Machine ist ein Proxy, ein Laufbursche, ein Vermittler. Die JVM dient als Dolmetscher zwischen Java-Lauf überall Bytecode und eigene System Ihres Computers. Während es läuft, die JVM läuft Ihr Computer durch die Ausführung von Bytecode-Anweisungen.

Die JVM prüft Ihre Bytecode, Stück für Stück, und führt die in den Bytecode beschriebenen Anweisungen. Die JVM interpretiert Bytecode für Ihr Windows-System, Mac oder Linux-Box, oder für was auch immer Art von Computer Sie verwenden. Das ist gut. Es ist, was Java-Programme macht mehr tragbar als Programme in einer anderen Sprache.

Menü