Wie Java eine plattformunabhängige Sprache ist

Mar 13 2023
Computerprogramme sind sehr eng mit einer bestimmten Hardware und einem bestimmten Betriebssystem verbunden. Beispielsweise können Windows-Anwendungen nicht auf dem Mac-Betriebssystem ausgeführt werden.

Computerprogramme sind sehr eng mit einer bestimmten Hardware und einem bestimmten Betriebssystem verbunden. Beispielsweise können Windows-Anwendungen nicht auf dem Mac-Betriebssystem ausgeführt werden. Mac-Anwendungen können nicht auf dem Android-Betriebssystem usw. ausgeführt werden.

Einige Anwendungen sind für alle Betriebssysteme gleich, wie z. B. MS Word. Sollte das also für alle Betriebssysteme separat geschrieben werden?

Um dieser Plattformvielfalt gerecht zu werden, sollten solche Anwendungen für alle Plattformen unabhängig geschrieben werden. Java bietet eine Möglichkeit, Anwendungen unabhängig von Hardware und Betriebssystemen zu schreiben. Daher wird sie als plattformunabhängige Programmiersprache bezeichnet.

Plattformunabhängig bedeutet, dass der mit Java kompilierte Code (Bytecode) auf allen Betriebssystemen ausgeführt werden kann.

Ein Programm ist in einer für Menschen lesbaren Sprache geschrieben. Es kann Wörter, Sätze usw. enthalten, die das Gerät nicht versteht. Damit der Quellcode von der Maschine verstanden wird, muss er in einer Sprache verfasst sein, die von Maschinen verstanden wird, typischerweise einer Sprache auf Maschinenebene. Hier kommt also die Rolle eines Compilers. Der Compiler wandelt die Hochsprache (menschliche Sprache) in ein für die Maschinen verständliches Format um. Daher ist ein Compiler ein Programm, das den Quellcode für ein anderes Programm aus einer Programmiersprache in ausführbaren Code übersetzt.
Dieser ausführbare Code kann eine Folge von Maschinenanweisungen sein, die direkt von der CPU ausgeführt werden können, oder es kann sich um eine Zwischendarstellung handeln, die von einer virtuellen Maschine interpretiert wird. Diese Zwischendarstellung in Java ist dieJava-Byte-Code.

· Was ist eine Plattform und was ist eine plattformunabhängige Sprache?
· Kompilieren eines Codes
· Wie wird ein Programm in JAVA ausgeführt?
· JVM (Java Virtual Machine)
· Welche Rolle spielen Kompilierung und Interpretation bei der Plattformunabhängigkeit?
· Wie sorgt Java für Plattformunabhängigkeit?
· Warum ist Java nicht vollständig plattformunabhängig?
· Fazit

Was ist eine Plattform und was ist eine plattformunabhängige Sprache?

Die Plattform kann als eine eindeutige Kombination aus Hardware, Betriebssystem und Software definiert werden, die eine Umgebung zum Ausführen von Programmen bereitstellt .

Unter Plattformunabhängigkeit versteht man die Unabhängigkeit des Programms vom Betriebssystem des Systems. Es übernimmt die „Write Once Run Anywhere (WORA)“-Methodik.

Kompilieren eines Codes

Jedes Mal, wenn wir Code schreiben, halten wir uns an die Syntax einer Programmiersprache, die im Allgemeinen lesbar ist. Ein paar Wörter, Variablennamen, Phrasen, Methodennamen usw. sind enthalten. Sie alle gelten als Literatur, die der Mensch lesen und verstehen kann.

Als Ergebnis führt ein Computer einen Compiler aus, um den Quellcode in maschinenlesbaren Code umzuwandeln, der auch als Sprache auf Maschinenebene bezeichnet wird. Der Compiler erstellt den Code auf Maschinenebene in einem bestimmten Format, damit die CPU ihn leicht verstehen und fehlerfrei ausführen kann.

Sofern nicht beide Computer auf demselben Betriebssystem ausgeführt werden, können wir Code, der auf einem Computer entwickelt wurde, nicht auf einem anderen ausführen, wenn sich die Sprache auf Maschinenebene je nach Betriebssystem unterscheidet. Viele Entwickler und Programmierer halten dies für inakzeptabel. Allerdings vereinfacht Java die Dinge und bietet eine Lösung dafür.

Wie wird ein Programm in JAVA ausgeführt?

In Java konvertiert der Compiler das Programm in Bytecode, bei dem es sich nicht um ausführbaren Code handelt. Die JVM (Java Virtual Machine) führt dann den Bytecode zur Laufzeit aus. Java-Quellcode wird in Bytecode kompiliert, wenn wir den Javac- Compiler verwenden.

Der resultierende Bytecode ist nicht maschinenausführbar und kann auf jeder anderen Plattform oder jedem anderen Betriebssystem ausgeführt werden. Für die Ausführung auf einem Computer ist jedoch ein Interpreter erforderlich. Wenn wir das Programm oder die Datei ausführen, erhalten wir eine .class- Datei, bei der es sich um eine nicht ausführbare Datei handelt. Die JVM fungiert als dieser Interpreter und führt dadurch den Bytecode aus. JVM ist zweifellos plattformunabhängig. Ähnlich wie es je nach Umgebung variiert. MAC und Linux haben beispielsweise eine andere JVM als Windows. Es unterstützt Portabilität als eines seiner Hauptmerkmale, da der portable Bytecode seines Codes es plattformunabhängig macht.

Der Bytecode wird mit der Dateierweiterung .class auf der Festplatte gespeichert . Wenn das Programm ausgeführt werden soll, wird der Bytecode mithilfe des Just-in-Time -Compilers ( JIT ) konvertiert. Das Ergebnis ist Maschinencode, der dann dem Speicher zugeführt und ausgeführt wird.

Java-Code muss zweimal kompiliert werden, um ausgeführt zu werden:

  1. Java-Programme müssen in Bytecode kompiliert werden.
  2. Wenn der Bytecode ausgeführt wird, muss er in Maschinencode konvertiert werden.

Der Compiler erstellt eine OS-dependent.exe-Datei, wenn C oder C++ verwendet wird (diese Sprachen sind nicht plattformunabhängig). Diese.exe-Datei wird nicht ausgeführt, wenn wir versuchen, sie auf einem anderen Betriebssystem auszuführen, da sie von diesem Betriebssystem abhängt und nicht mit diesem kompatibel ist.

JVM (Java Virtual Machine)

Die JVM, eine Komponente des Java-Compilers, wandelt .java-Dateien in.class-Dateien um. Die Schlüsselfunktion im Quellcode heißt JVM, wenn wir Java-Code kompilieren.

JVM (Java Virtual Machine) fungiert als Laufzeit-Engine zum Ausführen von Java-Anwendungen. JVM ist diejenige, die tatsächlich die in einem Java-Code vorhandene Hauptmethode aufruft . JVM ist Teil von JRE (Java Runtime Environment).

Java-Anwendungen heißen WORA (Write Once Run Anywhere). Dies bedeutet, dass ein Programmierer Java-Code auf einem System entwickeln kann und davon ausgehen kann, dass er ohne Anpassungen auf jedem anderen Java-fähigen System ausgeführt werden kann. Dies alles ist dank JVM möglich.

Wenn wir eine .java- Datei kompilieren, werden vom Java-Compiler .class- Dateien (enthält Bytecode) mit denselben Klassennamen wie in der .java- Datei generiert. Diese .class- Datei durchläuft bei der Ausführung verschiedene Schritte. Diese Schritte zusammen beschreiben die gesamte JVM.

In Java ist der Hauptpunkt hier, dass die JVM vom Betriebssystem abhängt. Wenn Sie also Mac OS X verwenden, verfügen Sie über eine andere JVM als wenn Sie Windows oder ein anderes Betriebssystem verwenden. Diese Tatsache kann überprüft werden, indem Sie versuchen, die JVM für Ihren bestimmten Computer herunterzuladen. Wenn Sie versuchen, sie herunterzuladen, wird Ihnen eine Liste der JVMs angezeigt, die verschiedenen Betriebssystemen entsprechen, und Sie können natürlich die JVM auswählen, die für das Betriebssystem bestimmt ist Du läufst. Daraus können wir schließen, dass JVM plattformabhängig ist und dass dies der Grund dafür ist, dass Java „plattformunabhängig“ werden kann.

Wichtige Punkte:

  • Im Fall von Java ist es die Magie von Bytecode, die es plattformunabhängig macht .
  • Dies fügt eine wichtige Funktion in der JAVA-Sprache hinzu, die als Portabilität bezeichnet wird . Jedes System verfügt über eine eigene JVM, die automatisch installiert wird, wenn die JDK-Software installiert wird. Für jedes Betriebssystem ist eine eigene JVM verfügbar, die in der Lage ist, die .class-Datei oder den Bytecode zu lesen.
  • Ein wichtiger Punkt ist, dass JAVA zwar eine plattformunabhängige Sprache ist, JVM jedoch plattformabhängig. Unterschiedliche JVMs sind für unterschiedliche Betriebssysteme konzipiert und Bytecode kann auf unterschiedlichen Betriebssystemen ausgeführt werden.

Um Plattformunabhängigkeit zu erreichen, kombiniert es sowohl Kompilierung als auch Interpretation. Wenn ein Programm in Java kompiliert wird, wird es nicht in Maschinencode, sondern in Bytecode umgewandelt, der oft als .class-Datei bezeichnet wird. Dieser Bytecode unterscheidet ihn durch seine Funktionen vom Maschinencode, da er auf eine andere Plattform verschoben/portiert werden kann, Java jedoch nicht. Dieser Bytecode kann auf einer Java Virtual Machine ausgeführt werden.

Wie bietet Java Plattformunabhängigkeit?

In den meisten Programmiersprachen generiert ein Compiler (oder Interpreter) Code, der auf einem bestimmten Zielcomputer ausgeführt werden kann . Wenn Sie beispielsweise ein C++-Programm auf einem Windows-Computer kompilieren, kann die ausführbare Datei auf einen beliebigen anderen Computer kopiert werden, sie wird jedoch nur auf anderen Windows-Computern ausgeführt, jedoch niemals auf einem anderen Computer (z. B. einem Mac oder einem Linux-Computer). Eine Plattform wird durch den Zielcomputer (zusammen mit seinem Betriebssystem) bestimmt. Für frühere Sprachen mussten Sprachdesigner für jede Plattform eine spezielle Version des Compilers (oder Interpreters) erstellen. Wenn Sie ein Programm schreiben würden, das Sie auf mehreren Plattformen verfügbar machen möchten, müssten Sie als Programmierer einiges an zusätzlicher Arbeit leisten. Sie müssten für jede Plattform mehrere Versionen Ihres Quellcodes erstellen.

Java ist es gelungen, das Plattformproblem für erfahrene Programmierer (wie Sie) zu beseitigen, da es die Compile-Link-Execute-Sequenz auf einer zugrunde liegenden Ebene des Compilers neu organisiert hat. Die Details sind kompliziert, aber im Wesentlichen haben die Entwickler der Java-Sprache die Programmierprobleme isoliert, die von der Plattform abhängen, und Mittel auf niedriger Ebene entwickelt, um abstrakt auf diese Probleme zu verweisen. Folglich erstellt der Java-Compiler keine Objektdatei, sondern eine Bytecode- Datei, die im Wesentlichen eine Objektdatei für eine virtuelle Maschine ist . Tatsächlich wird der Java-Compiler oft als JVM-Compiler (für Java Virtual Machine) bezeichnet.

Folglich können Sie ein Java-Programm (auf jeder Plattform) schreiben und den JVM-Compiler (javac genannt) verwenden, um eine Bytecode-Datei zu generieren (Bytecode-Dateien verwenden die Erweiterung .class). Diese Bytecode-Datei kann auf jeder Plattform (auf der Java installiert ist) verwendet werden. Bytecode ist jedoch keine ausführbare Datei. Um eine Bytecode-Datei auszuführen, müssen Sie tatsächlich einen Java-Interpreter (genannt Java) aufrufen. Jede Plattform verfügt über einen eigenen Java-Interpreter, der sich automatisch mit den plattformspezifischen Problemen befasst, die nicht länger aufgeschoben werden können. Wenn der Bytecode plattformspezifische Operationen erfordert, verknüpft der Java-Interpreter den entsprechenden plattformspezifischen Code.

Wie bei interpretierten Sprachen ist es möglich, Java-Programme schneller laufen zu lassen, indem der Bytecode in eine ausführbare Datei kompiliert wird. Der Nachteil besteht darin, dass solche ausführbaren Dateien nur auf der Plattform funktionieren, auf der sie erstellt wurden.

Warum ist Java nicht vollständig plattformunabhängig?

Offensichtlich kann Java nicht auf einer Plattform laufen, die nicht über eine JVM verfügt. Im wahrsten Sinne des Wortes ist Java also nicht plattformunabhängig. Aber gleichzeitig ist Ihre Definition der Plattformunabhängigkeit nicht sinnvoll. Keine mögliche Sprache könnte jemals wirklich plattformunabhängig sein, da ein Aspekt der Plattform in der Lage sein müsste, die Sprache zu analysieren. Und angesichts aller möglichen Plattformen werden einige zwangsläufig nicht in der Lage sein, es zu analysieren.

Angesichts der Tatsache, dass viele, viele Plattformen eine JVM ausführen und Java-Code auf jeder JVM mit derselben Bedeutung ausgeführt werden kann, ist Java plattformabhängig.

Abschluss

Java ist eine der bekanntesten und am weitesten verbreiteten Programmiersprachen. Es handelt sich um eine plattformunabhängige Programmiersprache . Java erfordert nicht, dass der gesamte Code für alle verschiedenen Plattformen neu geschrieben wird. Es unterstützt Plattformunabhängigkeit mithilfe von Java-Bytecode und Java Virtual Machine . Der Java-Compiler javac wandelt den Programmcode in Bytecode um. Dieser Bytecode ist plattformunabhängig und kann auf jedem JVM-Betriebssystem ausgeführt werden. JVM interpretiert den Bytecode in Maschinencode und das Programm wird ausgeführt.

Danke fürs Lesen. Viel Spaß beim Lernen

Unterstützen Sie unsere Publikation, indem Sie ihr folgen

Wie lässt sich ein Vollzeitjob mit einem Teilzeitstudium vereinbaren? Starten Sie Ihren eigenen NFT-Marktplatz mit White-Label-NFT-Plattformlösungen Java Optional und beides: Umgang mit Nullwerten und Darstellung zweier möglicher Werte So machen Sie das Beste aus Ihrem Leben: Ein persönlicher Leitfaden Callable vs. Runnable vs. Future in Java Spring 3.0 und seine Funktionen Häufig gestellte Java8-Stream-basierte Interviewfrage – Letzter Teil Top 8 Gesetze aus „The 48 Laws of Power“ von Robert Greene: Rosmarin – Wie man ihn pflanzt und welche Vorteile er hat