Java Magazin   10.2017 - Java 9

Erhältlich ab:  September 2017

Autoren / Autorinnen: 
Ralf Bruchmüller ,  
Tom Hombergs ,  
,  
Klaus KreftAngelika Langer ,  
Oliver Heger ,  
Lars Vogel ,  
Klaus KreftAngelika Langer ,  
Mahmoud Reza Rahbar Azad ,  
Klaus KreftAngelika Langer ,  
Klaus KreftAngelika Langer ,  
Adam Bien ,  
Gernot StarkeRalf D. Müller ,  
Konstantin Diener ,  
Lars Röwekamp ,  
Sebastian Meyen ,  
Klaus KreftAngelika Langer ,  
Klaus KreftAngelika Langer ,  
Michael StadlerMaik Bachmann ,  
Matthias Möser

Das Versionsverwaltungssystem Git ist weiterhin auf dem Vormarsch. Natürlich gibt es noch Kunden, die Apache Subversion (SVN) oder Perforce einsetzen. Wenn man sie aber darauf anspricht, hat man das Gefühl, dass manche sich zumindest ein bisschen dafür schämen. Außerdem erfährt man im Kundengespräch, dass viele die Migration auf Git bereits planen. Da die Verwendung der Git Command Line nun aber nicht jedermanns Sache ist, geht es in dieser Ausgabe um eine gute Alternative: das Eclipse Git Tooling.

Das Git Tooling von Eclipse wird im EGit- und im JGit-Projekt entwickelt. Diese sind nach Meinung des Autors Vorzeigeprojekte, was den Geist eines Open-Source-Projekts angeht: Beiträge aus der Community werden sehr schnell einem Review unterzogen und integriert. Das Team geht zudem schnell, freundlich und kompetent auf Verbesserungsvorschläge ein, sodass man mit Fug und Recht behaupten kann, dass die Mitarbeit hier Spaß macht. Die beiden Entwickler, die das Projekt zurzeit primär vorantreiben, sind übrigens Thomas Wolf und Matthias Sohn [1].

Das aktuelle Eclipse Git Tooling

Das Eclipse Git Tooling besticht durch zwei zentrale Ansichten: Die Git Repositories View (Abb. 1) und die Git Staging View. Die Git Repository View wird verwendet, um Git Repositories dem Eclipse Tooling bekannt zu machen, Repos anzulegen und sie zu klonen. Hier kann man seine Branches und Remotes auch verwalten sowie konfigurieren und die eigenen Repositories mit Remotes synchronisieren (Stichwörter: fetch, push, pull). Die Git Staging View wird verwendet, um veränderte Dateien zu stagen und zu committen. Die Push-Operationen kann man außerdem direkt hier ausführen.

vogel_eclipse_1.tif_fmt1.jpgAbb. 1: In der Git Repositorys View kann man seine Repositories verwalten

Schön ist auch die Integration der Git-Commit-Vergangenheit über die History View. Hier kann man die verschiedenen Branches sehen und sich die einzelnen Commits anzeigen lassen oder nach diesen suchen. Über das Kontextmenü ist das sogenannte Cherry Picking möglich, zudem lassen sich darüber Commits reverten, die interaktiven Rebases triggern und vieles mehr.

Die ganze Funktionalität ist schön und liebevoll umgesetzt, sodass das Arbeiten mit Git in Eclipse richtig Spaß macht. Der Autor nutzt Eclipse oft auch als Git-Client für Projekte, die er nicht mit Eclipse entwickelt, z. B. Android-Projekte mit Android Studio. Für all jene, die mehr über die Verwendung des Toolings wissen wollen, empfehle ich mein EGit-Tutorial [2].

Neue Verbesserungen der Usability

Wie besprochen ist die Git Staging View die zentrale Komponente für das tägliche Arbeiten mit Git in ­Eclipse: Stagen und Unstagen geht ganz einfach per Drag and Drop oder über das Kontextmenü. Häufig wollen Benutzer aber einfach alles stagen oder unstagen, wofür das EGit-Team jetzt Buttons hinzugefügt hat. Mittlerweile lässt sich die aktuelle UI-Selektion mithilfe von Buttons stagen oder unstagen.

Aus Visual Studio Code übernahm man das Prinzip, auch per Tooltipp arbeiten zu können. Die Idee dahinter ist, dass man den Mausfokus nicht stark verschieben muss. In Abbildung 2 sind diese neuen Funktionalitäten abgebildet.

vogel_eclipse_2.tif_fmt1.jpgAbb. 2: Die neuen Funktionalitäten der Git Staging View

Ein echter Usabilityhammer ist ein Feature aus der Hand von Thomas Wolf: Im Eclipse Git Tooling gibt es die Möglichkeit, das Git Repository direkt aus der Staging View wechseln zu können. Gerade wer viel mit verschiedenen Git Repositories arbeitet, wird dieses Feature sehr zu schätzen wissen. Hier entfällt das nervige Wechseln zur Git Repository View, nur um die richtige Selektion im Staging View zu haben.

Ein allgemein geschätztes Feature in der Eclipse 4.7 IDE ist, dass die Buttons in den Dialogen selbsterklärende Beschriftungen haben. Der Benutzer weiß dann schon über den Buttontext, was er da macht und muss nicht erst den ganzen Dialogtext lesen. Das EGit-Team hat hierzu Patches akzeptiert und damit die Verwendung des Git Toolings intuitiver gemacht. Konnte der Benutzer früher lediglich zwischen OK und Cancel wählen, ist die Auswahl jetzt einfacher und schneller (Abb. 3).

vogel_eclipse_3.tif_fmt1.jpgAbb. 3: Intuitivere Buttontexte erleichtern auch im Git Tooling die Bedienung

Gerrit-Integration

Angenehmer ist auch die Gerrit-Integration von Eclipse. Für alle, die die letzten Jahre auf dem Codereviewmond verbracht haben: Gerrit ist ein populäres Codereviewsystem. Google entwickelte es ursprünglich für das Open-Source-Projekt Android. In der neuesten EGit-Version hat Thomas Wolf das Herunterladen des letzten Codereviews in die IDE so umgestellt, dass diese Operation im Hintergrund passieren kann und der Benutzer nicht mehr blockiert wird. Wer schon einmal einen Gerrit Change im WLAN der deutschen Bahn heruntergeladen hat, wird dieses nicht blockierende Feature lieben.

Besser geht immer

Die Arbeit mit Git in Eclipse ist dank des EGit-Projekts jetzt schon klasse, aber natürlich geht es immer noch ein wenig besser. Schaut man sich etwa die Git Views an, stellt man fest, dass sie nicht besonders kompakt sind. Insbesondere die Zeile, in der das Repository steht, nimmt doch viel unnötigen Platz ein. Dies wurde bereits an die Entwickler herangetragen und es ist zu hoffen, dass hier eine platzsparende Lösung gefunden wird.

Ein Killerfeature wäre auch die Möglichkeit, beim Git Amend Dateien aus dem Commit herauszunehmen [3]. Hierzu existiert bereits eine fast fertige Lösung von Matthias Sohn. Leider ist die Aktivität in Bezug darauf ein wenig eingeschlafen, aber das Feature würde es viel angenehmer machen, einen lokalen Commit mit einer falschen Datei anzupassen. Aktuell muss man hierzu den Soft oder Mixed Reset verwenden.

Fazit: Eclipse ist „gitgantisch“

Git mit Eclipse funktioniert sehr gut und integriert sich toll in den Entwicklungsfluss. Das Team treibt das Tool­ing aktiv weiter, erfreulicherweise auch im Hinblick auf die Usability. Wer beim Lesen Appetit bekommen hat und heute schon die neuesten Features nutzen will, kann sich das Git Tooling für Eclipse einfach von der Updateseite [4] aus installieren. Das Risiko der Verwendung dieser Nightly Builds ist gering, denn das EGit-Team hat eine große Testsuite und legt besonderen Wert auf Qualitätskontrolle vor der Integration von Patches. Positiv ist auch, dass das Team offen für Vorschläge und Patches ist.

Zusammenfassend kann man sagen, dass der Endanwender mit EGit eine abgerundete und performante Lösung für die Nutzung von Git in Eclipse bekommt. Wer als Eclipse-Benutzer noch die Command Line verwendet, ist selbst schuld.

vogel_lars_sw.tif_fmt1.jpgLars Vogel ist Geschäftsführer der vogella GmbH, die Kunden im Bereich Eclipse, Android und anderen Themen unterstützt. Als Project-Management-Committee-Mitglied, Eclipse-Projektleiter und Committer hilft er dem Eclipse-Projekt.

Mail

„Das größte Problem, das wir in der Vergangenheit bei der Einführung neuer Java-Versionen gesehen haben, trat dann auf, wenn ein Teil des Codes das Public-API eines anderen Codeteils ignorierte und stattdessen etwas aufgerufen hat, das als internes Detail der Implementierung gedacht war. Das bedeutet, dass eine Änderung an der internen Implementierung dazu führte, dass der aufrufende Code nicht mehr funktionierte.“ Dies sagte uns Georges Saab, Chairperson im OpenJDK Governing Board und somit verantwortlich für die Java-Release-Politik bei Oracle, neulich in einem JAXenter-Interview (http://tinyurl.com/y73mnrq3).

Jigsaw, also die lang erwartete Modularisierung des Java-Systems, zielt genau auf die Lösung dieses Problems. Durch Jigsaw wird die Kapselung interner Implementierungsdetails möglich gemacht, sodass andere Module strikt auf den Aufruf des öffentlichen API beschränkt werden. Private APIs werden dann zum No-Go. Sobald das funktioniert, soll eine schnellere Weiterentwicklung des gesamten Java-Ökosystems möglich werden. So lauten zumindest die Erwartungen.

Jigsaw, das ursprünglich ja schon für Java 8 im Jahr 2014 vorgesehen war, wurde über die Jahre immer wieder verschoben. Dass dies nicht für lautstarken Protest in der Community gesorgt hat, sondern neben gelegentlichem Grummeln größtenteils mit Gelassenheit zur Kenntnis genommen wurde, spricht für den Reifegrad der Java-Szene. Eine über Jahre gewachsene Plattform, deren Codestruktur an einen Teller dampfender Spaghetti erinnert, in eine moderne Struktur zu überführen, in der komplexe interne Abhängigkeitsstrukturen transparent sind, ist beileibe kein triviales Unterfangen.

Der Zugriff auf einige private APIs wird in Java 9 noch toleriert werden, allerdings sind diese dann bereits als deprecated markiert und sollen dann in der nächsten Java-Version vollends verschwinden. sun.misc.Unsafe, so lautet der Name des Schuldigen, wird voraussichtlich mit Java 10 durch eine funktionsfähige Alternative ersetzt – so der Plan. Zeit also für alle Entwickler, sicherzustellen, dass ihre Applikationen, Frameworks und Libraries so schnell wie möglich nur noch auf die öffentlichen APIs zugreifen.

Viel mehr dazu erfahren Sie in unserem Schwerpunkt, den Angelika Langer und Klaus Kreft geschrieben haben. Aber noch einen weiteren Höhepunkt haben wir zur Feier des Tages für Sie: ein Riesenposter mit allen wichtigen Informationen zu Javas Modularisierung. Eine schöne Dekoration und Spickzettel zugleich für Ihr Büro! Und zuletzt möchte ich darauf hinweisen, dass wir auf den Tag genau zum Release von Java 9 eine Java-9-Launchparty veranstalten, zu der wir Sie herzlich einladen möchten. Sie wird in München stattfinden. Nähere Informationen finden Sie unter http://tinyurl.com/y7tojka2. Wir freuen uns auf Ihr Kommen!

meyen_sebastian_sw.tif_fmt1.jpgSebastian Meyen | Chefredakteur

Mail Website Twitter Xing Google