Es wird Zeit, Packages zu schleppen

Java 16: Der Umzug auf Git und GitHub wird real

Dominik Mohilo

© Shutterstock / Christina Hemsley’s Shots

Der Umzug von Mercurial auf Git und GitHub steht unmittelbar bevor: Bereits mit Java 16 sollen die restlichen Projekte – darunter das JDK selbst – endlich umziehen. Nachdem Mercurial bereits seit einiger Zeit öfter in der Kritik steht und Project Skara eindeutige Ergebnisse vorgelegt hat, wurden die beiden entsprechenden JEPs nun für Java 16 vorgemerkt. Wir haben uns den aktuellen Status Quo einmal angesehen.

Aktuell gibt es weder einen Zeitplan für Java 16, noch gibt es auch nur eine offizielle Projektseite. Wer allerdings auch nur ein wenig Interesse an den Entwicklungen im Java-Universum hat, der weiß bereits, dass JDK 16 im März 2021 erscheinen soll. Und auch wenn derzeit eher Java 15 noch im Fokus liegt, scheint es bereits jetzt schon abzusehen zu sein, dass mit der letzten Version vor dem nächsten Long Term Support Release (Java 17 / September 2021) ein wichtiger und konsequenter Schritt gegangen werden soll. Die Rede ist hierbei vom Umzug auf Git als Versionskontrollsystem (VCS) und GitHub als Hosting-Plattform.

Java 16 auf Git und GitHub

Die Gründe für den Umzug auf Git sind nicht trivial: Mercurial ist zwar noch vielerorts im Einsatz, dennoch wirkt das VCS ein wenig veraltet, insbesondere wenn man mit Git bereits gearbeitet hat: Beim Verschieben einer Datei erstellt Mercurial eine komplette Kopie der ursprünglichen Datei und speichert diese. Verschiebt man nun viele Dateien, wie bei der Entwicklung eines JDKs (gerade für JDK 9 wurden wegen des neuen Modulsystems viele Dateien verschoben), kommt es dabei zu extrem großen Speichermengen. JDK 8 hatte eine Größe von 412 Megabyte, JDK 9 war schon auf 800 Megabyte angewachsen und JDK 10 hat über 1,5 GB. Auch die Art und Weise, Code Reviews durchzuführen, aktuell noch via Mailing-Listen, ist nicht wirklich modern. Git bietet hier adäquatere Alternativen.

So kam es schließlich, dass in Project Skara nicht wirklich die Frage besprochen wurde, ob es denn eine Alternative zu Mercurial geben könne, sondern eher welches Versionskontrollsystem Mercurial letztlich ablösen würde. Die Wahl fiel nach den ersten Testreihen sehr schnell auf Git. JEP 357 war das Ergebnis dieser Evaluation.

Java Whitepaper

Gratis-Dossier: Java 2020 – State of the Art

GraalVM, Spring Boot 2.2, Kubernetes, Domain-driven Design & Machine Learning sind einige der Themen, die Sie in unserem brandneuen Dossier 2020 wiederfinden werden!

Ziel des JEPs ist zunächst einmal der Umzug sämtlicher Source-Code-Repositorys des OpenJDKs von Mercurial auf Git. Dabei soll die gesamte Historie aller Java-Versionen (inklusive Tags) erhalten bleiben, eine große Umzugaktion, wie man sie bereits vom Umzug von Jakarta EE kennt, steht damit bevor. Erleichtert wird dies allerdings durch die Vorarbeit, die in Sachen Tools bereits durchgeführt wurde: Wie bereits bekannt, sind etliche CLI- und Import/Export-Tools vorhanden und stehen quelloffen zur Verfügung. Für die Tools jcheck, webrev und defpath gibt es ebenfalls bereits rückwärtskompatible Prototypen und das neue Tool git-translate existiert ebenfalls als Prototyp.

Mit JEP 369 wurde offiziell GitHub als designierte Hosting-Plattform in Aussicht gestellt. Obwohl das Tooling von Project Skara durchaus serverseitig mit GitLab kompatibel ist und von Client-Seite mit Git und Mercurial, wurde GitHub im JEP als die Plattform der Wahl bestimmt. Zu den Gründen schreiben Erik Duveblad und Joe Darcy:

The motivation for choosing GitHub is that is excels at all three primary reasons for choosing an external provider. GitHub’s performance is as good as or superior to other providers, it is the world’s largest source-code hosting service (50 million users as of May 2020), and it has one of the most extensive APIs.

GitHub ermöglicht es Entwicklern, direkt aus den Editoren Emacs, VS Code und Atom heraus Pull Requests zu erstellen und zu prüfen sowie sie zu kommentieren. In Sachen IDEs sind besonders IntelliJ, Eclipse und Visual Studio Tools mit exzellenter Unterstützung für GitHub. Neben diesen Toolings gibt es noch eine Reihe weiterer Convenience-Tools, die die Arbeit mit Git und GitHub erleichtern, etwa GitHub Desktop, die quelloffen verfügbar sind.

Wie sieht es aktuell aus?

In einem Status-Update haben Robin Westberg und Erik Duveblad von der Java Platform Group einen Einblick in die Arbeit gegeben, die im Zuge des Project Skara bereits durchgeführt wurde. So wurden über 70.000 Commits bereits konvertiert, über 5.000 E-Mails versendet, mehr als 2100 sogenannte webrevs erstellt. Jeweils mehr als 1.000 Pull Requests wurden erstellt bzw. Commits integriert. Das Projekt Skara hat ebenfalls bereits einige Erfolge im Sinne von Veröffentlichungen vorzuweisen: Das OpenJFX-Projekt wurde bereits auf GitHub gehostet und auf Git veröffentlicht, zwei EA Builds von Project Loom sind ebenfalls bereits erschienen.

Das Projekt Skara selbst wird von 15 Entwicklern vorangetrieben und besteht zu 98,8 Prozent aus Java-Code. Ein weiterer interessanter Einblick ist, dass der größte Pull Request aus 3976 Commits bestand. Die webrevs des PRs hatten einen Umfang von 2,1 Gigabyte – recht beeindruckende Zahlen. Die folgende Liste gibt an, welche Projekte bereits umgezogen sind:

  • OpenJFX
  • OpenJMC
  • Mobile
  • Loom
  • Panama
  • Metropolis
  • Valhalla
  • Amber
  • Tsan
  • ZGC
  • Lanai
  • Skara
  • Code Tools (JTHarness, Jcov, Asmtools)

Ausblick: JDK 16 auf Git/GitHub?

Da die beiden JEPs nun offiziell den Status „Proposed to Target: JDK 16“ erlangt haben, ist auch in etwa abzusehen, für wann man bei Oracle und dem JDK-Team plant, den Umzug zu bewerkstelligen. Grund für die „Eile“ dürfte hier die auf Java 16 folgende LTS-Version, JDK 17, sein. Es ist nachvollziehbar, dass man den Umzug ungerne mit einem Long Term Support Release durchführen möchte. Die aktuellen Projekte, die mindestens noch ausstehen sind das JDK selbst, die JDK Updates und die Code Tools.

Weitere Informationen zu Projekt Skara und dem Umzug auf Git / GitHub gibt es im offiziellen Projekt-Wiki sowie in den Beschreibungen zu JEP 357 und JEP 369. Den Source Code für Projekt Skara gibt es auf GitHub und auf der skara-dev-Mailing-Liste kann über das Projekt diskutiert werden. Die aktuellen Informationen (Stand 7. Mai 2020) aus dem Projekt Skara können den Slides des Update-Meetings des Skara-Teams entnommen werden.

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Hinterlasse einen Kommentar

avatar
4000
  Subscribe  
Benachrichtige mich zu: