2010-01-22 7 views
10

Nur neugierig zu wissen, wann Java dann unabhängige Plattform gemacht wird, ist es spezifische Gründe JVM abhängig gemacht Plattform ..Warum ist die JVM nicht plattformunabhängig, da Java (die Sprache) plattformunabhängig ist?

+7

Was fragen Sie eigentlich? – nos

+5

Ich persönlich finde, dass dies nicht geschlossen sein sollte (zur Wiedereröffnung gewählt). Die Frage mag dünn formuliert sein, aber es gibt dort eine "echte" Frage (auch wenn die Antwort auf den ersten Blick für manche offensichtlich scheint). – ChristopheD

+0

@ChristopheD - Könnten Sie bitte die Frage klären? – KatieK

Antwort

13

Wenn Sie keine CPU haben, die Java-Bytecode direkt ausführen kann (solche Dinge gibt es), müssen Sie mit dem Betriebssystem interagieren können (z. B. Dateien lesen, Verbindungen zum Netzwerk herstellen, auf dem Bildschirm anzeigen usw.) ..).

Sie können eine JVM in anderen Sprachen schreiben (z. B. Java oder JavaScript), aber letztendlich muss es etwas geben, das mit dem zugrunde liegenden Betriebssystem interagieren kann.

16

Die JVM Java-Code ausführt, werden aber in plattformspezifische Sprachen wie C/C++/ASM geschrieben usw. Die JVM ist nicht in Java geschrieben und kann daher nicht plattformunabhängig sein.

+2

Tatsächlich werden mehrere JVMs * in Java geschrieben: Maxine und Jikes sind nur zwei Beispiele. –

+2

Weil ein kleiner plattformabhängiger C-Lader benötigt wird, um den Bootstrap zu starten, egal was irgendjemand sagt, die JVM ist nicht 100% java :) –

+1

Sie haben Recht. Obwohl diese VMs C eher als Datenbeschreibungssprache und nicht als Programmiersprache verwenden. Sie verlassen sich meist auf den C-Compiler, um die Datenstrukturen so aufzubauen, wie das Betriebssystem sie erwartet, und nicht so sehr für die Semantik von C. Sie könnten wahrscheinlich ein Java-Programm schreiben, das die richtigen Speicherlayouts generiert, aber warum sollten Sie? Der C-Compiler der Plattform enthält bereits die ganze böse Layout-Logik. –

9

Die JVM muss plattformabhängig sein, damit Ihr Java auf der spezifischen Plattform ausgeführt werden kann. Eine JVM für Windows übersetzt Ihr Java in andere Systemaufrufe als eine JVM für OS X.

3

Da müssen Java-Aufrufe der plattformunabhängigen Anwendung in Aufrufe konvertiert werden, die mit dem zugrunde liegenden Betriebssystem kompatibel sind.

11

fand ich, dass dies eine großartige Antwort auf die Frage war:

JVM übersetzt Bytecode in Maschinensprache

Jedes Java-Programm ist in eine Zwischensprache kompiliert Java-Bytecode genannt. Die JVM wird verwendet, um sowohl den Bytecode in die Maschinensprache für einen bestimmten Computer zu übersetzen als auch tatsächlich die entsprechenden maschinensprachlichen Anweisungen auszuführen. Die JVM und der Bytecode kombiniert geben Java seinen Status als "portable" Sprache.

Maschinensprache ist OS abhängig

die Vorinformationen gegeben, sollte es einfacher sein, eine Antwort auf die Frage abzuleiten. Da die JVM den Bytecode in die Maschinensprache übersetzen muss und da die Maschinensprache vom verwendeten Betriebssystem abhängt, ist klar, dass die JVM von der Plattform (Betriebssystem) abhängig ist. Diese Tatsache kann verifiziert werden, indem Sie versuchen, laden Sie die JVM - Sie erhalten eine Liste der JVM entsprechend verschiedenen Betriebssystemen, und Sie werden offensichtlich wählen, welche JVM für das Betriebssystem gerichtet ist, die Sie ausführen.

Zitat von Is the JVM Platform Dependent?

+0

Diese Antwort ist nützlich ... –

3

Nein, JVMs sind nicht plattformunabhängig. Tatsächlich sind sie plattformspezifische Laufzeitumgebung, die vom Hersteller bereitgestellt wird. Jede Plattform (Windows, UNIX, Mac usw.) verfügt über eine eigene JVM, um Java-Anwendungen auszuführen. Obwohl der Byte-Code die Verbindung zu mehreren Datenbanken unterstützt.

Denken Sie an Musik gespielt wird in einem MP3-Player, CD-Player und alten treuen Kassettenrekordern (Boom Box). Die Ausgabe ist immer die gleiche, also Musik. Aber die Eingabe (Medien dh.mp3-Dateien für MP3-Player, CDs für CD-Player und Kassetten für Kassettenspieler) variieren je nach System [hier sind die Systeme die verschiedenen Betriebssysteme wie Windows, UNIX, Mac etc ..]. Hoffe, ich war in der Lage, Ihr Problem zu lösen ..

0

einfach wie - * - macht a +.

Wir alle Java wissen, ist plattformunabhängig

aber OS, wo wir den Code schreiben ist plattformabhängig

und Output sollte so plattformunabhängig sein, wir machen Jvm (die in-zwischen und installiert ist mit jre) plattformabhängig, so dass die Ausgabe unabhängig ist.

+0

Sortieren von. Die _language_ ist plattformunabhängig, muss aber irgendwie auf dieser Plattform laufen. Die Maschinerie dafür hängt von der Plattform ab, auf der sie läuft. – vonbrand

0

Ich denke, dass es plattformunabhängig sein könnte, wenn viele verschiedene Sprachen (jede in einer bestimmten Plattform geschrieben) kombiniert werden, damit sie ihren eigenen Code dynamisch ändern. Aber alle diese erfordern einige große Anstrengungen, um ihre Portabilität zu zerstören .

0

JVM übersetzt den Byte-Code, der universell für Maschinencode ist, der maschinenabhängig ist, daher ist JVM plattformabhängig. Aufgrund dieses Bytecodes ist Java plattformunabhängig.

-1

Nein, JVM ist plattformabhängig. Der in Java geschriebene Code ist nicht plattformabhängig. Wenn Sie Java-Code auf einem Windows-Betriebssystem schreiben, können Sie diesen Code unter Linux oder anderen Betriebssystemen ausführen. Aber die JVM für Windows und Linux ist anders. JVM wird in JRE gefunden und wenn Sie JRE von Oracle herunterladen, heißt es JRE für Windows, Linux und andere Betriebssysteme

1

JVM hängt vom Betriebssystem ab. Damit der Code unabhängig ist, sollte etwas abhängig sein und das ist JVM. Beim Herunterladen von JDK wird gefragt, für welches Betriebssystem Sie es herunterladen möchten. Dies bedeutet eindeutig, dass JVM plattformabhängig ist.

1

Die JVM ist nicht plattformunabhängig

Der Schlüssel hier ist, dass die JVM auf dem Betriebssystem abhängt - also, wenn Sie Mac OS X läuft Sie eine andere JVM haben, als wenn Sie Windows oder eine andere laufen Betriebssystem. Diese Tatsache kann verifiziert werden, indem Sie versuchen, die JVM für Ihre bestimmte Maschine herunterzuladen - wenn Sie versuchen, sie herunterzuladen, erhalten Sie eine Liste von JVMs, die verschiedenen Betriebssystemen entsprechen, und Sie werden offensichtlich die JVM für das Betriebssystem auswählen Du läufst.

Verwandte Themen