Interview mit Christian Meder

„Mit dem Umstieg auf OpenJDK findet auch Java 8 Einzug in Android“

Kypriani Sinaris

Christian Meder

Die Harmony-Implementierung der in Android verwendeten Java-Bibliotheken wird in künftigen Android-Versionen durch OpenJDK ersetzt. Diese Nachricht überraschte viele Entwickler zum Jahreswechsel und warf gleichzeitig einige Fragen auf. Wir haben Android-Entwickler Christian Meder im Interview gefragt, welche Auswirkungen diese Entscheidung konkret für Entwickler hat.

JAXenter: Google hat angekündigt, mit Android N auf das OpenJDK zu setzen: Kannst du kurz ausführen, was genau sich da ändert?

Christian Meder: Vielen Entwicklern dürfte bekannt sein, daß Apps für die Android-Plattform in der Regel in Java geschrieben werden. Weit weniger bekannt ist, wie die Android-Plattform die Laufzeitumgebung für diese Java-basierten Apps gestaltet hat: Die Laufzeitumgebung besteht zum einen aus der Android Runtime (ART) bzw. bei älteren Releases der Dalvik VM und zum anderen aus der Implementierung einer Untermenge der Standard Java APIs. Die bei Android verwendete Implementierung basiert auf dem Apache-Harmony-Projekt, welches sich zum Ziel gemacht hatte, eine unabhängige Implementierung (clean room implementation) der Standard-Java-APIs unter der Apache-Lizenz zu erstellen. Das Apache-Harmony-Projekt hat allerdings 2011 bereits die Weiterentwicklung eingestellt. Diese Implementierung der bei Android genutzten Standard-Java-APIs wird nun im Rahmen von Android N durch die GPL-lizensierte Implementierung aus dem OpenJDK-Projekt ersetzt.

JAXenter: Wie muss man sich das vorstellen – wie viel Code muss da von Google jetzt umgeschrieben werden? Es gibt ja schon Befürchtungen, dass Android N vor allem ein Release sein wird, in dem es weniger um neue Features, sondern um das Refactoring der Plattform gehen wird.

Christian Meder: Mit dem Austausch der Android-Java-Standardbibliothek durch eine OpenJDK-basierte Implementierung muss vermutlich nur sehr wenig Code insgesamt in der Android-Plattform angepasst werden, denn das ist ja genau der Knackpunkt: Es wird nur eine Implementierung der Java API durch eine andere Implementierung ersetzt. Die Programmierschnittstelle (API) der Bibliothek bleibt gleich. Der Umbau auf OpenJDK sollte daher die Einführung neuer Features nicht behindern und es deuten sich ja zumindest Themen wie Multi-Window Support für Android N bereits an.

JAXenter: Welche technologischen Auswirkungen hat die Umstellung auf das OpenJDK für App-Entwickler?

Christian Meder: Nur gute Auswirkungen, insofern, dass bestehender Java Code einfach weiterhin genauso funktionieren sollte wie mit Marshmallow und jetzt die zusätzliche Möglichkeit besteht, auch (endlich) Java-8-Sprachfeatures wie Lambdas in Android-Apps zu nutzen. Denn während die derzeitige Java-Implementierung auf Java 7 basiert wird mit dem Umstieg auf OpenJDK auch Java 8 Einzug in die Android-Plattform finden.

JAXenter: Ein Unterschied zwischen Apache Harmony und OpenJDK ist ja die Lizenz: Apache versus LGPL. Was bedeutet dieser Lizenzwechsel für Android?

Christian Meder: Bisher war es den Herstellern von Android-basierten Geräten möglich, Änderungen an der Implementierung der Android-Java-Standardbibliothek vorzunehmen, ohne diese Änderungen dann im Source Code veröffentlichen zu müssen. Proprietäre Änderungen waren also lizenzrechtlich erlaubt. Das ist nun nicht mehr der Fall. Allerdings ist der Umgang mit GPL Code in Form des Linux Kernels den Herstellern ja durchaus vertraut und die Anzahl sinnvoller proprietärer Erweiterungen der Android-Java-Standardbibliothek dürfte doch sehr überschaubar sein, sodass der Lizenzwechsel keine Hersteller ernsthaft behindern sollte. Bisher ist mir zumindest auch noch kein Proteststurm aus den Riegen der Hersteller aufgefallen.

JAXenter: Wie schätzt du den Wechsel ein – ist er eine Folge des Urheberrechtsstreits zwischen Google und Oracle? Oder stehen vor allem technische Gründe dahinter?

Christian Meder: Beides. Natürlich ist es für den Rechtsstreit mit Oracle ungeheuer hilfreich, wenn Android in Zukunft in voller Übereinstimmung mit der GPL plus Classpath Exception eine Java- Standardbibliothek auf Basis der OpenJDK-Implementation mit dem Copyright von Oracle enthält. Zuletzt war die Argumentation von Oracle ja, dass Oracle das Copyright an der Standard-Java-API hält und damit jede Implementation der Standard-Java-API automatisch auch die Rechte von Oracle an Java betrifft. Diese Argumentation wird schwierig, wenn nun sowohl die API als auch die Implementierung aus dem OpenJDK-Projekt von Oracle entsprechend den lizenzrechtlichen Rahmenbedingungen der GPL plus Classpath Exception korrekt verwendet wird. Allerdings darf man aber auch jenseits des Rechtsstreits nicht vergessen, daß die Weiterentwicklung der Apache-Harmony- basierten Android-Java-Bibliothek seit dem Projektstopp bei Apache komplett bei Google lag und damit jede Änderung in OpenJDK von Google in der Android-Implementierung nachgezogen werden musste. Hierdurch hinkt Android mit seiner derzeitigen Unterstützung von Java 7 der OpenJDK-Version von Java 8 hinterher. Durch die Fokussierung auf OpenJDK können die Kräfte gebündelt werden, Java-8-Sprach-Features werden verfügbar und neue Sprach-Features von Java können damit auch in Zukunft zeitnah für Android bereitgestellt werden. Aus technischer Sicht ist der Umstieg damit auf jeden Fall auch ein sinnvoller Schritt.

meder_christian_sw-150x126Christian Meder ist CTO bei der inovex GmbH in Pforzheim. Dort beschäftigt er sich vor allem mit leichtgewichtigen Java- und Open-Source-Technologien sowie skalierbaren Linux-basierten Architekturen. Seit mehr als einer Dekade ist er in der Open-Source-Community aktiv.

 

 

Geschrieben von
Kypriani Sinaris
Kypriani Sinaris
Kypriani Sinaris studierte Kognitive Linguistik an der Goethe Universität Frankfurt am Main. Seit 2015 ist sie Redakteurin bei JAXenter und dem Java Magazin.
Kommentare

Hinterlasse einen Kommentar

2 Kommentare auf "„Mit dem Umstieg auf OpenJDK findet auch Java 8 Einzug in Android“"

avatar
400
  Subscribe  
Benachrichtige mich zu:
Christian
Gast

Bedeutet das auch, dass man in Android nun endlich JAXB (javax.xml.bind.*), so wie die neue Java 8 Date Time API und weiteres wie java.util.Optional und CompletableFuture verwenden kann?
Was ist mit javax.naming und javax.security.sasl (welches unter org.apache.harmony.javax.security.sasl zu finden war)?
Anders gesagt, laufen Java Bibliotheken, die o.g. packages nutzen, und derzeit mit Java SE laufen, künftig auch auf Android?
Alle reden nur von lambdas, aber niemand über die neue, bzw. angepasste API.

Und was passiert eigentlich mit den Swing/AWT packages unter Android?

trackback

[…] Entscheidung für die Migration der Codebasis auf OpenJDK 8 gab Anlass zu vielen Spekulationen und ließ einige Sorgen aufkommen: Wird es Probleme mit der Kompatibilität von Anwendungen geben; wie viel Zeit wird Google bleiben, […]