Advanced   Java   Services Wie Java funktioniert Back Next Up Home


Schlagworte

Wird erreicht durch eine interpretierende Schicht über dem OS. Diese Schicht stellt die Verbindung zum jeweiligen OS her und sichert so die Plattformunabhängigkeit. Quellcode wird nicht zum Maschinencode der jeweiligen Plattform übersetzt, sondern zu einem Zwischenode, genannt Bytecode, der noch interpretiert werden muß.


Compiler und Bytecode

Ein Javacompiler übersetzt Quellcode nicht in Maschinencode, sondern in sogenannten Bytecode.


Java Archive

Mehrere Bytecodedateien werden zu einer gezippten Datei gepackt mit neuer Endung *.jar

MyProgram1.class

MyProgram2.class
..                     ->  myArchive.jar
..
MyProgramx.class

Java Bibliotheken

Mehrere Archive werden in ein Verzeichnis gelegt. Über einen speziellen Mechanismus (CLASSPATH) werden sie dem Compiler bekannt gemacht.


Wikipediaeintrag zu Bytecode


Java Virtual Machine

Die JVM interpretiert verifiziert den Bytecode und führt ihn nach erfolgreicher Prüfung aus. Die entscheidenden Teile der JVM:


Der Aufbau der Java Virtual Machine

java_virtual_machine_architecture.png


Bytecodeverifizierer

Der Bytecodeverifizierer prüft den Bytecode vor der Ausführung:

Eine Stufe früher nimmt bereits der Compiler ähnliche Überprüfungen vor.


Interpreter

Der Interpreter führt den überprüften Bytecode aus.


Speicherverwaltung

Die JVM ist auch für die Speicherverwaltung zuständig.

Im Gegensatz zu einem C/C++ - Programmierer braucht ein Javaprogrammierer sich nicht um die Speicherverwaltung kümmern. Auch diese Aufgabe übernimmt die JVM.


Heap und Stack (die verchiedenen Formen des Hauptspeichers)

Stack

Der Stack ist derjenige Teil des Speichers in dem die lokalen Variablen gespeichert werden. Lokale Variablen tauchen in Funktionen bzw. Methoden auf. Nach Beendigung der Funktion werden sie gelöscht. Der Stack ist also Speicher für Variablen, die nur eine kurze Lebensdauer haben.


Heap

Die JVM verwaltet als zweiten Speicherbereich den sog. Heap. Dieser Bereich speichert Daten, die eine längere Lebendauer haben müssen (sowie Daten für Objekte die erst zur Laufzeit initialisiert werden (dynamic memory allocation). Die folgende Graphik illustriert das.

stacknheap.png


Textsegment

Das Textsegment ist der Bereich, in dem das Programm selbst in assemblierter Form gespeichert wird.


Wikipediaeintrag zu Java Virtual Machine und Heap


Java Runtime Environment (JRE)

Java Runtime Environment (JRE) ist sozusagen die Hülle um die Java Virtual Machine und stellt die vorgefertigten Klassen zur Verfügung, die der Programmierer für seine Programme verwendet. In der neuesten Version von Java 7 sind es über 4000 Klassen und Interfaces, genauer gesagt 4024 Klassen und Interfaces.


Die API

Die API ist die Dokumentation der 4024 Javaklassen, die standardmäßig durch die JRE dem Programmierer zur Verfügung gestellt werden.


Link zur API (Java 3)


Link zur API (Java 4)


Link zur API (Java 5)


Link zur API (Java 6)


Link zur API (Java 7)


Die Datei rt.jar

In der Archivdatei rt.jar befinden sich die in der API dokumentierten Klassen in compilierter Form als Bytecode. Neben den 4024 dokumentierten Klassen enthält dieses zentrale Archiv noch über 2000 undokumentierte Klassen mit denen die Javaentwickler eine weitgehende Plattformunabhängigkeit herstellen.


Vorteile des Konzepts


Nachteile des Konzepts


Java Development Kit (JDK)

Währen die JRE die Möglichkeit zur Verfügung stellt compilierte Javaprogramme laufen zu lassen, ermöglicht es das JDK Javaprogramme zu entwickeln. Das wichtigste Instrument des JDK ist der Javacompiler (javac.exe auf Windowssystemen) der Javaquellcode übersetzt zu Bytecode.


Java und Unicode

Die ersten Codes für Text entstanden als Telegraphencodes.

Der Unicode soll die Zeichen nahezu aller Sprachen der Welt aufnehmen.

"In den letzten Jahren hat sich der Unicode-Standard erweitert, und Java ist den Erweiterungen gefolgt. Die Java-Versionen von 1.0 bis 1.4 nutzen den Unicode-Standard 1.1 bis 3.0, der für jedes Zeichen 16 Bit reserviert. So legt Java jedes Zeichen in 2 Byte ab und ermöglicht die Kodierung von mehr als 65.000 Zeichen. Ab Java 5 ist der Unicode 4.0-Standard möglich, der 32 Bit für die Abbildung eines Zeichens nötig macht."
(Java ist auch eine Insel Christian Ullenboom)


Multithreading

Wie alle modernen Programmiersprachen so unterstützt auch Java Multithreading. Es gibt also während des Programmablaufs nicht nur entweder-oder Verzweigungen, sondern es können auch mehrere Programmteile (quasi-) gleichzeitig parallel ablaufen. (später mehr bei Codebeispielen)












Valid XHTML 1.0 Strict top Back Next Up Home