Der Java Compiler erzeugt keinen Maschinencode sondern einen portablen Bytecode, welcher von der Java Virtual Machine (JVM) interpretiert wird. Damit kann ein einmal übersetztes Programm auf verschiedenen Plattformen ausgeführt werden, auf der eine JVM gestartet werden kann.
Adreßarithmetik ist in Java, im Gegensatz zu C oder C++, nicht möglich. Damit ist eine böswillige Manipulation von z. B. als 'private' gekennzeichneten Attributen einer Klasse, von außerhalb der Klasse, auf programmiersprachlicher Ebene nicht möglich. Auf der Ebene des zu interpretierenden Bytecode überprüft innerhalb der JVM der Bytecode Verifier jeden Speicherzugriff auf seine Korrektheit.
Ein Applet ist ein Javaprogramm, welches
normalerweise von einem Webserver über das Rechnernetz auf eine
Client-Maschine geladen wird.
Das Applet wird innerhalb des Browsers in einer Sandbox
ausgeführt. Ein Applet ist vor allem als GUI geeignet.
Java unterstützt die Serialisierung von Klassen sehr komfortabel. Jede Klasse kann prinzipiell serialisiert werden, indem dies durch einen Indikator in der Signatur der Klasse anzeigt wird. Die Serialisierung erfolgt automatisch und rekursiv. Die aktuellen Werte der Attribute der Klasse werden dabei berücksichtigt. Nur einige Klassen, wie z. B. java.lang.Thread sind nicht serialisierbar und müssen deshalb gesondert bearbeitet werden.
Wichtige Klassen der standardisierten Bibliothek:
Abbildung 3.5 zeigt die Ausführungsumgebung einer
Java-Applikation, wobei innerhalb des Programms drei voneinander unabhängige
Threads ausgeführt werden.