Es werde Licht!

Eclipse Photon: Java 10 Support im letzten Meilenstein

Dominik Mohilo

© Shutterstock.com / leungchopan

Mars, Neon, Oxygen – und nun Eclipse Photon. Die Vorbereitungen auf das diesjährige Simultaneous Release laufen auf Hochtouren und die Entwickler der Eclipse IDE arbeiten schon unter Hochdruck an der nächsten Version. Der siebte und letzte Meilenstein zu Eclipse Photon ist gerade erschienen, Highlight ist natürlich die Unterstützung für Java 10. Wir haben uns angesehen, was die Nutzer noch erwartet.

Was 2018 wohl noch für uns in petto hat, das kann keiner vorhersehen. Eine Sache ist aber mehr als wahrscheinlich: Das Simultaneous Release von Eclipse im Sommer des kommenden Jahres. Die Entwicklungsumgebung erreicht damit Version 4.8, Namenspate waren diesmal die Photonen. Vielleicht ist das ja ein besonderes Omen, immerhin bewegen sich die Partikel mit Lichtgeschwindigkeit. Hoffentlich kein negatives Omen ist die Tatsache, dass es sich bei Eclipse Photon um das 13. Simultaneous Release handeln wird. Doch bedenkt man die Pünktlichkeit und die Kontinuität, mit der die neuen Eclipse-Versionen jedes Jahr herausgegeben werden, schreckt die vermeintliche Unglückszahl „13“ nur wenig.

In unserer Interview-Reihe zu Eclipse Oxygen haben wir Leiter verschiedener Eclipse-Projekte auch gefragt, was für Eclipse 4.8 geplant ist:

Die ersten Meilensteine hatten die Unterstützung von JUnit 5 und Java 9, viele kleinere Neuerungen an den Java Development Tools und die neue Debugging-Ansicht an Bord. Für Meilenstein Nummer 5 wurde ein starker Fokus auf die JDT gelegt: Einige Ansichten wurden aktualisiert, außerdem gab es Content Assist für die Namensdeklaration von Modulen und Prototypen für Java Launch Configurations. Eclipse Photon M6 hatte dann neue APIs und eine verbesserte UX sowie Optik in petto.

Eclipse Photon (4.8) M7

Plattform

Wer Eclipse noch auf Windows XP nutzt, der muss nun stark sein. Eclipse bzw. das Standard Widget Tool (SWT) unterstützt das alte Betriebssystem von Microsoft nicht mehr – Windows Vista ist die Mindestvoraussetzung für die Nutzung. Dafür wurde die Unterstützung für Ant 1.10.3 eingebaut. Auch wichtig für Freunde einer stabilen und flotten Entwicklungsumgebung ist die Behebung eines Memory Leaks im setBackground/setForeground Color-Mechanismus. Dieses Leak kostete etwa 50 Megabyte pro Stunde und betraf Clients, bei denen SWT auf GTK3.14+ lief.

Wie üblich gab es im Plattform-bereich wie üblich Verbesserungen in der Optik und der Usability: die kleinen Buttons in der Seitenleiste, mit denen sich Teile des Codes erweitern bzw. verstecken lassen, wurden angepasst, sodass sie im Dark Theme besser zur Geltung kommen. Gleiches gilt für die Annotationsmarkierungen.

Verbesserte Optik für Markierungen in der Seitenleiste / Quelle: Eclipse Foundation

Per CSS lassen sich Canvas-Elemente nun standardmäßig im Dark Theme stylen, Links erscheinen bei Verwendung der dunklen Oberfläche für Eclipse hingegen überall in einem hellblauen Farbton – dies war zuvor nicht konsistent umgesetzt. Außerdem skalieren Baum-Ansichten sowie Tabellen die Checkboxen und die Buttons für das expandieren / kollabieren von Baum-Elementen auf hochauflösenden Displays unter Windows.

Kein optisches Element, sondern eine UX-Verbesserung, ist die neue Option, Fenster und Editoren direkt im Kontextmenü zu lösen (detach).

Konsistente Farbgebung der Links im Dark Theme / Quelle: Eclipse Foundation

Java Development Tools (JDT)

Die wichtigste Neuigkeit des siebten Meilensteins für Eclipse Photon ist natürlich die Unterstützung für Java 10. Allem voran steht dabei der Support für JEP 286, also die Typinferenz für lokale Variablen. Um diesen zu gewährleisten, wurde der Eclipse Compiler für Java (ECJ) um die entsprechenden Sprach-Features von Java 10 erweitert.

Über das Menü Window | Preferences | Java | Installed JREs | Add... kann ein Java 10 JRE zum Projekt hinzugefügt werden, das geht allerdings auch über den Package Explorer und das Kontextmenü des Projektes. In den Einstellungen zum Compiler eines Java-Projektes gibt es ab Eclipse Photon (4.8) M7 auch eine Option, diesen auf die Kompatibilität zu Java 10 zu setzen. Es existiert für bestehende Projekte ein Quick Fix, um das JRE und die Projekt-Konformität auf Java 10 zu stellen.

„var“

Eclipse unterstützt die Kompilierung von var und falls der entsprechende Typ nicht inferiert werden kann, wirft der Compiler eine Fehlermeldung aus. Die Codevervollständigung für das Keyword ist ebenfalls an Bord – und das nur an den Stellen, wo der Einsatz von var auch erlaubt ist. An allen Stellen, wo Letzteres nicht der Fall ist, wird keine entsprechende Codevervollständigung angeboten.

JDT unterstützt die Kompilierung von „var“ / Quelle: Eclipse Photon

Beim Hover mit der Maus über ein var zeigt die Eclipse IDE den Eintrag in der Java-Dokumentation zum inferierten Typen an. Und zu guter Letzt gibt es zwei Quick Assists für var: Der erste hilft bei der Konvertierung von einem Typen hin zu var, der zweite hilft beim Weg zurück.

„––release“

Wer Java 9 oder höher in seinen Projekten verwendet, kann nun auch von der --release-Option Gebrauch machen. Wird also beispielsweise ein JRE von Version 9 genutzt und das Compliance Level ist auf 1.7, werden die verfügbaren APIs von JRE 1.7 verwendet, auch wenn JRE 1.7 nicht im Workspace vorhanden ist. Früher wären die entsprechenden APIs trotzdem aus der Java-9-Bibliothek gewesen.

Die Option wird für 1.6 und höher für Projekte, die JRE 9 und höher verwenden, angeboten. Ab Java 10 werden übrigens keine Beschreibungen für die API Tools der Ausführungsumgebung mehr bereitgestellt, um herauszufinden, ob Referenzen in dieser vorhanden sind. Benutzer müssen dann die --release verwenden, um die Kompilierung gegen die Plattform-API ihrer Wahl zu konfigurieren.

Sonstiges

Für Probleme, die durch ein non-existing or empty package in einer exports directive in der module-info.java-Datei verursacht werden, gibt es nun einen Quick Fix. Durch den Quick Fix wird entweder eine Klasse, ein Interface, eine Annotation oder ein Enum im entsprechenden Package erstellt. Existiert das Package nicht, wird ein neues (inklusive dem neuen Element darin) kreiert.

Mit Eclipse Photon M7 kann auch ein verspäteter Frühjahrsputz durchgeführt werden, hierfür bietet sich die neue Säuberungsaktion Remove redundant modifiers an. Diese entfernt unnötige Modifier von Typen, Methoden und Feldern.

Platform Developers

Für alle Extension Points, deren Ziel der generische Editor ist (autoEditStrategies, contentAssistProcessors, highlightReconcilers, hoverProviders, presentationReconcilers, reconcilers), sind nun enabledWhen-Kindelemente für Contributions verfügbar.

Und zu guter Letzt gibt es ein neues API: Monitor.getZoom(). Dieses gibt den Zoom-Wert wieder, der vom SWT für einen Monitor genutzt wird. Das API kann in zwei Fällen genutzt werden:

  • Wenn die DPI eines Monitors dynamisch wechseln, gibt das API die neue DPI-Zahl zurück.
  • Wenn mehrere Monitore mit unterschiedlichen DPI verwendet werden, kann das API für die Determinierung der Auflösung eines spezifischen Monitors genutzt werden, auf den ein Kontrollelement gezogen wird.

Weitere Informationen zu allen Änderungen und eine vollständige Liste dieser gibt es wie immer in den Release Notes zum neuesten Meilenstein von Eclipse Photon.



Eclipse Photon (4.8) M6

Plattform

Während die Plattform von Eclipse im letzten Meilenstein eher weniger im Fokus stand, bringt der sechste Milestone von Eclipse Photon wieder mehr Änderungen, viele davon optischer Natur. Im Dark Theme gibt es nun beispielsweise ein eigenes Styling für den Range Indicator des Texteditors. Die entsprechenden Farben können zudem auch im Menü Colors and Fonts bearbeitet werden. Für das Dark Theme wurden auch die Icons für die Block Selection, Word Wrap und Show Whitespace überarbeitet, sodass sie sich nahtloser in die Gesamtoptik einfügen

Icons im Dark Theme (vorher) / Quelle: Eclipse Foundation

Icons im Dark Theme (nachher) / Eclipse Foundation

Abseits der visuellen UX gibt es ebenfalls einige Änderungen an der Plattform. Im Dialogfenster der Projekteigenschaften gibt es jetzt einen neuen Reiter, um sogenannte Project Natures hinzuzufügen oder zu entfernen. Der Workspace kann neuerdings auch Projekte parallel erstellen, die Einstellung dafür findet sich in der entsprechenden Eigenschaftsseite. Hierfür empfehlen die Plattformentwickler allerdings, zunächst mit einer niedrigen Anzahl an parallelen Builds zu starten, damit es nicht zu einem CPU-Overload kommt.

Eine weitere Neuerung ist, dass die der Eclipse IDE eigene automatische Refresh-Funktion nun auch auf Eclipse-basierte Tools wie die Spring Tools Suite standardmäßig funktioniert. Sobald man auf eine Datei zugreift, wird diese nun ohne einen expliziten Befehl an die Entwicklungsumgebung aktualisiert. Zu guter Letzt wurde der Open-Resource-Dialog so angepasst, dass man auch den Dateipfad sieht, vorher gab es diese Infos nur bei doppelten Einträgen.

Java Development Tools (JDT)

Auch für Java-Entwickler dürfte der sechste Milestone von Eclipse Photon interessant sein, denn er bringt die Unterstützung dafür mit, Java-Annotationsprozessoren auf Test Sources laufen zu lassen. Das Zielverzeichnis für die generierten Dateien kann individuell eingestellt werden. Wer die annotationsbasierte Null-Analysen nutzt, bekommt mit Eclipse Photon mehr Möglichkeiten an die Hand, um zu definieren, von welchen nicht-annotierten Locations implizit angenommen werden muss, dass sie als @NonNull annotiert sind.

Weitere Änderungen umfassen auch im Bereich der Java Development Tools vor allem optische Anpassungen. Über das Menü Colors and Fonts kann etwa das Styling sogenannter Inherited Members für die Quick Outlines der JDT angepasst werden. Für Hyperlinks innerhalb der Informationskontrolle von Code-Elementen werden die im oben genannten Menü eingestellten Farbdefinitionen für Hyperlinks verwendet.

Styling für Inherited Members (vorher) / Quelle: Eclipse Foundation

Styling für Inherited Members (nachher) / Quelle: Eclipse Foundation

Plug-in Development Environment (PDE)

Quellordner von Plug-in-Projekten, deren Projektnamen mit .test oder .tests enden bzw. .tests. enthalten, werden bei der Verwendung von Plug-in Tools > Update Classpath… entsprechend der Tatsache markiert, dass sie Test Sources enthalten. Dadurch wird es endlich möglich, die Filteroptionen diverser Tools richtig zu nutzen. Per Regulärem Ausdruck kann in den Einstellungen der exakte Suchmechanismus definiert werden.

Im Kontextmenü des .target-Quelleditors, dass sich per Rechtsklick öffnen lässt, gibt es nun den Eintrag Update IU Versions from Repositories. Dadurch kann per Klick der Updateprozess der Versionsattribute sämtlicher Units angestoßen werden.

Platform Developers / JDT Developers / Equinox


Plattformentwickler können sich über zwei neue APIs freuen: org.eclipse.e4.core.di und getAverageCharacterWidth. Das erste Paket enthält unter anderem die neuen Types InjectionException (das ebenfalls ein API wird), IInjector (für eine feingranuliertere Dependency Injection) und InjectorFactory (für das Ersellen einer IInjector-Instanz).

Die Methode double getAverageCharacterWidth(), die FontMetrics hinzugefügt wurde, ersetzt die Methode int getAverageCharWidth(). Die alte Methode gilt damit als „deprecated“ und wird mit einer der nächsten Versionen verschwinden. Neben den neuen APIs gibt es eine Erweiterung für Datetime von GTK, darin wird nun ein ortsgebundenes Format für die Datumsangabe unterstützt.

Ortsgebundenes Datumsformat in GTK / Quelle: Eclipse Foundation

Für JDT-Entwickler gibt es lediglich eine Neuerung, die Methode IBinding#getJavaElement() nimmt nun wiederhergestellte Pakete auf, es kann dabei unter Umständen an der Stelle dazu kommen, dass eine null zurückgegeben wird. Mit dem neuen Extension Point org.eclipse.equinox.p2.artifact.repository.artifactChecksums ist es im Bereich Equinox ab sofort möglich, jedwede Implementierung von MessageDigest für die Berechnung und das Prüfen von Checksummen des Check-Artefakts zu nutzen.

Weitere Informationen zu allen Änderungen und eine vollständige Liste dieser gibt es wie immer in den Release Notes zum neuesten Meilenstein von Eclipse Photon.



Eclipse Photon (4.8) M5

Plattform

Für die Plattform gab es diesmal nur eine sehr kleine Änderung, die im Jobs-Framework vorgenommen wurde. Bislang war es so, dass sämtliche laufende Worker Zahlen als Threadnamen bekamen. Dies führte dazu, dass keiner wusste, was der Worker tatsächlich tut. Ab Eclipse Photon M5 nutzt das Framework nun Job-Namen für Worker-Threadnamen. So wird aus Thread [Worker-14] (Running) etwa Thread [Worker-14: Updating index names] (Running).

Java Development Tools (JDT)

Der Hauptfokus des fünften Meilensteins von Eclipse Photon (4.8) liegt eindeutig auf den Java Development Tools (JDT). Zu den kleineren Änderungen gehört unter anderem, dass die Debug-Ansicht nun die Threadnamen automatisch aktualisiert, sobald sie in der debuggee-JVM geändert werden. Für die Modul-Namensdeklaration ist zudem Content Assist verfügbar und die Display-Ansicht heißt nun Debug Shell.

Content Assist für die Namensdeklaration von Modulen / Quelle: Eclipse Foundation

Auch die Profileinstellungsseite des Formatters wurde überarbeitet und kommt in einem neuen Look daher, der es erleichtern soll, Einstellungen für die Formatierung von Java-Code vorzunehmen. Statt mehreren Tabs sind alle Einstellungsmöglichkeiten in einem ausklappbaren Baum-Menü sortiert. Per Filter lassen sich ausschließlich die zum Keyword passenden Menüs einblenden.

Im Reiter Java Build Path der Projekteinstellungen gibt es nun das Attribut Contains test sources. Mit diesem lässt sich einstellen, dass ein Source-Ordner Test-Sources enthält (diese brauchen allerdings einen eigenen Output-Ordner). Für Projekte und Librarys gibt es dementsprechend ein Attribut Visible only for test sources. Diese Einstellung gibt es auch für Klassenpfadcontainer – einmal den Wert für einen solchen auf Yes gestellt, wird der Wert für alle enthaltenen Bibliotheken und Projekte verwendet.

Contains test sources / Quelle: Eclipse Foundation

Eine Java Launch Configuration kann im Übrigen nun auch auf einem Prototyp basieren. Dieser Prototyp platziert Parameter in den mit ihm verbundenen Java Launch Configurations, die auf den Einstellungen basieren, welche im Prototyp-Tab spezifiziert wurden. Sobald die Java Launch Configuration erstellt wurde, kann man jede initial gesetzte Einstellung des Prototyps überschreiben. Eine Verbindung zum Prototyp wird dabei zwar weiterhin aufrechterhalten, aber es handelt sich hierbei tatsächlich um eine eigenständige Startkonfiguration, die gestartet, exportiert, geteilt usw. werden kann.

Plug-in Development Environment (PDE)

Das Plug-in Development Environment kann nun Abhängigkeiten verarbeiten, die von den Manifest-Headern Require-Capability und Provide-Capability beschrieben werden. Diese Abhängigkeiten werden zusätzlich beim Berechnen der benötigten Bundles für ein ausgewähltes Bundle-Set von der Zielplattform berücksichtigt.

Äquivalent zu den Java Launch Configurations können auch Eclipse Launch Configurations auf einem Prototyp basieren.

Platform Developers / JDT Developers

Im SourceViewer wird mit Eclipse Photon M5 auch das Code Mining unterstützt. Ein Code Mining repräsentiert einen Kontext (bspw. Labels, Icons), der mit Quelltext gemeinsam angezeigt werden sollte, etwa die Nummer der Referenzen. Das Code Mining ist für Entwickler besonders deswegen wichtig, um ihnen beim Verstehen des geschriebenen Codes zu helfen. Das Beispiel zeigt, wie das Ganze für Klassenreferenzen und –implementierungen funktioniert:

Code Mining Demo / Quelle: Eclipse Foundation

Die Methode SearchPattern#createPattern(String , int , int , int ) wurde so modifiziert, dass sie nun bei der Suche nach Modul-Deklarationen Reguläre Ausdrücke unterstützt. Achtung! die Flag SearchPattern#R_REGEXP_MATCH die für eine Suche mit Regulären Ausdrücken genutzt werden kann, ist ausschließlich für die Suche nach Modul-Deklarationen gedacht, keine andere Flag sollte gemeinsam mit dieser Match-Regel genutzt werden.

Weitere Informationen zu allen Änderungen und eine vollständige Liste dieser gibt es wie immer in den Release Notes zum neuesten Meilenstein von Eclipse Photon.



Eclipse Photon (4.8) M4

Plattform

Der Quick Access von Eclipse, der über STRG + 3 aufrufbar ist, wird noch besser. In zukünftigen Versionen werden bei der Suche auch passende Konfigurationsseiten angezeigt. Ebenfalls für mehr Komfort sorgt die Autorefresh-Option für den Browser-Editor: Wird eine geöffnete Datei nach der Bearbeitung gespeichert, wird der Editor automatisch neu geladen.

Debugging ist wichtig. Damit Nutzer der Eclipse IDE möglichst übersichtlich Debuggen können, wurde das Layout, wie angekündigt, überarbeitet. Mit dem Zweck, wichtige und relevantere Informationen ohne Scrolling oder wildes Herumklicken anzuzeigen, werden nun die Display– und die Expressions-Ansicht standardmäßig angezeigt. Auch der Project Explorer gehört zur Standardansicht und die Ansicht Problems ersetzt die Task-Anzeige.

Die neue Debugging-Ansicht / Quelle: Eclipse Foundation

Ansonsten gibt es im Plattformbereich kleinere UI-Änderungen. Während der Startkonfiguration kann auf den Export-Wizard für Launch Configurations per Rechtsklick zugegriffen werden, außerdem wurden alle Lucene Bundles auf Version 7.0 aktualisiert. Die Unterstützung von CVS ist übrigens nicht mehr Teil des SDKs und muss ab Photon dann zusätzlich installiert werden. Dafür sind die e4-Tools für das Entwickeln für e4-basierte IDE- und RCP-Komponenten Teil des SDKs.

Plug-in Development Environment, Platform Developers & Equinox

Für die Kompatibilität mit Java 9 ist wichtig, dass eine Manifest-Builder-Warnung für die manifest-Datei ausgegeben wird, sollte kein Automatic-Module-Name-Header enthalten sein. Quickfix für das Problem ist es, einfach einen Automatic-Module-Name mit dem gleichen Namen wie Bundle-SymbolicName hinzuzufügen, neue Plug-in-Projekte haben diese Einstellung automatisch. Rein optisch wurde das Eclipse 4 RCP Template aufgewertet, es werden nun Icons im Material Design verwendet.

Material Design Icons im Eclipse 4 RCP Template / Quelle: Eclipse Foundation

Im Bereich Platform Developers wird ein neuer Extension Point im Generic Editor für das Überschreiben des Standard-Highlighters verfügbar. Gleichzeitig können verschiedene Reconcilers in Form von org.eclipse.jface.text.reconciler.IReconciler für das Highlighting hinzugefügt werden.
Wer gerne den Zeilenabstand individuell anpassen will, der kann dafür ab sofort StyledText.setLineSpacingProvider(StyledTextLineSpacingProviderlineSpacingProvider) nutzen, indem er das Interface org.eclipse.swt.custom.StyledTextLineSpacingProvider implementiert. Ein Beispiel kann hier eingesehen werden. Das Endergebnis sieht dann wie folgt aus:

Der bereich Equinox hat lediglich eine Neuerung im Gepäck: Ab Eclipse Photon können Nutzer p2 nutzen, um „softe“ Bundle Dependencies zur Verfügung zu stellen. Diese können nicht als Import-Package– oder Require-Bundle-Manifest-Header ausgezeichnet werden. Solche Abhängigkeiten werden von den Manifest Headern Require-Capability und Provide-Capability beschrieben, die p2 nun verarbeiten kann. Grund hierfür ist, dass immer mehr OSGi-Technologien sehr stark auf abstrakte Dependencies setzen, um konsistente Anwendungen zu verbinden.

Weitere Informationen zum vierten Milestone von Eclipse Photon gibt es als News and Noteworthy auf der Seite der Eclipse Foundation. Heruntergeladen werden kann Eclipse 4.8 M4 auf der Download-Seite.



Eclipse Photon (4.8) M3

Plattform

Für Mac-Nutzer bringt der dritte Meilenstein von Eclipse Photon zunächst einmal Eye Candy. Führt man in Eclipse unter Mac eine Aktion aus, die lange dauert, wird nun nicht mehr ein statischer schwarz-weißer Kreis als Maus-Cursor angezeigt, sondern ein modernes, animiertes Icon (der sogenannte Beach Ball).

Um die Übersicht im Preferences-Dialog zu verbessern und wichtige Funktionen einfacher zugänglich zu machen, wurden zwei dem Menü an der unteren Seite zwei Buttons hinzugefügt: Einer, der die Nutzer direkt zu den Import-Einstellungen führt, und einer für die Export-Einstellungen. Wie gehabt sind diese auch über FILE | Import and File | Export erreichbar.

Die neuen Buttons für Import/Export-Einstellungen / Quelle: Eclipse Foundation

Der Open-Resource-Dialog zeigt nun deutlicher, wie die Suchergebnisse zustande kommen, indem die passenden Buchstaben bzw. Wörter und Muster hervorgehoben werden. Außerdem gibt es neuerdings die Option, sich einen Button für das Rückgängigmachen bzw. Wiederholen (Undo / Redo) anzeigen zu lassen. Diese Buttons sind nicht standardmäßig in der Toolbar, können allerdings über Window | Perspective | Customize Perspective in die Leiste eingefügt werden.

Java Development Tools

Natürlich werden die Java Development Tools (JDT) von Eclipse Photon das neue Java 9 und dessen Features unterstützen, darunter auch Project Jigsaw, das neue Modulsystem. Über den Support von Java 9 und JUnit 5 haben wir bereits ausführlich berichtet. Für Testläufe mit JUnit 5 können nun Tags eingefügt oder von ihnen ausgeschlossen werden. Das geht über den Dialog Configure Tags der JUnit-Startkonfiguration.

Wem die verfügbaren Daten zu Tests mit JUnit nicht ausreichen, die standardmäßig ausgegeben werden, kann ab sofort einen Methodenparameter nach dem Typ TestReporter nutzen. Durch dessen Einsatz werden weitere Informationen über den aktuell laufenden Test in der Konsole angezeigt (ab JUnit Jupiter).

Lesen Sie auch: Eclipse Weekly Special: EE4J, Java EE, Java 9 & OpenJ9 – das war die EclipseCon 2017

Neben den oben genannten Features beinhalten die JDT Quickfixes, um @NonNullByDefault zu Packages, requires directive zu module-info.java und die fehlenden import statement sowie requires directive für unresolved Types hinzuzufügen. Zudem gibt es einen Quickfix für das Erstellen neuer Klassen und Interfaces für unresolved types auf dem service provider.

Plug-in Development Environment & Platform Developers

Im Bereich des PDEs gibt es eine neue Option, sich Warnungen anzeigen zu lassen. Diesmal wurde die Möglichkeit implementiert, sich warnen zu lassen oder einen Error auszugeben, wenn Servicekomponenten ohne Lazy Activation Policy genutzt werden.

Die neue Option für Warnungen des PDE-Compilers / Quelle: Eclipse Foundation

Im generischen Texteditor wird für target-Dateien im dritten Meilenstein von Eclipse Photon das Highlighting und die Codevervollständigung für Parameter-Tags unterstützt. Außerdem hat das PDE nun einen Auffindungsmechanismus für Projekte. Dieser unterstützt das Auffinden von Projekten während des Imports via General | File Sytem.

Plattformentwickler können sich über den neuen Throttler freuen: Bei schnellen und vielfachen UI-Updates kann es dazu kommen, dass die Performanz des Systems leidet und man als Entwickler gar nicht mehr nachkommt, die ausgeschütteten Informationen überhaupt zu lesen.

Die neue Klasse org.eclipse.jface.util.Throttle kann in solchen Fällen nun genutzt werden, um die Updaterate des UI-Threads zu beschränken. Das Ganze könnte bspw. dann wie folgt aussehen:

public class ProgressMonitorPart extends Composite implements
        IProgressMonitorWithBlocking {
    [...]
    private Throttler throttledUpdate;
    [...]
    throttledUpdate = new Throttler(fLabel.getDisplay(), Duration.ofMillis(100), this::updateLabel);
    [...]
    protected void queueUpdateLabel() {
       throttledUpdate.throttledExec();
    }

Weitere Informationen zum dritten Milestone von Eclipse Photon gibt es als News and Noteworthy auf der Seite der Eclipse Foundation. Heruntergeladen werden kann Eclipse 4.8 M1 auf der Download-Seite.



Eclipse Photon (4.8) M2

Plattform

Im Fokus stand im zweiten Meilenstein von Eclipse Photon nicht die Plattform, dennoch gibt es ein paar wichtige Verbesserungen, die es in das aktuelle Release geschafft haben. In den Einstellungen, welche Dateien mit gewissen Content Types verküpft werden sollen, können nun auch ? sowie * als sogenannte Wildcards eingesetzt werden – und das an jeder Stelle des Musters eingesetzt werden (bspw. *-conf.json).

In Sachen optische Verbesserung der Nutzbarkeit können sich erneut die Mac-Nutzer der Eclipse-Plattform freuen. Ab dem zweiten Meilenstein von Eclipse Photon kann die Hintergrundfarbe von Buttons individuell gestaltet werden. Die Performance des Textcursors wurde im GTK3-Port des SWTs verbessert, sodass es nun nicht mehr zu Rucklern kommen sollte und der Cursor in gleichmäßiger Geschwindigkeit blinkt.

Farblich angepasste Buttons auf dem Mac / Quelle: Eclipse Foundation

Java Development Tools

Am 10. September war es endlich so weit: Das Testing Framework JUnit 5 wurde offiziell veröffentlicht. In Eclipse Photon wird die Unterstützung für JUnit 5 in den JDT nativ enthalten sein, für die Unterstützung in Eclipse Oxygen wird man im Marketplace fündig. Erstellt man in Eclipse Photon einen JUnit Test Case mit dem neuen JUnit Test Case Wizard, ist es bereits beim Erstellen möglich, diesen als JUnit Jupiter test zu definieren.

Der neue JUnit Test Case Wizard schlägt automatisch vor die JUnit-5-Bibliothek zum Build Path hinzuzufügen und beim Hinzufügen einer Library über das Java-Build-Path-Fenster kann die Version dieser ausgewählt werden. Auch neu sind die beiden Templates test_jupiter, mit dem eine JUnit-Jupiter-Testmethode erstellt werden kann, und test_factory, mit dem eine @TestFactory-Methode erstellt wird.

Der neue JUnit Test Case Wizard / Quelle: Eclipse Foundation

Standardmäßig sind nun auch die Klassen Assertions, Assumptions, DynamicContainer und DynamicTest Teil der Eclipse Favoriten. Dies erlaubt es Nutzern, statische Methoden dieser Klassen schnell via Content Assist (STRG + Space) bzw. Quick Fox (STRG + 1) zu importieren.

Die JUnit-Ansicht in Eclipse erlaubt die Nutzung zahlreicher neuer Funktionen quasi nativ, so kann man sich in ihr etwa sämtliche Fehlermeldungen gruppierter Assertions im Vergleichsfenster der Resultate anzeigen lassen. Beim Mouseover wird in der JUnit-Ansicht auch die Anzahl an deaktivierten Tests und Tests mit sogenannten Assumption Failures angezeigt.

Testergebnisse vergleichen in Eclipse Photon / Quelle: Eclipse Foundation

Wichtig: In einem Setup, in dem ein alter Eclipse Build, der keine Unterstützung für JUnit 5 hat, einen neuen Eclipse Build mit JUnit 5 Support als Ziel verwendet, wird das Testen nicht unterstützt.

Vom JUnit 5 Support abgesehen, wurde die Lesbarkeit für das Java Syntax Coloring im Dark Theme verbessert. Die Verwendung von Fettungen wurde dafür reduziert und einige Farben, die sich zu ähnlich waren, wurden geändert. Das Resultat sieht durchaus ansehnlich aus.

Das neue Java Syntax Coloring / Quelle: Eclipse Foundation

Plug-in Development Environment & Platform Developers

Der Target-Definition-Editor wurde um einen neuen Tab erweitert. Der Tab Source enthält den Target-Definition-Editor des erweiterungsbasierten Texteditors. Dieser ist gleichläufig mit den anderen Tabs und Änderungen sollten automatisch übernommen werden. Plattformentwickler können sich, wie oben bereits erwähnt, über die individuell gestaltbaren Buttons für Mac freuen; dies geht über den Befehl Button.setBackground().

Auch wichtig ist, dass die Interfaces der Listener im SWT erweitert wurden und nun statische Hilfsmethoden zur Verfügung stellen, die wiederum Lambdas als Listener akzeptieren. Diese Methoden sind Alternativen für die Nutzung von Adapterklassen:

  • org.eclipse.swt.events.ControlListener
  • org.eclipse.swt.events.ExpandListener
  • org.eclipse.swt.events.MenuListener
  • org.eclipse.swt.events.TreeListener
  • org.eclipse.swt.events.MouseTrackListener
  • org.eclipse.swt.events.ShellListener
  • org.eclipse.swt.custom.ControlListener
  • org.eclipse.swt.browser.LocationListener
  • org.eclipse.swt.browser.ProgressListener
  • org.eclipse.swt.browser.VisibilityWindowListener

Plattformentwickler, die transparente Farben vermisst haben, können aufatmen: Im GTK3-Port des Standard Widget Toolkits werden diese ab Eclipse Photon M2 unterstützt. Zu guter Letzt gab es für die CSS-Engine ein Upgrade auf Batik 1.9, das nun an Stelle von Batik 1.8 verwendet wird.

Weitere Informationen zum ersten Milestone von Eclipse Photon gibt es als News and Noteworthy auf der Seite der Eclipse Foundation. Heruntergeladen werden kann Eclipse 4.8 M1 auf der Download-Seite.



Eclipse Photon (4.8) M1

Plattform

Die Usability ist laut Lars Vogel also erneut ein wichtiger Faktor, wenn nicht sogar der wichtigste. Der erste Meilenstein von Eclipse Photon zeigt dies ebenfalls deutlich, sind doch gleich zwei der drei neuen Features reine Verbesserungen im Bereich Nutzerfreundlichkeit. Unter anderem werden nun im Dialog Open Resource die Buchstaben bzw. Wörter hervorgehoben, die mit dem Filter übereinstimmen. So kann man gleich sehen, ob das Suchergebnis zu dem passt, was man hatte finden wollen.

Das Highlighting im Open-Resource-Dialog / Quelle: Eclipse Foundation

Während das obige Feature für alle Nutzer der Eclipse IDE interessant ist, ist eine weitere Verbesserung der Usability ausschließlich für Nutzer des macOS interessant. Bislang war „Monaco“ die Schriftart der Wahl für die Mac-Version von Eclipse bzw. den Text-Editoren der Entwicklungsumgebung. Die Schriftart ist gut lesbar, allerdings hat sie den entscheidenden Nachteil, dass man sie nicht „fetten“ kann. Da viele Code-Editoren allerdings gewisse Schlüsselworte fettgedruckt darstellen, wurde es Zeit, die Schriftart zu wechseln.

Unter Mac wird in Eclipse Photon von Beginn an „Menlo“ als Standardschriftart verwendet, die diesen Nachteil ausgleicht und die Lesbarkeit beim Arbeiten mit Quelltext deutlich verbessern soll – immerhin ist das Lesen des Source Codes eine der Hauptaufgaben des Entwicklers beim Programmieren.

Vorher-Nachher-Vergleich der beiden Fonts Monaco (links) und Menlo (rechts) / Quelle: Eclipse Foundation

Das dritte und letzte Feature, das die Plattform-Entwickler für den ersten Meilenstein umgesetzt haben, ist die Erweiterung des Menüs für die Einstellungen der Content Types. Hier kann man ab sofort die Zuordnungen von Datei-Arten mit dem entsprechenden Editor einsehen, einstellen und entfernen.

Platform Developers

Für Plattform-Entwickler gibt es im ersten Meilenstein von Eclipse Photon ebenfalls drei Neuerungen. Die erste ist erneut ausschließlich für Mac-User interessant: Man kann nun endlich auch auf einem Apple-Rechner Text.setBackground(Color) nutzen, um die Hintergrundfarbe eines Text-Widgets zu definieren. Das funktionierte unter Windows und GTK bereits.

Wer XULRunner als Rendering Engine für den Browser den Vorzug gibt, der muss stark sein: Eclipse/SWT unterstützt es nicht mehr – auf keiner Plattform. Dafür hat der Generic Editor nun zwei neue Extension Points, um eine Auto-Edit-Strategie (org.eclipse.jface.text.IAutoEditStrategy) bzw. einen Reconciler (org.eclipse.jfache.text.reconciler.IReconciler) hinzuzufügen. Auto-Edit-Strategien sind für Syntaxregeln interessant, also etwa für das automatische Hinzufügen von Einrückungen oder das automatische Schließen von Klammern. Reconciler werden hingegen für das sogenannte Code Folding oder Spell Checker genutzt.

Lesen Sie auch unser aktuelles Interview mit Mike Milinkovich zum Oxygen-Release

Weitere Informationen zum ersten Milestone von Eclipse Photon gibt es als News and Noteworthy auf der Seite der Eclipse Foundation. Heruntergeladen werden kann Eclipse 4.8 M1 auf der Download-Seite.

Verwandte Themen:

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
  1. user2018-03-16 19:37:10

    Hoffentlich wurden auch Bug Fixes im Bereich SWT gemacht und fließen in das neue Eclipse-Release. Eclipse leidet unter Ubuntu und Mint leider unter zum Teil starken Darstellungsfehlern.

Schreibe einen Kommentar

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