1.2.1 | Portabel |
Java ist portabel. Um die Portabilität von Java-Anwendungen zu gewährleisten, wurde auf ein bewährtes Prinzip zurückgegriffen: Man definierte eine virtuelle Maschine, für die auf den heute üblichen Hardware-Plattformen effiziente Interpreter implementiert werden können.
Java-Programme werden daher auf dem Entwicklungsrechner zunächst mit einem Compiler in den so genannten Bytecode für die virtuelle Java-Maschine übersetzt. Diese Maschine besitzt eine relativ kleine Menge von Instruktionen, die sich gut auf heutige Prozessoren umsetzen lassen. Der Bytecode wird dann von einem Interpreter auf der Zielplattform ausgeführt. Mit diesem Prinzip kann der Bytecode eines Java-Programms auf jeder Plattform verwendet werden, für die eine Portierung des Interpreters existiert. Zur Steigerung der Ablaufgeschwindigkeit verfügen einige Interpreter heute außerdem über so genannte Just-in-Time-Compiler, die den Java-Bytecode zur Laufzeit in nativen Maschinencode übersetzen.
Doch nicht nur die Unabhängigkeit der virtuellen Maschine von einer bestimmten Architektur helfen bei der Portierbarkeit. Hinzu kommt, dass alle Datentypen unabhängig von der jeweiligen Implementierung exakt festgelegt sind. Der Typ int beispielsweise wird immer als 32-Bit-Zahl mit Zweierkomplement-Schreibweise für negative Zahlen dargestellt.