Interview mit Andrey Cheptsov

Java 8 in IntelliJ IDEA: Wo liegen die Unterschiede zu NetBeans und Eclipse?

Hartmut Schlosser

Zeitgleich zum Java 8 Release haben auch die Entwicklungsumgebungen Eclipse, NetBeans und IntelliJ IDEA neue Versionen vorgelegt, die die neuen Sprachfeatures aus Java 8 unterstützen. Andrey Cheptsov plaudert aus dem Nähkästchen der Entwicklung von IntelliJ IDEA 13.1 und verrät, wie sich der Java 8 Support in IntelliJ IDEA von NetBeans und Eclipse unterscheidet.

JAXenter: IntelliJ IDEA 13.1 unterstützt Java 8. Worin genau besteht diese Unterstützung?

Andrey Cheptsov: Da es bei IntelliJ IDEA in allererster Linie um Code Assistance geht, besteht der Support zunächst einmal aus grundlegenden Dingen wie Code Highlighting, Code-Inspektionen, Code Completion, Refactorings und Formattier-Hilfen. Die Inspektionen helfen beispielsweise dabei, Codeteile zu finden, die potenziell auf neue Java 8 APIs migriert werden könnten. Die IDE bietet Quickfixes, die die damit verbundenen Änderungen automatisch erledigen.

Etwa können die Inspektionen, die in IntelliJ IDEA 13.1 hinzugekommen sind, dabei helfen, For-Schleifen in einem Projekt durch das neue Java 8 Stream API zu ersetzen. Die Code Completion kennt ebenfalls alle Java 8 spezifischen Neuerungen und schlägt erwartete Lambda-Ausdrücke und Methoden-Referenzen vor. Darüberhinaus ermöglichen Navigationshilfen, direkt zum zugehörigen funktionalen Interface zu springen. Wir haben auch unsere statische @Nullable/@NotNull Analyse angepasst, um die neuen Typen-Annotationen aus JSR 308 zu unterstützen.

JAXenter: Nun hat mit dem Release von Java 8 auch NetBeans und Eclipse Support für die neuen Sprachfeatures umgesetzt. Wie unterscheidet sich hier IntelliJ IDEA 13.1 von den beiden anderen IDEs?

Andrey Cheptsov: Alle drei IDEs bieten Code Highlighting für die neuen Java-8-Konstrukte und eine Erste Hilfe zur Migration anonymer Klassen auf Lambda-Ausdrücke. IntelliJ IDEA geht insofern ein wenig weiter als die anderen, indem es zusätzliche Hilfestellung anbietet, beispielsweise das Ersetzen anonymer Klassen (oder Lambda – Ausdrücke) durch Methoden-Referenzen und umgekehrt sowie das Ersetzen von for-Schleifen durch das neue Stream API.

Was die neuen Kompakt-Profile anbelangt, die bereits in NetBeans unterstützt werden, so planen wir bei IntelliJ IDEA, die Unterstützung dafür in einem unserer nächsten Releases nachzuliefern.

JAXenter: Was war die größte Herausforderung bei der Bereitstellung des Java-8-Supports für Euch IDE-Entwickler?

Andrey Cheptsov: In den frühen Phasen der Entwicklung gab es einige Lücken in der Spezifikation – IntelliJ IDEA 12 aus dem Jahr 2012 beinhaltete ja schon den Support für die Java 8 Preview. Wir sind den Entwicklern bei Oracle aber sehr dankbar für ihre Hilfe und das Beantworten unserer Fragen diesbezüglich.

JAXenter: Teil des JDK 8 ist ja auch JavaFX 8. Wie sieht Eure Unterstützung dafür aus?

Andrey Cheptsov: Der aktuelle JavaFX Support besteht hauptsächlich aus der Fehlerhervorhebung, aus Code-Inspektionen und Intentions für FXML und CSS-Dateien. Die IDE ermöglicht auch das sichere Refaktorisieren zwischen Java und FXML bzw. CSS Code: Das Umbenennen von Kontrollern in Java aktualisiert beispielsweise auch den FXML Code. Das Umbennenen des Kontrollerfeldes wirkt sich auf das CSS aus, usw. JavaFX Packaging ist auf der Basis unseres Artifacts-Konzeptes enthalten.

Was den JavaFX Scene Builder betrifft, so ist dieser bereits im Editor integriert, wenn man IntelliJ IDEA unter dem JRE 1.8  betreibt. Es gibt zwar noch einige kleinere Probleme mit der Interoperabilität zwischen Swing und JavaFX – hauptsächlich beim Drag’n’Drop und der Performance – aber Oracle ist uns dabei behilflich, das auch noch in den Griff zu bekommen.  

JAXenter: Wenn wir gerade über Java 8 reden: Welche Auswirkungen glaubst du persönlich wird Java 8 auf die Industrie haben?

Andrey Cheptsov: Java 8 ist das zweite Release nach einer langen Phase ohne Java-Releases – und es wurde zum angekündigten Zeitpunkt ausgeliefert. Auch das Tooling wurde zum Release-Datum upgedatet. All das macht uns optimistisch, dass die Release-Zyklen nun regelmäßiger werden und wir erwarten können, dass wir weniger Zeit auf zusätzliche Tooling-Updates verwenden müssen – anders als wir das für beim Java 7 Release tun mussten.

Die neuen Java-8-Sprachfeatures  – allen voran die Lambda-Ausdrücke – werden natürlich massive Auswirkungen aus das ganze Java Ökosystem haben, insbesondere auf die Art und Weise, wie Leute Klassen-Bibliotheken schreiben.

Jeder im IntelliJ IDEA Team ist begeistert über Java 8 – und wir planen tatsächlich zu migrieren, sobald einige der JDK8-Probleme wie Batterie-Verbrauch oder Font Rendering behoben sind – was hoffentlich noch vor Ende diesen Jahres der Fall sein wird.

JAXenter: IDEA 13.1 hat auch andere interessante Featues, eins davon ist die sogenannte „Postfix Code Completion“. Was hat es damit auf sich?

Andrey Cheptsov: Nun, als wir dieses Feature implementierten, erwarteten wir nicht, eine so hohe Aufmerksamkeit zu erhalten – aber die Leute scheinen wirklich begeistert darüber zu sein, was natürlich toll ist. Ursprünglich stammt das Konzept vom ReSharper Team, einem anderen Produktivitätstool von JetBrains für .NET-Entwickler. Die Idee der Postfix Completion ist es, beim Schreiben von Code die Sprünge zurück zu hinteren Codemarkierungen zu reduzieren. Eine bereits getippte Anweisung lässt sich durch eine andere ersetzen, allein auf der Basis der Nachsilbe, die hinzugefügt wird. Beispielsweise bewirkt die Nachsilbe „.if“, angehängt an einen Booleschen Ausdruck, dass eine komplette If-Anweisung erzeugt wird. „.notbull“ triggert ein Template zur Überprüfung des Ausdrucks auf den Wert „null“.

JAXenter: Was kommt als nächstes bei IntelliJ IDEA?

Andrey Cheptsov: Momentan ist es noch zu früh für uns, diesbezüglich etwas anzukündigen – es steht erst die Planungsphase für die nächste Version an. Doch es wird definitiv mehr Goodies für Java-Entwickler geben, besonders für diejenigen, die ihre Produktivität steigern möchten. Für alle, die wissen wollen, woran wir arbeiten, empfehle ich, unseren Blog zu verfolgen, wo wir neue und unveröffentlichte Features diskutieren. Außerdem kann man sich bald wieder dem Early Preview Program anschließen, das im Laufe des Jahres starten wird.

JAXenter: Vielen Dank für dieses Gespräch!

Andrey Cheptsov is a product manager at JetBrains. He is responsible for managing both product and marketing for IntelliJ IDEA. In his free time, Andrey devotes to his own studies in software development. His technical interests and expertise include Java EE, Spring, HTML5 and Clouds. He is passionate about productivity, programming languages and tools.

Geschrieben von
Hartmut Schlosser
Hartmut Schlosser
Content-Stratege, IT-Redakteur, Storyteller – als Online-Teamlead bei S&S Media ist Hartmut Schlosser immer auf der Suche nach der Geschichte hinter der News. SEO und KPIs isst er zum Frühstück. Satt machen ihn kreative Aktionen, die den Leser bewegen. @hschlosser
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: