IntelliJ vs. Eclipse und Netbeans

Warum? Was hebt denn d.M.n. IntelliJ von anderen IDEs ab? Habe bisher nur Netbeans und Eclipse ausprobiert, aktuell nutze ich Netbeans.

Ohne das jetzt in einen Flamewar ausarten zu lassen: Mit Eclipse bin ich nie richtig warm geworden, es wirkt für mich irgendwie zusammengestückelt und hakelig, man merkt (meiner Meinung nach), dass es eben auch eine Plattform sein soll, nicht nur eine IDE.
IntelliJ fühlt sich dagegen wie “aus einem Guss” an, man wollte eben nur eine IDE machen, aber dafür eine verdammt gute. Dabei ist es auch noch recht intelligent, macht Refactorings einfach, sieht gut aus (keine Ahnung, ob Eclipse inzwischen ein halbwegs vernünftiges Dark Theme hinbekommen hat) und kommt auch nicht (kaum?) in Zustände, in der sich IDE und Realität voneinander unterscheiden, was mir mit Eclipse andauernd passiert ist. Dabei nutze ich vielleicht 25% der Features, und entdecke immer wieder neue (z.B. viele in diesem Kurs genannte).

1 „Gefällt mir“

Da der Thread bereits kräftig derailed wurde, und ich davon ausgehe, dass das ganze in ein neues Thema verschoben wird:
Hat Beides seine Vor- und Nachteile. Ich denke IntelliJ ist in vielen Bereichen Eclipse überlegen. Dennoch beherrscht IntelliJ so viele grundlegende Funktionalitäten von Eclipse nicht. Auch weil die Entwickler meiner Erfahrung nach extrem stur sind und nur Ihre Sichtweise diskussionslos zulassen. Schade.

Generics? Nein! Java 11, Jigsaw? Nein! Einhaltung der JLS in grundlegenden Fragen? Nein!

Bezieht sich das auf Dinge, die IntelliJ nicht beherrscht bzw deren Entwickler nicht wollen?

Zumindest mir ist davon bisher nichts aufgefallen…O.o

Wirklich, hast du nie probiert ein Jigsaw Programm zu deployen? Sitzt seit Java 11 im Bugtracker bei denen. Keine Ahnung ob das mittlerweile mal behoben wurde. Selbst deren Beispielprojekt ist (oder hoffentlich war) nicht mal gestartet mit IntelliJ.

Abgesehen davon spreche ich auch größtenteils von grundlegenden Funktionen. Es sind häufig kleine Dinge, die zusammen die Masse ausmachen. Nehmen wir als Beispiel mal die nicht vorhandene Autocompletion von Konstruktoren, aber da könnte ich ewig herumreden. Einfach mal selber in Eclipse ausprobieren und den Unterschied bemerken. Eclipse macht immer genau das was Entwickler will, kein Schnick-Schnack.

2 „Gefällt mir“

Schon so einige, und niemals Probleme gehabt. Vielleicht aber auch immer zufällig den Bug verfehlt…
Welches Ticket meinst du?

Wo fehlt dir da welche Autocompletion? Konstruktoren lassen sich generieren, der passende Konstruktor wird nach new vorgeschlagen, passende Parameter werden eingesetzt, sofern vorhanden.

Ich habs grad verglichen (einfach nur ein List<String> strings = new ArrayList<>();), in IntelliJ bin ich da schneller (etwa zwei Tastendrücke) als in Eclipse. (und noch schneller mit n <ENTER> AL <ENTER> S <ENTER> <RECHTS><RECHTS><RECHTS> .va <ENTER><ENTER>, wie gleichwertiges in Eclipse geht, hab ich noch nicht rausgefunden…).

Ich hab grad keine Zeit und Muße, um das im Detail selbst auszuprobieren, deshalb: welche kleinen Dinge sind denn da so viel besser?

Das erstellen einer ArrayList ist jetzt nicht wirklich etwas wofür man eine IDE braucht, sonst kommt der nächste ums Eck mit 3 Sekunden schnellerem Start, was bei 200 Arbeitstagen auch 10 Minuten ausmacht.

Wenn man einen funktionalen Rich-Client im Businessumfeld erstellen möchte kommt man an Eclipse-RCP eigentlich kaum vorbei. Das ist eine Liga für sich. Und das entwickelt man dann eben in Eclipse.

Wenn man viel mit Modellierung zu tun hat, dann verwendet man die Tools die es für Eclipse gibt. EMF.

Das sind fundamental andere Anwendungsgebiete bei denen ich auf Eclipse setzen würde.

Die Short-Cuts, die man in Eclipse verwenden möchte, die muss man lernen und kennt sie dann. In Intellij ist es eben Alt+Insert + aussuchen und bestätigen. Letzteres ist einsteigerfreundlicher, der Profi kommt auch mit erstem zurecht.
Das Standard-Theme in Eclipse ist hell und ist ein schönes Theme. Bei Apple dominieren auch helle Themes. Dark-Themes sind eine Modeerscheinung die bald verschwinden werden.
Das Workspace-Konzept in Eclipse gefällt mir wesentlicher besser als das “Projekt”-Konzept in Intellij

Das sind aber eher Kleinigkeiten die von der Gewöhnung und dem persönlichen Geschmack abhängen.

Was für eine Version verwendest du denn? Bei mir kommt nach new AL nur ein Vorschlag. Eine Auswahl der drei Konstruktoren fehlt gänzlich. Selbst bei Klassen ohne Standardkonstruktor autovervollständigt er nur den Standardkonstuktor und streicht es dann just in rot als falsch an. Klar kann man dann mit entsprechender Tastenkombination eine eher schlecht als rechte „Hilfe“ zur Autovervollständigung dazu schalten. Heißt man muss auf dem zweiten Bildschirm immer die Docus aufschlagen um nach zu prüfen was man denn jetzt eigentlich will. Das Konzept von Konstruktoren ist in Eclipse dagegen tatsächlich vorhanden. Wie gesagt, für mich sind es diese selbstverständlichen kleinen Dinge, die ich bei IntelliJ gänzlich vermisse.

Ach ich liebe diese Flamewars - meine XBox ist viel schneller als deine PS4, aber ich habe dafür mehr Exclusiv-Spiele … bla bla

Ich habe seit Ewigkeiten (also ziemlich genau seit 2004) mit Eclipse gearbeitet und bin dieses Jahr im Februar zu IntelliJ gewechselt.

Ich wurde auf Arbeit von guten Freunden seit 2016 dazu gedrängt, IntelliJ zu nutzen. Sie haben mir in gefühlt jeder Mittagspause gesagt wie viel besser IntelliJ als Eclipse ist. Das hat nur dazu geführt, dass ich es erst recht nicht ausprobiert habe.
Dann bei der Entwicklung von “love is …” hat mich die neuste Version von Eclipse so geärgert, dass ich mir IntelliJ angeschaut habe [Probleme mit libgdx und der Android-Version] (immerhin ist das Android Studio auch nur ein IntelliJ). Und was soll ich sagen? Ich bin bei IntelliJ geblieben. Shortcuts kann man gerne aus Eclipse mit übernehmen, wenn man das will, sodass der Umstieg leichter fällt.
Warum bin ich bei IntelliJ geblieben? Nunja es läuft einfach. Neue Projekte habe ich aufgesetzt und es lief danach. Ich hätte gerne ein paar Features aus Eclipse und ein paar Features aus IntelliJ in einer IDE. Mich nervt zum Beispiel immer noch das nicht mehrere Projekte einfach mal wie in Eclipse als Baumstruktur in einer View angezeigt werden können.
Da ich auf Arbeit nun eh IntelliJ nutzen soll/muss (nur das wird offiziell unterstützt, wer andere IDEs nutzt, muss mit seinen Problemen selber klar kommen), werde ich so schnell auch nicht wieder zurück wechseln.

Ihr seht ich bin kein Verfechter für irgendeine IDE, ich will damit entwickeln können ohne das mir “Bäume” in den Weg gelegt werden.

1 „Gefällt mir“

Das kommt halt auf die Organisation an. Was in Eclipse ein Workspace ist, ist in IntelliJ halt ein Projekt. Was in Eclipse ein Projekt ist ist in IntelliJ ein Module. Von daher gesehen kannst du schon mehrere „Projekte“ in einer View haben. Nur ist man halt durch die Namensgebung dazu „verleitet präziser“ zu sein.

Anfangs fand ich das auch komisch - aber mittlerweile find ichs sehr sinnvoll. Will ich ein anderes Projekt auch offen haben, dann kann ich ja jederzeit eine zweite Instanz öffnen.

Ich hab mit Eclipse angefangen und war ein absoluter Fan. Doch IntelliJ ist schlichtweg besser. Es gibt nicht eine Sache die ich mir fehlt. Und hier auf Arbeit hatte ich auch recht schnell die Leute dazu bekommen IntelliJ zu verwenden. Nicht, dass ich missioniert hätte - nein, sie waren schlicht begeistert wie viel angenehmer es ist. Eines der besten Beispiele war Branch-Wechsel. Hat man mich komisch angeguckt als ich gemeint hab „check doch einfach den test-branch aus und teste es lokal“. Da Eclipse mind. 10-20min gebraucht hat um einen Branch zu wechseln, wollten meine Kollegen sowas natürlich vermeiden wo es nur geht. Bei mir war das eine Sache von 1-2min. Auch wurde gerne die Volltextsuche genutzt. In Intellij hast du dein Zeug in unter einer Sekunde gefunden, was bei Eclipse mehrere Sekunden gedauert hat.

Irgendwann hatte man mich gebeten, doch mal eine Präsentation auszuarbeiten, was besser/schlechter ist (die Idee kam von meinem damaligen Teamlead, nicht von mir). Und danach wollte jeder IntelliJ nutzen - keiner wollte mehr zurück.

Also meine Meinung dazu: IntelliJ ist schlichtweg die beste IDE die es gibt und Jetbrains sind Götter auf dem Gebiet.

ABER: mir persönlich ists wurscht wer was nimmt. Letztendlich ist es nichts anderes als ein Werkzeug und wer ein anderes Tool verwendet, der soll das auch tun.

Oh, das wäre mir im Leben nicht aufgefallen :smiley: Mir ist in Eclipse nicht mal aufgefallen, dass das geht…

Aber stimmt, da ist Eclipse wirklich manchmal (je nach Arbeitsweise) im Vorteil.

Grundsätzlich ist es wirklich so einfach: Workspace → Projekt, Projekt → Modul. Aber es gibt schon Unterschiede im Handling. Wenn ich in IntelliJ etwa ein neues Projekt erstelle (oder importiere), wird standardmäßig ein Projekt mit einem Modul erstellt - wodurch man vielleicht gar nicht weiß, dass es unterschiedliche Module gibt.
@Apo Mein erster Trick war es, ein „Empty Project“ zu erstellen und dann die Module zu öffnen/importieren/erstellen. Damit hatte ich meinen Eclipse Workflow ziemlich 1:1 nachgebaut.

Zum Thema: Ein großer Vorteil von IntelliJ liegt in den unterstützten Programmiersprachen und Tools. Ich bin auf IntelliJ umgestiegen, als ich noch Java entwickelt habe. Inzwischen bin ich mit JavaScript unterwegs und kann die selbe IDE verwenden und eine fast genauso gute Unterstützung erwarten. Das kann man von Eclipse leider nicht behaupten.

Das kenne ich - und ich habe mich wirklich ausführlich mit den Einstellungen und Features auseinandergesetzt. Neulich habe ich gelernt, dass man die Tastenkombinationen in allen (zulässigen) Kontexten ausführen kann. Beispiel: Strg + Shift + N (Suche nach Dateien) öffnen und danach Strg + Shift + I tippen, um eine Vorschau der Dateien zu bekommen (oder direkt aus dem Auswahlmenü Shift + F6 zum Umbenennen der Datei nutzen).

Hi,
also ich bin jetzt nach 13 Jahren+ (Eclipse) auf IDEA IntelliJ seit ca. Februar/März letzten Jahres umgestiegen.

Zum Thema Constructors:

  • Einfach mal in die Einstellungen in IntelliJ gehen; Editor->General->Code completion → Parameter-Info → Show Parameter Hints On completion

Highlights:

  • Suchfunktionen (schlicht nicht Vergleichbar mit Eclipse);
    • Zweimal Shift und ich kann nach Klassen/Objekten/Dateien suchen usw. oder explizit CMD+O => Nach Klassen usw.
    • CMD+Shift+F Suchen mit/OHNE Regex sofort Anzeige Ergebnis; wenn ich lediglich CMD-F verwende suche ich innerhalb einer Datei.
    • CMD+Shift+R Suchen und Ersetzen; CMD+R Suchen/Ersetzen innerhalb einer Datei
    • In Jeder Darstellung z.B. Projekt Baum einfach los tippen und es wird gesucht…
    • Came Case Eingaben funktionieren im Gegensatz zu Eclipse. (Ctrl-E in Eclipse bzw. CMD-E in IntelliJ)
    • Übernahme der Suchfunktionen in sog. Such Fenster…Navigation dann ähnlich wie in Eclipse mit „CTRL-.“ etc. kann dann aber im Editor Anpassungen machen und einfach mit CMD+ALT+Pfeil Runter zum nächsten Ergebnis springen und bleibe Trotzdem im Editor; So kann man sehr flüssig eine größere Menge Änderungen machen. (In Eclipse geht das nicht; Such-Fenster verliert Fokus? Oder habe ich was übersehen?)
    • Suchen und Ersetzen mit RegEx ist in Eclipse limitiert. z.B. Suche alle Attribute die mit einem Großbuchstaben anfangen? Ok RegEx kein Problem sprich suchen geht in Eclipse als auch in IDEA aber dann den ersten Buchstaben ersetzen geht in Eclipse schlicht nicht. In IntelliJ sehr wohl.
    • Suchfunktion auf Controller z.B. Spring Boot einfach Alt+CMD+O und End Punkt „/xml“ … OHNE zu wissen wie der Controller heißt…
  • Modul Erkennung bei Maven Multi Module Projekten automatisch nicht wie in Eclipse manuell immer wieder Import aufrufen damit es funktioniert (typisch bei einem switch von branch 1 nach branch 2 usw.)
  • Synchronisation mit dem Dateibaum wenn ich es brauche nicht wie in Eclipse alles oder nichts („Link with Editor“ auch nicht per Tastatur zu kriegen ok kann man manuell binden.)
  • Compile Modus funktioniert im Gegensatz zum „Auto Build“ von Eclipse vor allem und um längen schneller.
  • Code Completion im Bereich Streams / Lambdas deutlich besser bzw. funktioniert richtig.
  • Code Anzeige mit Parameter für Aufrufende Methoden; Auch in Streams sehr hilfreich
  • Git Support wirklich Nutzbar aus der IDE commit CMD+K Dialog; ALT-I commit; Shift-CMD-K Push; in Eclipse lediglich per Clickerei Nutzbar und nicht per Keyboard Ich habe es mehrfach versucht ;-(
    • Synchronisation mit der Platte funktioniert einfach OHNE Probleme. Eclipse hackt sehr oft bzw. (F5 bzw. Alt-F5 hilft auch nicht mehr).
  • Sprung / Erzeugung Java Klasse <=> Test Klasse einfach da OHNE Plugin.
  • Ausführung der Tests mit immer der gleichen Tasten Kombination egal welcher Art von Test Framework verwendet wird: JUnit 4, JUnit Jupiter, TestNG, Spock für Groovy nicht wie in Eclipse immer andere
  • Refactoring analysiert den Kontext besser als Eclipse
  • Hammer: Structual Search / Replacement Existiert schlicht nicht in Eclipse.
  • Code Inspection
  • Debugger Zeigt schon im Code die Werte der Variablen etc. an ohne explizit Watches/Expressions angeben zu müssen.
  • Automatische JavaDoc Fehleranzeige (ROT!) z.B. {@link XXX} wobei XXX falsch ist. In Eclipse: Kein Hinweis! Krieg ich erst im Build (z.B. auf der CI oder wenn ich denn mal lokal baue so denn Checkstyle/JavaDoc erzeugt werden.)
  • JUnit Jupiter funktioniert
  • Docker/Docker Compose Support
  • GitHub/JIRA/GitLab Support
  • ASCII Doctor / Markdown per Plugin um längen besser als in Eclipse.
  • Presentation Mode (genial für Workshops/Vorträge/Meetings)
  • Verschiedene Sprachen: Java, Groovy, Go, JavaScript (zumindest was ich bisher ausprobiert habe).
  • Ich verwende kein „Speichere Datei“ mehr in IntelliJ. Funktioniert einfach. In Eclipse bin ich schon ein paar mal drüber gefallen, dass ich schlicht vergessen hatte die Datei zu speichern (für commits/builds etc.).

Kauf Lizenz (Ultimate Edition):

  • Per Knopfdruck ein UML Diagramme
  • Per Knopfdruck ein Diagram aus der Datenbank mit Anbindung an selbige (separates Datenbank Tool benötige ich nicht mehr).
  • Detecting Duplicates (besserer Copy&Paste Detector)

Unklarheiten:

Generics/ JDK 11 / etc.

  • Die Aussagen verstehe ich nicht, da ich aktuell im Projekt auf JDK11 bin…? Generics? Vor allem die Aussage:

Dennoch beherrscht IntelliJ so viele grundlegende Funktionalitäten von Eclipse nicht

… Die da wären?

@TMII
Mit Jigsaw Projekt meinst Du ein Run Time Image via JLINK ?

Tipp für Umsteiger: Nicht versuchen mit Eclipse Tastatur Belegung in IntelliJ zu starten. Nutzt die IntelliJ Belegung (sprich den Default) und lernt das Zeug einfach. Ja am Anfang tut es weh :wink:

Gruß
Karl Heinz Marbaise

Und es sind eben diese kleinen, praktisch schwer erklärbaren Dinge. Versteh mich nicht falsch, offensichtlich verwende ich IntelliJ seit ein paar Jahren, auch privat. Ich will damit nur sagen: Es gibt kein Schwarz/Weiß bei einer „vs“-Frage. Eine Schwarz/Weiß Diskussion ist sinnlos.

Genau so wie IntelliJ so rechenlastig ist, dass mein Ultrabook von 11 Stunden Akkulaufzeit auf knapp unter 5 sinkt. Eclipse ist halt einfach nur ein passiver Texteditor dagegen - pro/con zugleich.

Kaum zu glauben, dass du mit Eclipse solange ausgehalten ist. Hat Google den Support für Eclipse doch schon vor langen Ewigkeiten eingestellt und Android Studio entwickelt, was auch echt spitze ist. Damals hatten die den Support von Eclipse nur zu früh eingestellt, bevor Android Studio ansatzweise stabil genug war. Aber gerade bei Android sieht man den Vorteil IntelliJ zu verwenden, da die Android Tools fantastisch eingebettet wurden, was wohl bei Eclipse nicht in der Form möglich war.

Ich hatte bei Eclipse früher mehrere unterschiedliche Projekte, die untereinander als Bibliotheken verlinkt waren. Das ging mit IntelliJ nicht mehr, zumindest nicht das ich eine Möglichkeit gefunden hatte. Man kann irgendwie nur Module untereinander verlinken, aber nicht Projektübergreifende Bibliotheken erstellen. Stattdessen muss man die Projekte über VCS miteinander verbinden.
Schlimmer wird es dann noch mit Projekten die Branches von Github sind… das ist in Eclipse etwas mehr straight forward.

Das bekommt man auch mit Strg+P. Ist trotzdem nur ein rudimentärer Ersatz für wie es Eclipse macht.

Ja. Vor allem wenn man versucht die Beispielprojekte zu laden. Deswegen wurde eines meiner Projekte eingestampft, weil die Oberfläche nicht mehr weiterentwickelt werden konnte, weil Oracle JFX entfernt hat. Ist aber allgemein ein Problem sowohl mit Oracles Entscheidungen als auch der Unternehmensphilosophie die Projekte immer auf den Stand der Zeit halten zu müssen.

Das mit Strg+P ist was anderes. Das sieht so aus (im Praktischen benötige ich das aber nicht, da Parameter hints eingestellt sind):

idea-ctrl-p

Das folgende Zeigt in IDEA OHNE obige Konfiguration:

So jetzt das Ganze mit entsprechender Konfiguration:

idea-code-completion-configured

Und jetzt mal zum harten Vergleich Eclipse(gleiches Projekt etc.)

Leider hat hier Eclipse richtig dickes Problem, da es mir nämlich einen völlig falschen Vorschlag für den Context macht…wenn ich dieses Problem einmal ignoriere, dann sehe ich keinen Unterschied zu IntelliJ…

Mal abgesehen, dass ich das gezeigte Beispiel in IDEA anders angehen würde.

@TMII Zu Oracle JFX gibt es schon länger Open JFX zzgl. OpenJDK 11 als LTS ist das aus meiner Sicher kein wirkliches Problem…oder man geht eben zu Oracle macht das Portemonnaie auf und zieht eine hübsche Menge Scheine raus…

Zum auf dem Stand halten, kann man recht gut über eine CI …mache ich im aktuellen Projekt auch Builds aktuelle schon mit JDK 12 …JDK13 +EA kommt in kürze dazu…?..

Ich hatte bei Eclipse früher mehrere unterschiedliche Projekte, die untereinander als Bibliotheken verlinkt waren. Das ging mit IntelliJ nicht mehr, zumindest nicht das ich eine Möglichkeit gefunden hatte. Man kann irgendwie nur Module untereinander verlinken, aber nicht Projektübergreifende Bibliotheken erstellen. Stattdessen muss man die Projekte über VCS miteinander verbinden.
Schlimmer wird es dann noch mit Projekten die Branches von Github sind… das ist in Eclipse etwas mehr straight forward.

Das ist die Workspace Resolution in Eclipse, die leider ein „wenig“ Buggy ist (Fehlerhafter Classpath test/prod code etc.) …Dazu nutzt man da so Sachen wie Maven/Gradle etc. aber auf keinen Fall VCS

Gruß
Karl Heinz Marbaise

1 „Gefällt mir“

Danke für den Hinweis! :slight_smile: Gibts das schon immer? Ist mir nie aufgefallen…

Wenn man sich Javadoc anzeigen lässt, ist das zumindest in der Darstellung identisch zu Eclipse.

JavaFX vom JDK zu trennen find zumindest ich den richtigen Schritt, warum man deshalb ein Projekt einstellt, kann ich nicht verstehen.
Die Entwicklung von JavaFX ist ja keineswegs eingestellt, sondern läuft weiter - nur ist es jetzt als Dependency einbindbar, und man muss nicht für das richtige JRE auf dem Zielsystem sorgen, hab ich bisher als deutlich angenehmer empfunden.

Und das „immer auf dem Stand bleiben“ hat ist nicht viel schlimmer als vorher, wenn man auf LTS-Versionen bleibt. Die Zwischen-Versionen bieten hat den Vorteil, dass man nicht alle X Jahre den großen Sprung machen muss, sondern alle 6 Monate einen kleinen. Man kann ja durchaus so fahren, dass man bei LTS bleibt, aber auf allen Zwischenversionen testet, das war vorher nicht möglich.

Es gibt aber auch gute Listen und Tools (und Einstellungen) für den Umstieg *Schleichwerbung* :smiley:

Du kannst afaik keine Projekte referenzieren. Aber du kannst mehrere Projekte erstellen und die selben Module importieren/verwenden. Du kannst in Project SettingsLibraries aber auch direkt Java Ordner oder Maven Projekte als Dependency hinzufügen (wahrscheinlich eher das, was du suchst):

image

1 „Gefällt mir“