Auswahl Ihrer Java IDE

Aktualisiert: Dezember 2018 .

Jeder Java-Entwickler benötigt einen Programmiereditor oder eine IDE, die bei den grungigeren Teilen des Schreibens von Java und der Verwendung von Klassenbibliotheken und Frameworks behilflich ist. Die Entscheidung, welcher Editor oder welche IDE am besten zu Ihnen passt, hängt von verschiedenen Faktoren ab, einschließlich der Art der in der Entwicklung befindlichen Projekte, Ihrer Rolle in der Organisation, dem vom Entwicklungsteam verwendeten Prozess sowie Ihrem Niveau und Ihren Fähigkeiten als Programmierer. Weitere Überlegungen sind, ob das Team Tools standardisiert hat und welche persönlichen Vorlieben Sie haben.

Die drei IDEs, die am häufigsten für die serverseitige Java-Entwicklung ausgewählt werden, sind IntelliJ IDEA, Eclipse und NetBeans. Dies sind jedoch nicht die einzigen Optionen, und diese Überprüfung wird auch einige leichtgewichtige IDEs enthalten.

Für diese Zusammenfassung habe ich Neuinstallationen von IntelliJ IDEA Ultimate 2018.3, Eclipse IDE 2018‑09 für Java EE-Entwickler und Apache NetBeans (Inkubation) IDE 9 auf einem Mac durchgeführt. Ich habe auch mehrere Open-Source-Java-Projekte ausgecheckt, damit ich alle IDEs mit denselben Projekten testen konnte.

Über dieses Update

Diese IDE-Überprüfung wurde erstmals im September 2016 veröffentlicht und im Dezember 2018 aktualisiert. In den vergangenen Jahren haben sich die Java-Sprache, APIs, das JVM-Ökosystem und einige Frameworks erheblich weiterentwickelt. Java EE 8 führte viele Java-Technologiespezifikationen ein oder aktualisierte sie, darunter JSON-B (JavaScript Object Notation Binding), Java EE Security, Servlet 4.0 und JSF (JavaServer Faces) 2.3 zum Erstellen serverseitiger Benutzeroberflächen. Java EE 8 war auch die endgültige Java Enterprise-Version von Oracle: Die Eclipse Foundation hat die Verwaltung der Technologie übernommen, die in Jakarta EE umbenannt wurde. Inzwischen ist JUnit auf Version 5 vorgerückt und hat Integrationen gebrochen. IDEA und Eclipse unterstützen beide native JUnit 5, NetBeans jedoch noch nicht.

Alle diese Änderungen sollten Teil Ihrer Bewertung einer IDE sein, sei es für den allgemeinen Gebrauch oder für ein bestimmtes Projekt.

NetBeans 10 bietet Unterstützung für JUnit 5 und JDK 11

NetBeans 10 wurde im Januar 2019 veröffentlicht und bietet Unterstützung für JDK 11 und JUnit 5.

Grundlagen: Was Sie von einer Java-IDE benötigen

Zumindest würden Sie hoffen, dass Ihre IDE Java 8 und / oder 11 (die LTS-Versionen), Scala, Groovy, Kotlin und alle anderen JVM-Sprachen unterstützt, die Sie regelmäßig verwenden. Sie möchten auch, dass es die wichtigsten Anwendungsserver und die beliebtesten Webframeworks unterstützt, einschließlich Spring MVC, JSF, Struts, GWT, Play, Grails und Vaadin. Ihre IDE sollte mit allen Build- und Versionskontrollsystemen kompatibel sein, die Ihr Entwicklungsteam verwendet. Beispiele hierfür sind Apache Ant mit Ivy, Maven und Gradle sowie Git, SVN, CVS, Mercurial und Bazaar. Für zusätzliche Gutschrift sollte Ihre IDE in der Lage sein, die Client- und Datenbankebenen Ihres Stapels zu verwalten und eingebettetes JavaScript, TypeScript, HTML, SQL, JavaServer Pages, Hibernate und die Java Persistence API zu unterstützen.

Schließlich möchten Sie hoffen, dass Sie mit Ihrer Java-IDE Ihre Systeme problemlos und elegant bearbeiten, erstellen, debuggen und testen können. Im Idealfall verfügen Sie nicht nur über eine intelligente Code-Vervollständigung, sondern auch über Refactoring und Codemetriken. Wenn Sie sich in einem Geschäft befinden, das testgetriebene Entwicklungen durchführt, möchten Sie Unterstützung für Ihre Test-Frameworks und Stubbing. Wenn Ihre Gruppe ein Ticketsystem und CI / CD verwendet, ist es am besten, wenn Ihre IDE eine Verbindung zu ihnen herstellen kann. Wenn Sie Container und Clouds bereitstellen und debuggen müssen, sollte Ihnen Ihre IDE dabei helfen.

Betrachten wir vor diesem Hintergrund die Konkurrenten.

IntelliJ IDEE

IntelliJ IDEA, die in Bezug auf Funktionen und Preis führende Java-IDE, ist in zwei Editionen erhältlich: der kostenlosen Community-Edition und der kostenpflichtigen Ultimate-Edition mit zusätzlichen Funktionen.

Die Community Edition ist für die JVM- und Android-Entwicklung vorgesehen. Es unterstützt Java, Kotlin, Groovy und Scala. Android; Maven, Gradle und SBT; und Git, SVN, Mercurial, CVS und TFS.

Die Ultimate Edition, die für die Web- und Unternehmensentwicklung vorgesehen ist, unterstützt Perforce zusätzlich zu den anderen Versionskontrollsystemen. unterstützt JavaScript und TypeScript; unterstützt Java EE, Spring, GWT, Vaadin, Play, Grails und andere Frameworks; und enthält Datenbank-Tools und SQL-Unterstützung.

Die Idee ist, dass die kommerzielle (Ultimate) Edition ihren Platz auf dem Desktop eines Profis verdient und ein kostenpflichtiges Abonnement durch eine höhere Produktivität der Programmierer rechtfertigt. Wenn Sie als Java-Entwickler 50.000 bis 100.000 US-Dollar pro Jahr verdienen, ist es nicht sehr produktiv, um einen schnellen ROI für ein Business IDEA-Abonnement von 500 US-Dollar pro Jahr zu erzielen. Der Preis sinkt in den Folgejahren für Unternehmen, ist für Startups und Einzelpersonen viel niedriger und für Schüler, Lehrer, "Java Champions" und Open Source-Entwickler kostenlos.

IntelliJ bietet IDEA einen tiefen Einblick in Ihren Code, die Entwicklerergonomie, die integrierten Entwicklertools und ein polyglottes Programmiererlebnis. Lassen Sie uns einen Drilldown durchführen und sehen, was diese Funktionen bedeuten und wie sie Ihnen helfen können.

Martin Heller

Tiefer Einblick in Ihren Code

Syntaxfärbung und einfache Code-Vervollständigung sind für Java-Editoren eine Selbstverständlichkeit. IDEA geht darüber hinaus und bietet "intelligente Vervollständigung", was bedeutet, dass eine Liste der wichtigsten Symbole angezeigt werden kann, die im aktuellen Kontext anwendbar sind. Diese sind nach Ihrer persönlichen Nutzungshäufigkeit geordnet. "Kettenvervollständigung" geht tiefer und zeigt eine Liste der anwendbaren Symbole   an, auf die im aktuellen Kontext über Methoden oder Getter zugegriffen werden kann. IDEA vervollständigt auch statische Elemente oder Konstanten und fügt automatisch alle erforderlichen Importanweisungen hinzu. Bei allen Code-Vervollständigungen versucht IDEA, den Laufzeitsymboltyp zu erraten, seine Auswahl daraus zu verfeinern und nach Bedarf Klassenumwandlungen hinzuzufügen.

Java-Code enthält häufig andere Sprachen als Zeichenfolgen. IDEA kann Fragmente von SQL-, XPath-, HTML-, CSS- und / oder JavaScript-Code in Java-String-Literale einfügen. In diesem Fall kann Code in mehreren Sprachen umgestaltet werden. Wenn Sie beispielsweise eine Klasse in einer JPA-Anweisung umbenennen, aktualisiert IDEA die entsprechenden Entitätsklassen- und JPA-Ausdrücke.

Wenn Sie einen Code umgestalten, möchten Sie normalerweise auch alle Duplikate dieses Codes umgestalten. IDEA Ultimate kann Duplikate und ähnliche Fragmente erkennen und das Refactoring auch auf diese anwenden.

IntelliJ IDEA analysiert Ihren Code beim Laden und beim Eingeben. Es bietet Inspektionen, um auf mögliche Probleme hinzuweisen, und auf Wunsch eine Liste mit schnellen Lösungen für das erkannte Problem.

Entwicklerergonomie

IntelliJ hat IDEA unter Berücksichtigung des kreativen Flusses des Entwicklers entwickelt - auch bekannt als  "in der Zone sein". Das in Abbildung 1 links gezeigte Projektwerkzeugfenster verschwindet mit einem einfachen Mausklick aus der Ansicht, sodass Sie sich auf den Code-Editor konzentrieren können. Alles, was Sie während der Bearbeitung tun möchten, verfügt über eine Tastenkombination, einschließlich des Aufrufs von Symboldefinitionen in einem Popup-Fenster. Während das Erlernen der Verknüpfungen Zeit und Übung erfordert, werden sie schließlich zur zweiten Natur. Auch ohne die Verknüpfungen zu kennen, kann ein Entwickler lernen, IDEA einfach und schnell zu verwenden.

Das Design des IDEA-Debuggers ist besonders schön. Variablenwerte werden direkt im Editorfenster neben dem entsprechenden Quellcode angezeigt. Wenn sich der Status einer Variablen ändert, ändert sich auch ihre Hervorhebungsfarbe.

Integrierte Entwicklertools

IntelliJ IDEA bietet eine einheitliche Schnittstelle für die meisten wichtigen Versionskontrollsysteme, einschließlich Git, SVN, Mercurial, CVS, Perforce und TFS. Sie können Ihr gesamtes Änderungsmanagement direkt in der IDE durchführen. Beim Testen von IDEA wünschte ich mir, dass die letzte Änderung in einem Quellcodeblock im Editorfenster als Anmerkung angezeigt wird (wie in Visual Studio). Wie sich herausstellt, gibt es dafür ein Plugin.

IDEA integriert außerdem Build-Tools, Testläufer und Coverage-Tools sowie ein integriertes Terminalfenster. IntelliJ hat keinen eigenen Profiler, unterstützt jedoch mehrere Profiler von Drittanbietern über Plugins. Dazu gehören YourKit, das von einem ehemaligen IntelliJ-Hauptentwickler erstellt wurde, und VisualVM, eine neu gepackte Version des NetBeans-Profilers.

Das Debuggen von Java kann schmerzhaft sein, wenn in Klassen, für die Sie keinen Quellcode haben, mysteriöse Dinge passieren. IDEA wird mit einem Dekompiler für diese Fälle geliefert.

Bei der Java-Serverprogrammierung wird häufig mit Datenbanken gearbeitet, sodass IDEA Ultimate SQL- und NoSQL-Datenbanktools enthält. Wenn Sie mehr benötigen, ist eine dedizierte SQL-IDE (DataGrip) als Teil eines Abonnements für alle Produkte verfügbar, das nur wenig teurer ist als ein IDEA Ultimate-Abonnement.

IntelliJ IDEA unterstützt alle wichtigen JVM-Anwendungsserver und kann auf den Servern bereitgestellt und debuggt werden, wodurch ein Hauptproblem für Enterprise Java-Entwickler behoben wird. IDEA unterstützt Docker auch über ein Plugin, das ein Docker-Toolfenster hinzufügt. (Apropos Plugins, IntelliJ hat viele davon.)

Polyglot-Programmierung

IDEA hat die Codierungsunterstützung für Spring, Java EE, Grails, Play, Android, GWT, Vaadin, Thymeleaf, Android, React, AngularJS und andere Frameworks erweitert. Nicht alle davon sind Java-Frameworks. Neben Java versteht IDEA viele andere Sprachen, darunter Groovy, Kotlin, Scala, JavaScript, TypeScript und SQL. Wenn Sie mehr benötigen, gibt es derzeit Hunderte von IntelliJ-Sprach-Plugins, einschließlich Plugins für R, Elm, Go, Rust und D.

Eclipse IDE

Eclipse, lange Zeit die beliebteste Java-IDE, ist kostenlos und Open Source und wird hauptsächlich in Java geschrieben, obwohl die Plugin-Architektur es ermöglicht, Eclipse in anderen Sprachen zu erweitern. Eclipse entstand 2001 als IBM-Projekt, um die Smalltalk-basierte IBM Visual Age-IDE-Familie durch eine tragbare Java-basierte IDE zu ersetzen. Ein Ziel des Projekts war es, Microsoft Visual Studio in den Schatten zu stellen, daher der Name.

Durch die Portabilität von Java ist Eclipse plattformübergreifend: Eclipse kann unter Linux, Mac OS X, Solaris und Windows ausgeführt werden. Das Java Standard Widget Toolkit (SWT) ist zumindest teilweise für das Erscheinungsbild von Eclipse verantwortlich, egal ob gut oder schlecht. Ebenso verdankt Eclipse seine Leistung (oder, wie manche sagen, deren Fehlen) der JVM. Eclipse hat den Ruf, langsam zu laufen, was auf ältere Hardware und ältere JVMs zurückgeht. Selbst heute kann es sich jedoch langsam anfühlen, insbesondere wenn es sich im Hintergrund mit vielen installierten Plugins aktualisiert.

Ein Teil des Overheads in Eclipse ist der integrierte inkrementelle Compiler, der ausgeführt wird, wenn eine Datei geladen wird und wenn Sie Ihren Code aktualisieren. Alles in allem ist dies eine sehr gute Sache und liefert Fehlerindikatoren während der Eingabe.

Unabhängig vom Build-System verwaltet ein Eclipse-Java-Projekt auch ein Modell seines Inhalts, das Informationen zur Typhierarchie, Referenzen und Deklarationen von Java-Elementen enthält. Dies ist auch unter dem Strich eine gute Sache und ermöglicht mehrere Bearbeitungs- und Navigationsassistenten sowie die Gliederungsansicht.

Die aktuelle Version von Eclipse ist 2018‑09. Ich habe die Eclipse-IDE für Java EE-Entwickler installiert, aber es gibt viele andere Installationspakete, einschließlich der Option, das minimale Eclipse-SDK zu installieren und Plugins nur nach Bedarf hinzuzufügen. Die letzte Option ist jedoch nichts für schwache Nerven: Es ist nicht schwer, Konflikte zwischen Plugins einzuführen, die nicht wirklich  sagten, dass  sie nicht kompatibel sind.

Martin Heller

Unterstützung für erweiterbare Tools

Das Plugin-Ökosystem ist eine der Stärken von Eclipse und eine Quelle gelegentlicher Frustration. Der Eclipse-Marktplatz enthält derzeit über 1.600 Lösungen, und von der Community bereitgestellte Plugins funktionieren möglicherweise wie angekündigt. Dennoch unterstützen Eclipse-Plugins über 100 Programmiersprachen und fast 200 Anwendungsentwicklungs-Frameworks.

Die meisten Java-Server werden ebenfalls unterstützt: Wenn Sie eine neue Serververbindung von Eclipse aus definieren, gelangen Sie zu einer Liste von Herstellerordnern, unter denen sich etwa 30 Anwendungsserver befinden, darunter neun Versionen von Apache Tomcat. Die kommerziellen Anbieter neigen dazu, ihre Angebote zusammenzufassen: Beispielsweise gibt es unter Red Hat JBoss Middleware nur einen Artikel, der WildFly- und EAP-Server-Tools sowie JBoss AS enthält.

Bearbeiten, Durchsuchen, Refactoring und Debuggen

Die ersten Erfahrungen eines Entwicklers mit Eclipse können beunruhigend oder sogar verwirrend sein. Dies liegt daran, dass Ihre erste Aufgabe darin besteht, sich an die konzeptionelle Architektur von Arbeitsbereichen, Perspektiven und Ansichten von Eclipse anzupassen, deren Funktionen von den von Ihnen installierten Plugins abhängen. Für die Entwicklung von Java-Servern verwenden Sie beispielsweise wahrscheinlich die Browserperspektiven Java, Java EE und Java. die Paket-Explorer-Ansicht; die Debugging-Perspektive; eine Team-Synchronisationsperspektive; Web-Tools; eine Datenbankentwicklungsperspektive; und eine Datenbank-Debugging-Perspektive. In der Praxis werden all diese Punkte sinnvoll, sobald Sie die gewünschten Ansichten öffnen.

In Eclipse gibt es häufig mehrere Möglichkeiten, eine bestimmte Aufgabe auszuführen. Sie können beispielsweise Code mit dem Projektexplorer und / oder der Java-Browsing-Perspektive durchsuchen. Was Sie wählen, ist eine Frage des Geschmacks und der Erfahrung.

Mithilfe der Java-Suchunterstützung können Sie Deklarationen, Verweise und Vorkommen von Java-Paketen, -Typen, -Methoden und -Feldern finden. Sie können auch den Schnellzugriff zum Suchen verwenden und Schnellansichten verwenden, um beispielsweise Klassenumrisse anzuzeigen.