JVM & JRE & JDK
JVM
Damit der Programmcode des virtuellen Prozessors ausgeführt werden kann, kümmert sich nach der Phase, in der der Programmcode in Bytecode übersetzt wird, eine Laufzeitumgebung, die sogenannte Java Virtual Machine (JVM), um den Bytecode.
Die Idee des Bytecodes ist schon alt. Die Firma Datapoint schuf um 1970 die Programmiersprache PL/B, die Programme auf Bytecode abbildet. Auch verwendet die Originalimplementierung von UCSD-Pascal, die etwa Anfang 1980 entstand, einen Zwischencode – kurz p-code.
Die Laufzeitumgebung (auch Runtime-Interpreter genannt) lädt den Bytecode, prüft ihn und führt ihn in einer kontrollierten Umgebung aus. Die JVM bietet eine ganze Reihe von Zusatzdiensten, z. B. eine automatische Speicherbereinigung (Garbage-Collector), die Speicher aufräumt, sowie eine starke Typprüfung unter einem klar definierten Speicher- und Threading-Modell. [1]
JRE
Java ist nicht nur eine Programmiersprache, sondern ebenso ein Laufzeitsystem, was Oracle durch den Begriff Java Platform verdeutlichen will. So gibt es neben der Programmiersprache Java durchaus andere Sprachen, die eine Java-Laufzeitumgebung (JRE) ausführen, etwa diverse Skriptsprachen wie Groovy (http://groovy-lang.org), JRuby (http://jruby.org), Jython (http://www.jython.org), Kotlin (http://kotlinlang.org) oder Scala (http://www.scala-lang.org). Skriptsprachen auf der Java-Plattform werden immer populärer; sie etablieren eine andere Syntax, nutzen aber die JVM und die Bibliotheken.
Zu der Programmiersprache und JVM kommt ein Satz von Standardbibliotheken für Datenstrukturen, Zeichenkettenverarbeitung, Datum/Zeit-Verarbeitung, grafische Oberflächen, Ein-/Ausgabe, Netzwerkoperationen und mehr. Das bildet die Basis für höherwertige Dienste wie Datenbankanbindungen oder Webservices. [2]
Damit der Kompilierte Java Code ausgeführt werden kann, muss das System über eine Java-Laufzeitumgebung (JRE) verfügen. Die Laufzeitumgebung kann für verschiedene Betriebssysteme hier auf der offiziellen Java Seite heruntergeladen werden.
JDK
Das Java Development Kit (JDK) des Unternehmens Oracle – ehemals von Sun Microsystems – ist eines der von Java-Entwicklern meistgenutzten Java-SDKs. Im November 2006 gab Sun bekannt, dass das JDK unter der GNU General Public License (GPL) veröffentlicht wird. Nun wird eine angepasste freie Version als ihr nunmehr offizieller Nachfolger unter dem Namen OpenJDK weitergeführt. [3]
Java-Compiler
Der Java-Compiler (javac) übersetzt Java-Quellcode in Java-Bytecode. Er liest den Quellcode aus Dateien mit der Endung .java und schreibt den Bytecode in Dateien, die auf .class enden.
Die eigentlichen Dateinamen entsprechen dem Namen der zu übersetzenden Klasse. Das Paket, in dem die Klasse liegt, wird auf einen passenden Verzeichnispfad abgebildet. Ein Java-Paket (englisch Package) ist ein eigener Namensraum. Zum Beispiel kann eine Datei HalloWelt.java die Klasse net.bitelligence.HalloWelt enthalten.
Dann erzeugt der Aufruf javac net.bitelligence.HalloWelt.java eine Datei HalloWelt.class im Verzeichnis „net/bitelligence“ (bzw. „net\bitelligence“ unter Windows). Der Java-Compiler ist in Java geschrieben und plattformunabhängig, das heißt, der Bytecode des Compilers ist auf unterschiedlichen Plattformen identisch. [3:1]
Java-Debugger
Der Java-Debugger (jdb) ist ein Tool zum Debuggen einer laufenden Java-Anwendung. Es werden dabei klassische Debuggerfunktionen unterstützt wie:
- Code Listing (Quellcode anzeigen)
- Setzen von Unterbrechungspunkten (Breakpoints)
- Inspizieren von Variablen und Datenstrukturen zur Laufzeit
Er kann direkt mit einer Laufzeitumgebung gestartet werden oder aber ad-hoc in eine entsprechend konfigurierte Laufzeitumgebung eingeklinkt werden (Remote Debugging).
In der Dokumentation wird darauf verwiesen, dass der mitgelieferte Java-Debugger lediglich eine Demonstration der mächtigen Java Debugging API sei. Demzufolge bringen die meisten Java-Entwicklungsumgebungen einen einfacher zu benutzenden Debugger mit. [3:2]
Java-Dokumentationswerkzeug
Das Software-Dokumentationswerkzeug javadoc erzeugt a us dem Java-Quellcode eine Programmdokumentation als HTML-Hypertext. Dazu werden neben strukturellen Informationen auch Kommentare berücksichtigt. [3:3]
Java-Archiver
Das Programm jar erstellt Java-Archive (sogenannte JAR-Dateien). Das sind spezielle ZIP-Dateien, in denen Java-Klassen zu verteilbaren Einheiten zusammengefasst werden. Das Werkzeug hat eine ähnliche Kommandozeilensyntax wie das bekannte Unix-Programm tar, ermöglicht jedoch zusätzlich die direkte Manipulation der darin enthaltenen „Manifest-Datei“. In dem JAR-Archiv werden sämtliche .class-Dateien, Grafiken, Textdateien und sonstige Dateien, also beispielsweise alles, was eine Java-Anwendung benötigt, zu einer einzigen Datei zusammengepackt, dem JAR-Archiv. [3:4]