Viva Java Libre

Was zusammen gehört…Wissenswertes zu OpenJDK und Linux

Die Tage werden kürzer, die Nächte dafür länger: Das sind beste Voraussetzungen für einen neuen Ausflug in die Welt von OpenJDK, um den JDK-7-Entwicklern mal auf die Finger zu schauen.

Die Herbst/Wintersaison der Linux-Distributionen ist bereits voll im Gange, und OpenJDK 6 ist fast überall dabei. Angefangen mit Mandriva Linux One 2009 über Ubuntu 8.10 zu OpenSUSE 11.0 und Fedora 10, die neue Generation der Linux-Distributionen trägt OpenJDK. Sogar Debians nächstes Release Lenny wird mit OpenJDK im „main“-Paketarchiv kommen. Die Community-Distribution Debian ist für eine unkonventionell kompromisslose Haltung, was Open Source angeht, bekannt, daher ist die Aufnahme in das Hauptpaketarchiv dieser Distribution ein Open-Source-Ritterschlag erster Güte für das OpenJDK-Projekt.

Da es Hunderte von Linux-Distributionen gibt, wäre es ein langwieriges Unterfangen, für jede separat Pakete zu bauen. Durch die Zusammenarbeit mit den führenden Distributionen, von denen wiederum die meisten anderen abstammen, lässt sich ein „trickle-down“-Effekt beobachten, bei dem die Pakete aus Ubuntu, Debian & Co. auch in die neuen Ausgaben ihrer Derivate automatisch einfließen, z. B. in MEPIS.

… was zusammen gehört

Um Java endgültig in der Linux-Welt zu verankern, gehören neben der Arbeit mit den Linux-Distributoren auch die Standards, die Linux betreffen, dazu. Besondern wichtig ist hier die Linux Standard Base, ein von der Linux Foundation geleitetes Projekt, um die Linux-Plattform als offenen ISO-Standard zu definieren und zu warten. Die Linux Foundation kümmert sich u.a. darum, dass die LSB regelmäßig angepasst und um neue, relevante Technologien erweitert wird.

Eine dieser Technologien ist ganz klar Java. Die ersten Gehversuche, um Java in den LSB-Standard zu integrieren, liegen bereits einige Jahre zurück. Sie schlugen fehl, weil es damals noch kein OpenJDK gab, und sich die Linux-Distributionen daher scheuten, eine als proprietär betrachtete Technologie zum Kernbestandteil von Enterprise-Linux-Distributionen zu machen. Diese Betrachtungsweise ist auf dem Scherbenhaufen der Geschichte gelandet, seit OpenJDK 6 sich auf dem Vormarsch befindet, daher bemühten sich die Linux Foundation und Sun Microsystems, einen geeigneten Weg zu finden, Java in die nächste Ausgabe des LSB-Standards zu integrieren. Das hat auch funktioniert: Bei der Abstimmung, welche Technologien in LSB 4.0 aufgenommen werden, hat Java die Hürde genommen und wird erst als trial-use-Komponente in die LSB Einzug halten. Damit ist ein weiterer Schritt genommen, auf dem Weg, Java fest in Linux zu verankern.

Sechs, sieben, …

Wie in der ersten OpenJDK-Kolumne in der Ausgabe 12.08 beschrieben, wurde OpenJDK eigentlich als Projekt begonnen, um die Referenzimplementierung von Java 7 als Open-Source-Software zu entwickeln. Später gesellte sich das OpenJDK-6-Projekt dazu, um eine kompatible Java-SE-6-Open-Source-Implementierung auf die Beine zu stellen, vor allem für die Linux-Welt. Doch was sich relativ einfach anhört, sieht in der Praxis etwas komplizierter aus, wie Joe Darcy in seinem Blog zur OpenJDK-Abstammungslehre zeigt. Die grafische Darstellung, wie aus JDK 6 über den Umweg über (Open)JDK 7 schließlich OpenJDK 6 entstand, wollte er den Lesern des Java Magazins nicht vorenthalten, daher kann man sie in Abbildung 1 bewundern – die Arbeit an OpenJDK 7 und OpenJDK 6 schreitet parallel voran.

Abb. 1: OpenJDK-Abstammungslehre

Das JDK-7-Projekt innerhalb von OpenJDK publiziert dabei im zweiwöchigen Takt Quelltextarchive der integrierten Bugfixes und Features, die auf den Seiten des Projekts heruntergeladen werden können . Da das verteilte Versionskontrollsystem Mercurial eingesetzt wird, findet die eigentliche Entwicklung in dem Mercurial Repository von JDK 7 und den Unterprojekten statt. In die bisherigen Builds von OpenJDK 7 flossen vor allem Bugfixes ein, aber langsam machen sich auch neue Features auf den Weg. In den letzten Wochen waren das u.a. der neue Garbage First Garbage Collector.

Die wissenschaftliche Forschungsarbeit von Sun Research am Garbage First GC (auch G1 genannt) wurde auf dem International Symposium on Memory Management 2004 vorgestellt. Seitdem wurde ausgiebig an der Implementierung gearbeitet, die in einem Vortrag auf der Java One 2008 der breiteren Öffentlichkeit vorgestellt wurde. Im Gegensatz zu bisherigen Implementierungen arbeitet G1 nicht auf festen, physikalisch getrennten Speicherbereichen für junge und alte Objekte. Stattdessen wird der verfügbare Speicher in viele, gleich große Regionen aufgeteilt, die je nach Bedarf für junge oder alte Objekte verwendet werden. Das erlaubt es G1, durch neuartige Algorithmen die Fragmentierung des Speichers für alte Objekte zu minimieren und flexibler beim Aufräumen zu sein. Dadurch legt G1 ein besser voraussehbares Verhalten unter Last an den Tag.

Wer sich G1 im Quelltext anschauen möchte, findet ihn auf den Seiten von OpenJDK. Für alle anderen, die G1 einfach ausprobieren wollen, gibt es auch zu den OpenJDK JDK 7 Builds entsprechende Binaries zum Herunterladen für die von Sun unterstützten Plattformen. Viel Spaß beim Probelauf!

Dalibor Topic arbeitet als Java F/OSS Ambassador bei Sun Microsystems in Hamburg mit der OpenJDK Community daran, Java in GNU/Linux-Distributionen fest zu verankern und Portierungen auf neue Platformen in das OpenJDK-Projekt einzubinden. Kontakt: Dalibor.Topic@Sun.COM
Geschrieben von
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.