OpenJDK Innovators Challenge und mehr

Viva Java Libre – Neues von OpenJDK

Dalibor Topić

Wieder ist Zeit ins Land gezogen, und bei OpenJDK hat sich einiges getan. Die Sieger der OpenJDK Innovators‘ Challenge stehen fest, und die DaVinci-VM-Jünger haben sich zu einem Gipfeltreffen in Santa Clara eingefunden. Auch beim Dauerthema Mac OS X und Java kommt dank der BSD-Portierung mehr Bewegung rein.

Innovationen für die Zukunft

Als im Januar Sun Microsystems bekannt gab, dass OpenJDK bei den Open Source Community Awards mitmacht, und zum ersten Mal einen mit 175.000 US-Dollar dotierten Projektwettbewerb ausrichten wird, wurden erst einmal Projektvorschläge gesammelt und dann von Juroren sieben Projekte im März für die „Innovators“ Challenge“ ausgewählt. Die Projekte hatten bis August Zeit, ihre Vorschläge umzusetzen. Nach ein paar Monaten offener Entwicklung war die Mehrheit der Projekte erfolgreich am Ziel angelangt, sodass im September die Juroren erneut zusammentrafen, um die Gewinner zu ermitteln. Die Entscheidung fiel ihnen sicher nicht leicht. Am Ende setzte sich der Österreicher Clemens Eiserer mit seinem Projekt, Unterstützung für XRender in der Java 2D Pipeline zu implementieren, durch und bekam den mit 75.000 Dollar dotierten ersten Preis. Mit der XRender Pipeline wäre endlich eine sinnvolle, hardwarebeschleunigte Unterstützung von Java 2D durch 3D-Grafikkarten unter GNU/Linux, OpenSolaris und anderen auf X11 aufbauenden Plattformen möglich, ohne sich ausschließlich auf die, je nach Hersteller mehr oder weniger erfolgreich implementierte, OpenGL-Unterstützung proprietärer Grafikkartentreiber verlassen zu müssen. Es kommen also schönere und flottere Zeiten auf Java-Benutzer unter Linux zu, wenn der Code von Clemens in hoffentlich nicht allzu ferner Zukunft in Java 2D integriert werden sollte.

OpenJDK-Kolumne

Teil 1: Ohne großen Rummel

Teil 2: OpenJDK-Innovationen und mehr

Der zweite Platz und 50.000 Dollar gingen an den Compilerguru Neal Gafter. Neal hatte sein Projekt, den Kompromissvorschlag, für Unterstützung von Closures in Java zu implementieren, ebenfalls erfolgreich zu Ende gebracht. Wer mit dem Prototyp spielen möchte, und keine Lust hat, ihn selbst aus den Quellen des Closures-Projekts in OpenJDK zu bauen, findet eine Binärversion auf Neals Webseite. Ob Java 7 nun tatsächlich Closures bekommt oder nicht, ist damit noch nicht entschieden, aber es lässt sich mit einem Protypen viel sinnvoller darüber streiten. Neal ist mittlerweile von Google zu Microsoft gewechselt, daher wird er als treibende Kraft hinter Closures in Java in der nahen Zukunft kaum so stark in Erscheinung treten können wie bisher. Zeit also für die nächste Generation von Compilergurus, sich einen Namen zu machen.

Den dritten Platz und damit jeweils 25.000 Dollar teilten sich zwei Projekte: Portable GUI Backends und die Implementierung des JSR 310. Beim ersten, auch als Caciocavallo benannten Projekt, arbeiteten die Karlsruher Entwickler Roman Kennke und Mario Torre daran, die Portabilität der AWT- und Java2D-Implementierung in OpenJDK zu verbessern. Ihr Ziel ist es, die bestehenden internen Schnittstellen so anzupassen, dass Java leichter auf neue GUI-Bibliotheken aufsetzen und z.B. mit weniger Aufwand auf neue Betriebssysteme portiert werden kann. Die Mühe hat sich gelohnt, und die ersten Patches aus dem Projekt haben ihren Weg in den Java-7-Codezweig von OpenJDK gefunden.

Das zweite preisgekrönte Projekt hat sich dran gemacht, eine der Schwachstellen der Java-Klassenbibliotheken zu beseitigen: die für Normalsterbliche eher unverständlichen Datums- und Zeitklassen in dem java.util API. Die beiden Spec-leads Stephen Colebourne und Michael Nascimento Santos haben die Referenzimplementierung für das dazugehörige JSR 310 geschrieben, und die entsprechende Testsuite mit über 94% Testabdeckung geliefert. Damit steht einem Early Draft Release eigentlich nichts mehr im Weg, und vielleicht wird es ja noch was mit javax.time und Java 7 – zu wünschen wäre es. Die Gewinner wurden zu ihren Projekten und Erlebnissen in einer Podcast-Serie interviewt, empfehlenswert für Closure-Fans ist dabei das Interview mit Neal.

Gemeinsam und dynamisch Gipfel stürmen

Die Arbeit an der experimentellen Da Vinci VM (Fritz, Topic: Buongiorno Signore Da Vinci, Java Magazin 11.08) schreitet schnell voran. Im September fand ein Gipfeltreffen der JVM-Entwickler statt, um voneinander zu lernen, welche Anforderungen dynamische Sprachen an zukünftige JVM-Implementierungen stellen, und wie sie sich in der Praxis darstellen. Mark Reinhold, Chief Engineer für Java SE, sprach sich bei dem Treffen ausdrücklich dafür aus, invokedynamic aus der Da Vinci VM in Java 7 zu integrieren. Freuen wird das vor allem die JRuby- und Jython-Fraktion, die, wenn Java 7 veröffentlicht wird, eine Menge Code sparen könnte. Aber auch an einem Backport von invodekynamic für aktuelle Java-Versionen wird bereits in der Community gearbeitet, wie beim Treffen zu erfahren war. Den Berichten der Teilnehmer zufolge war es ein sehr produktives Arbeitstreffen – man kann also gespannt sein, wie sich die ‚Szene‘ in den nächsten Monaten weiterentwickeln wird.

Ein bisschen Frieden

Mac-Benutzer werden sich anhand all dieser Entwicklung wohl wieder mit Stirnrunzeln fragen, wann sie endlich mit OpenJDK spielen können. Die Antwort ist, dank der BSD-Portierung in OpenJDK, einfach: jetzt schon. Die BSD-Portierung geht zurück auf das Diablo-Projekt der FreeBSD Foundation, bei dem sich auch Patches für andere BSD-Betriebssysteme einfanden, unter anderem für OpenBSD. Greg Lewis, der das Diablo-Projekt leitet, und Kurt Miller, der für die OpenBSD-Portierung zuständig ist, wandten sich 2007 an Sun, nachdem OpenJDK durch die Porters Group einen Platz für Portierungsprojekte hatte, und baten um die Aufnahme in OpenJDK. Leider gab es dabei ein kleines Lizenzproblem: OpenJDK steht unter der GPLv2, während die Arbeit an Diablo unter der SCSL und der JRL stattgefunden hatte. Beide Lizenzen sind nicht Open Source, und damit ist auch unter diesen Lizenzen veröffentlichter Code ohne eine Einwilligung des Autors nicht in GPLv2-Werken einsetzbar. Das Problem wurde gelöst, indem die bisherigen Autoren sich einigten, sich mit Sun Microsystems die Rechte an der Portierung zu teilen, sodass schließlich der Diablo-Code unter der GPL freigegeben werden konnte.

In der Zwischenzeit bekam Diablo Zuwachs durch Landon Fullers SoyLatte-Projekt. SoyLatte war entstanden als Versuch, Diablo mit Mac OS X unter Intel-Prozessoren zu verheiraten, und dieser Versuch verlief äußerst erfolgreich – sowohl unter 64 als auch unter 32 Bit. Grund genug also, SoyLatte beim Sprung ins OpenJDK mit ins Boot zu nehmen, was Landon beherzt vorantrieb. Seit August gibt es nun die BSD-Portierung als auf JDK 7 aufsetzendes Projekt in OpenJDK. Landon stellt auf seiner Webseite fertige Binaries von OpenJDK zum Download bereit. Wer einmal selbst Hand anlegen möchte, braucht Mac OS X 10.5 und das aktuelle XCode-Paket von Apple.

Wer nun vom BSD Port dem Auge schmeichelnde Unterstützung für die Mac OS X GUI Bibliothek erwartet, wird wohl erst einmal enttäuscht sein, da Swing, AWT & Co. beim Mac genauso wie bei allen anderen BSD-Derivaten X11 benutzen. Für normale User ist das also erst einmal nichts – für Java- und Mac-Profis bietet sich jedoch die Möglichkeit, ohne den Umweg über Linux oder Windows mit OpenJDK 7 und den Projekten um OpenJDK herumzuexperimentieren.

Ganz hoch auf der Wunschliste vieler Mac-Nutzer steht sicherlich PowerPC-Unterstützung, die Dank des Zero-Projekts in OpenJDK in greifbare Nähe rückt. Spannend wird es auch sein zu sehen, welche anderen Querverbindungen sich innerhalb von OpenJDK ergeben werden, z.B. mit dem Caciocavallo-Projekt. Als Alt-Linuxer drücke ich dem BSD-Team die Daumen, dass es eine starke Community von Entwicklern um ihre Portierung herum versammeln und auch dieser Code den Weg in den offiziellen Java-7-Codezweig antreten kann, wenn die Portierung so weit ist. Bis dahin braucht es sicherlich noch ein paar Helfer – also nicht zögern, mitmachen!

Dalibor Topić 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 Plattformen in das OpenJDK-Projekt einzubinden. Kontakt: Dalibor.Topic[at]Sun.COM .

Geschrieben von
Dalibor Topić
Kommentare

Schreibe einen Kommentar

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