In IntelliJ mögliche Dinge, die in Eclipse nicht möglich sind?

365

Ich habe von Leuten gehört, die so oder so gewechselt haben und auf den einen oder anderen schwören.

Als großer Eclipse-Fan, aber ohne die Zeit gehabt zu haben, IntelliJ auszuprobieren, bin ich daran interessiert, von IntelliJ-Benutzern, die "Ex-Eclipsianer" sind, einige spezifische Dinge zu hören, die Sie mit IntelliJ tun können, die Sie mit Eclipse nicht tun können.

Hinweis : Dies ist weder eine subjektive Frage noch dazu gedacht, sich in einen heiligen IDE-Krieg zu verwandeln. Bitte stimmen Sie alle Flammenköder-Antworten ab .

Epaga
quelle
1
Ich bin von Eclipse über Netbeans zu IntelliJ rubyMine gewechselt und jeder war ein "Schritt nach oben" gegenüber dem vorherigen. Ich kann nicht genau sehen, was genau (daher ist dies keine Antwort), da es eine Weile gedauert hat, aber der größte Sprung war zu rubyMine, das nur "integrierter" war und mehr Funktionalität zu haben schien und die Dinge einfacher darstellte Weg zu benutzen. Es schien auch Edelsteinprobleme, Abhängigkeiten und dergleichen besser zu handhaben als andere.
Junkie
Ich möchte von IntelliJ zu Eclipse wechseln (wegen der Android-Entwicklung), daher sind diese Fragen und Antworten sehr nützlich.
Chrom
8
@chrome Android wechselt jetzt in die andere Richtung: developer.android.com/sdk/installing/studio.html
Daniel Alexiuc
1
Ich habe so viele dieser Postings wie ich kann und alle Antworten weisen auf Dinge hin, die tatsächlich verdunkelt werden können, manchmal einfacher IMHO. Ich möchte das Gefühl haben, mit Intellij mein Geld verdient zu haben, aber der einzige Grund, warum ich es gekauft habe, war die automatische Vervollständigung von Javascript. Ich hätte Webstorm billiger kaufen können, wenn das alles ist, was ich bekomme. Es gibt wahrscheinlich ein Eclipse-Plugin, das das Gleiche tut. Ehrlich gesagt denke ich, dass Eclipse konsistenter ist und ich vermisse die Perspectives-Funktion.
dres

Antworten:

185

STRG-Klick funktioniert überall

Ein STRG-Klick, der Sie dorthin bringt, wo das angeklickte Objekt definiert ist, funktioniert überall - nicht nur in Java-Klassen und -Variablen im Java-Code, sondern auch in der Spring-Konfiguration (Sie können auf Klassennamen, Eigenschaft oder Bean-Namen klicken) im Ruhezustand (Sie) Sie können auf den Namen oder die Klasse der Eigenschaft oder die enthaltene Ressource klicken. Sie können mit einem Klick von der Java-Klasse zu der Stelle navigieren, an der sie als Spring- oder Hibernate-Bean verwendet wird. Das Klicken auf das enthaltene JSP- oder JSTL-Tag funktioniert ebenfalls. Wenn Sie bei gedrückter Strg-Taste auf die JavaScript-Variable oder -Funktion klicken, gelangen Sie an den Ort, an dem sie definiert ist, oder es wird ein Menü angezeigt, wenn mehr als ein Ort vorhanden ist, einschließlich anderer JS-Dateien und JS-Code in HTML oder JSP Dateien.

Autocomplete für viele Sprachen

Überwintern

Autocomplete in HSQL-Ausdrücken, in der Hibernate-Konfiguration (einschließlich Klassen-, Eigenschafts- und DB-Spaltennamen) in der Spring-Konfiguration

<property name="propName" ref="<hit CTRL-SPACE>"

und es zeigt Ihnen eine Liste der Bohnen, die Sie in diese Eigenschaft injizieren können.

Java

Sehr intelligente automatische Vervollständigung in Java-Code:

interface Person {
    String getName();
    String getAddress();
    int getAge();
}
//---
Person p;
String name = p.<CTRL-SHIFT-SPACE>

und es zeigt Ihnen NUR getName () , getAddress () und toString () (nur sie sind nach Typ kompatibel) und getName () steht an erster Stelle in der Liste, da es einen relevanteren Namen hat. Die neueste Version 8, die sich noch in EAP befindet, verfügt über eine noch intelligentere automatische Vervollständigung.

interface Country{
}
interface Address {
    String getStreetAddress();
    String getZipCode();
    Country getCountry();
}
interface Person {
    String getName();
    Address getAddress();
    int getAge();
}
//--- 
Person p;
Country c = p.<CTRL-SHIFT-SPACE>

und es wird es stillschweigend automatisch vervollständigen

Country c = p.getAddress().getCountry();

Javascript

Intelligente automatische Vervollständigung in JavaScript.

function Person(name,address) {
    this.getName = function() { return name };
    this.getAddress = function() { return address };
}

Person.prototype.hello = function() {
    return "I'm " + this.getName() + " from " + this.get<CTRL-SPACE>;
}

und es werden NUR getName () und getAddress () angezeigt , unabhängig davon, wie * Methoden Sie in anderen JS-Objekten in Ihrem Projekt erhalten, und wenn Sie bei gedrückter Strg- Taste auf this.getName () klicken, gelangen Sie dorthin , wo diese definiert ist, auch wenn Es gibt einige andere Funktionen von getName () in Ihrem Projekt.

HTML

Habe ich die automatische Vervollständigung und das Klicken bei gedrückter Strg-Taste in Pfaden zu Dateien wie <script src = "", <img src = "" usw. erwähnt?

Autocomplete in HTML-Tag-Attributen. Autovervollständigung im Stilattribut von HTML-Tags, sowohl Attributnamen als auch Werte. Autocomplete auch in Klassenattributen.
Geben Sie <div class = "<CTRL-SPACE> ein und es wird eine Liste der in Ihrem Projekt definierten CSS-Klassen angezeigt. Wählen Sie eine aus, klicken Sie bei gedrückter Strg-Taste darauf und Sie werden dorthin weitergeleitet, wo sie definiert ist.

Einfaches Higlighting in der eigenen Sprache

Die neueste Version verfügt über eine Sprachinjektion, sodass Sie deklarieren können, dass Ihr benutzerdefiniertes JSTL-Tag normalerweise JavaScript enthält und JavaScript darin hervorgehoben wird.

<ui:obfuscateJavaScript>function something(){...}</ui:obfuscateJavaScript>

Indizierte Suche über alle Projekte hinweg.

Sie können Find Usages für jede Java-Klasse oder -Methode verwenden. Dort wird ermittelt, wo sie verwendet wird, einschließlich nicht nur Java-Klassen, sondern auch Hibernate, Spring, JSP und anderen Orten. Umbenennen der Methode Refactoring benennt die Methode nicht nur in Java-Klassen um, sondern überall, einschließlich Kommentaren (es kann nicht sicher sein, ob die Zeichenfolge in Kommentaren wirklich der Methodenname ist, daher wird gefragt). Und es wird nur Ihre Methode finden, selbst wenn es Methoden einer anderen Klasse mit demselben Namen gibt. Gute Integration in die Quellcodeverwaltung (unterstützt SVN Änderungslisten? IDEA unterstützt sie für jede Quellcodeverwaltung), die Möglichkeit, einen Patch mit Ihren Änderungen zu erstellen, damit Sie Ihre Änderungen an andere Teammitglieder senden können, ohne sie festzuschreiben.

Verbesserter Debugger

Wenn ich HashMap im Überwachungsfenster des Debuggers betrachte, sehe ich eine logische Ansicht - Schlüssel und Werte, als ich es das letzte Mal in Eclipse gemacht habe, wurden Einträge mit Hash und nächsten Feldern angezeigt - ich debugge HashMap nicht wirklich , ich möchte nur schauen es Inhalt.

Validierung der Spring & Hibernate-Konfiguration

Die Spring- und Hibernate-Konfiguration wird direkt beim Bearbeiten überprüft, sodass ich den Server nicht neu starten muss, um zu wissen, dass ich den Klassennamen falsch geschrieben oder einen Konstruktorparameter hinzugefügt habe, damit meine Spring-CFG ungültig ist.

Beim letzten Versuch konnte ich Eclipse unter Windows XP x64 nicht ausführen.

und es wird Ihnen person.name oder person.address vorschlagen . Klicken Sie bei gedrückter Strg- Taste auf person.name , um zur Methode getName () der Person- Klasse zu gelangen.

Geben Sie dort Pattern.compile("");put \\ ein, drücken Sie STRG-LEERTASTE und sehen Sie hilfreiche Hinweise, was Sie in Ihren regulären Ausdruck einfügen können. Sie können hier auch die Sprachinjektion verwenden - definieren Sie Ihre eigene Methode, die Zeichenfolgenparameter verwendet, deklarieren Sie im Dialogfeld "IntelliLang-Optionen", dass Ihr Parameter ein regulärer Ausdruck ist - und Sie erhalten dort auch eine automatische Vervollständigung. Es ist unnötig zu erwähnen, dass falsche reguläre Ausdrücke hervorgehoben werden.

Andere Eigenschaften

Es gibt nur wenige Funktionen, von denen ich nicht sicher bin, ob sie in Eclipse vorhanden sind oder nicht. Zumindest jedes Mitglied unseres Teams, das Eclipse verwendet, verwendet jedoch auch ein Zusammenführungswerkzeug, um lokale Änderungen mit Änderungen aus der Quellcodeverwaltung zusammenzuführen, normalerweise WinMerge. Ich brauche es nie - das Zusammenführen in IDEA ist genug für mich. Mit 3 Klicks kann ich eine Liste der Dateiversionen in der Quellcodeverwaltung sehen, mit 3 weiteren Klicks kann ich frühere Versionen oder frühere und aktuelle vergleichen und möglicherweise zusammenführen.

Es kann angegeben werden, dass ich alle .jars im WEB-INF\libOrdner benötige , ohne jede Datei einzeln auszuwählen. Wenn also jemand eine neue .jar in diesen Ordner schreibt, wird sie automatisch abgerufen .

Oben erwähnt sind wahrscheinlich 10% dessen, was es tut. Ich benutze Maven, Flex, Swing, EJB und viele andere Dinge nicht, daher kann ich nicht sagen, wie es ihnen hilft. Aber es tut.

Pavel Feldman
quelle
26
Die beiden Beispiele zum automatischen Vervollständigen von Java-Code funktionieren in Eclipse identisch. Könnte jemand mit mehr Vertretern bitte nur die Java-Beispiele löschen?
Craig P. Motlin
9
Die meisten Ihrer Beispiele sind in Eclipse entweder direkt oder über Plugins von Drittanbietern verfügbar. Ich kenne niemanden, der ein externes Tool für die SVN-Zusammenführung in Eclipse verwendet. Für Spring / Hibernate / Javascript-Editoren (und Autocomplete) gibt es Plugins von Drittanbietern. Was Regex und JSP EL betrifft, hast du mich geschlagen :)
Yoni
1
Das Jboss Tools-Plugin fügt die automatische Vervollständigung von Hibernate- und JSF-Ausdrücken hinzu.
Damo
4
Für die Eclipse-Debugging-Ansicht gibt es eine Option, um den Inhalt der Sammlungen anstelle der Implementierungsdetails anzuzeigen. Bei Listen und Sets wird deren Inhalt angezeigt. Bei Karten wird eine Liste der Schlüssel-Wert-Paare angezeigt. Es ist auch möglich, benutzerdefinierte Anzeigen einzurichten.
Deterb
1
Eclipse 3.7 (Indigo) vervollständigt auch Klassennamen in der Spring-Konfiguration automatisch.
Stivlo
81

Es gibt nur einen Grund, warum ich Intellij und nicht Eclipse verwende: Benutzerfreundlichkeit

Egal, ob es sich um Debugging, Refactoring oder automatische Vervollständigung handelt. Intellij ist viel einfacher zu verwenden, da konsistente Tastenkombinationen, verfügbare Optionen, wo Sie danach suchen usw. In Bezug auf die Funktionen wird es für Intellij schwierig sein, mit Eclipse Schritt zu halten Letzteres verfügt über viel mehr Plugins als Intellij und ist leicht erweiterbar.

amit
quelle
10
Es ist intelligent und verdammt schnell. Dies summiert sich zu vielen Usability-Funktionen. Das Durchlaufen einer Unterklasse oder Implementierungsklasse, das Suchen im Pfad, das Finden von Verwendungen usw. erfolgt so schnell. Die automatische Vervollständigung erfolgt inline, nur eine Registerkarte fügt sie ein. Die automatische Vervollständigung ist auch klug, nur keine reinen Vorschläge, aber die IDE denkt an Namen usw. für Sie.
Ravindranath Akila
Es gibt mehr als nur einen Grund, IntelliJ zu verwenden. Benutzerfreundlichkeit steht nicht einmal ganz oben auf der Liste. IntelliJ bietet mehr Funktionen als Eclipse. IntelliJ hat insgesamt weniger Plugins, aber mehr 'Qualitäts'-Plugins. Diese Antwort ist also trotz der positiven Stimmen falsch.
Software Engineer
2
@EngineerDollery Ich würde nicht sagen, dass es "falsch" ist, da amit sagte "Es gibt nur einen Grund, warum ich Intellij und nicht Eclipse verwende", nicht "Es gibt nur einen Grund , Intellij und nicht Eclipse zu verwenden".
Max Nanasy
54

Wahrscheinlich geht es nicht darum, was getan werden kann / nicht, sondern wie .

Zum Beispiel haben beide einen Editor, der von Dock-Panels für Projekt, Klassenpfad, Ausgabe, Struktur usw. umgeben ist. Wenn ich jedoch in Idea anfange, all diese Ausfälle automatisch einzugeben, kann ich mich auf den Code selbst konzentrieren. In Eclipse bleiben alle diese Bereiche geöffnet, sodass mein Editorbereich sehr verkleinert ist, etwa 1/5 des gesamten sichtbaren Bereichs. Also muss ich die Maus greifen und klicken, um in diesen Bereichen zu minimieren. Dies den ganzen Tag zu tun, ist eine sehr frustrierende Erfahrung in Eclipse.

Das genaue Gegenteil passiert mit dem Ansichtsausgabefenster. In Idea führt das Ausführen eines Programms das Ausgabefenster / -fenster aus, um die Ausgabe des Programms anzuzeigen, selbst wenn es zuvor minimiert wurde. In Eclipse muss ich erneut mit der Maus nach der Registerkarte "Ausgabe" suchen und darauf klicken, um meine Programmausgabe anzuzeigen, da das Ausgabefenster / -fenster wie alle anderen Fenster nur ein weiteres ist, in Idea jedoch behandelt wird eine besondere Art: "Wenn der Benutzer sein Programm ausführen möchte, ist es sehr wahrscheinlich, dass er die Ausgabe dieses Programms sehen möchte!" Es scheint so natürlich, wenn ich es schreibe, aber Eclipse schlägt in diesem grundlegenden Konzept der Benutzeroberfläche fehl.

Wahrscheinlich gibt es dafür eine Verknüpfung in Eclipse (Ausgabefenster beim Bearbeiten automatisch ausblenden und beim Ausführen des Programms automatisch anzeigen), aber wie bei einigen anderen Funktionen muss die Verknüpfung in Foren, Online-Hilfe usw. gesucht werden, während in Idea etwas mehr " natürlich".

Dies kann für fast alle Funktionen wiederholt werden, die beide haben, Autovervollständigung, Zeilenumbruch, schnelle Dokumentationsansicht, alles. Ich denke, die Benutzererfahrung ist in Idea weitaus angenehmer als in Eclipse. Dann wird das Motto "Mit Vergnügen entwickeln" wahr.

Eclipse bearbeitet schnellere größere Projekte (+300 Jars und +4000 Klassen), und ich denke, IntelliJ Idea 8 arbeitet daran.

Das alles ist natürlich subjektiv. Wie können wir die Benutzererfahrung messen?

OscarRyz
quelle
18
In Eclipse können Sie Strg-M drücken, um das Bearbeitungsfenster zu minimieren / zu minimieren, oder auf die Editor-Registerkarte doppelklicken - das hilft sehr
Scott Stanchfield
Wow ... vielen Dank. Es wäre sehr hilfreich, wenn Eclipse eine Möglichkeit hätte, dies zu wissen (neben dem Lesen des Hotkey-Spickzettel). Vielen Dank. Gibt es eine Möglichkeit, zum Ausgabefenster zu wechseln?
OscarRyz
ALT-SHIFT-Q öffnet ein Show View-Fenster ... C ist für die Konsole ALT-SHIFT-Q, C ist die Verknüpfung, um zur Konsole zu gelangen.
Instantsoup
7
Strg + Umschalt + L zeigt Ihnen eine Liste der im aktuellen Kontext verfügbaren Hotkeys.
Dan Berindei
3
Doppelklicken Sie auf einen Unterfenstertitel - JEDES Unterfenster - und Ihr Unterfenster wird im Vollbildmodus ausgeblendet. Wiederholen Sie den Vorgang zur Wiederherstellung. Minimieren Sie das Bedienfeld mit der Konsole. Wenn die Ausgabe erfolgt, wird die Konsole sofort angezeigt.
Ian
44

Idea 8.0 hat das schöne ctrl+shift+spacex 2, das die folgende automatische Vervollständigung ausführt:

 City city = customer.<ctrl-shift-space twice>

beschließt zu

 City city = customer.getAddress().getCity();

durch eine beliebige Anzahl von Ebenen von Gettern / Setzern.

krosenvold
quelle
27
ziemlich cool, obwohl mehr als zwei Levels ziemlich nach Code riechen ...;)
Epaga
33

Vergessen Sie nicht "mit Zwischenablage vergleichen".

Etwas, das ich in IntelliJ ständig benutze und das in Eclipse kein Äquivalent hat.

Daniel Alexiuc
quelle
6
Auch der Verlauf der Zwischenablage.
Kimball Robinson
3
Diese Funktion kann zu Eclipse in Form eines Plugins namens AnyEditTools (im Markt erhältlich) hinzugefügt werden
Yaniv
Ich wusste nicht einmal über die Zwischenablage Bescheid, bis ich dies las. Ausgezeichnet!
NodeDad
Hat
31

Meine Lieblingsverknüpfung in IntelliJ, die in Eclipse keine Entsprechung hat (die ich gefunden habe), heißt "Gehe zu Symbol". CTRL-ALT-SHIFT-NMit dieser Option können Sie Klassen, Methodennamen, Variablennamen usw. aus dem gesamten Projekt eingeben und aufteilen.

Paul Morie
quelle
10
Strg-Shift-G in Eclipse
dres
Strg-Shift-G ist nicht das, was Paul beschrieben hat. Es ist eher wie "Strg + O", sondern für alle Klassen, Methoden und Variablen des Projekts
Tano
27

Ich habe versucht, wegen des neuen Android Studio zu IntelliJ zu wechseln. Aber ich bin jetzt sehr enttäuscht. Ich verwende Eclipse mit dem Code Recommanders Plugin. Hier ist ein einfaches Beispiel, warum Eclipse so großartig ist:

Ich möchte eine neue erstellen SimpleTimeZone. SimpleTimeZonehat keinen Konstruktor mit null Argumenten.

Ctrl + Space in Eclipse

Geben Sie hier die Bildbeschreibung ein

Ctrl + Space in IntelliJ

Geben Sie hier die Bildbeschreibung ein

In IntelliJ bekomme ich keine Informationen darüber, welche Art von Konstruktoren SimpleTimeZonehat.

Nach Enterin Eclipse

Geben Sie hier die Bildbeschreibung ein

Ich erhalte den zuvor ausgewählten Konstruktor mit vordefinierten Variablennamen. Und ich kann die Art jedes Arguments sehen. Mit Code Recommanders errät Eclipse den richtigen Konstruktor anhand der zuvor definierten Variablentypen im aktuellen Bereich und füllt den Konstruktor mit diesen Variablen.

Nach Enterin IntelliJ passiert nichts. Ich bekomme einen leeren Konstruktor. Ich muss drücken Ctrl + P, um die erwarteten Argumente zu sehen.

Geben Sie hier die Bildbeschreibung ein

passsy
quelle
25

Wenn Sie den Cursor auf eine Methode haben, CTRL+SHIFT+Iwird die Methodenimplementierung angezeigt. Wenn es sich bei der Methode um eine interfaceMethode handelt, können Sie die Implementierungen mit Aufwärts- und Abwärtspfeilen durchlaufen:

Map<String, Integer> m = ...
m.contains|Key("Wibble");

Wo | ist (zum Beispiel) wo sich Ihr Cursor befindet.

oxbow_lakes
quelle
4
Wenn Sie in Eclipse (zumindest in der von mir verwendeten Version) den Cursor auf den Namen einer Methode setzen und STRG + T drücken, wird der gesamte Hierarchiebaum von der obersten Oberfläche bis zu den Blattimplementierungen angezeigt und Sie können springen zu einem von ihnen.
Yuval
2
In Eclipse können Sie auch Strg + Klicken Sie auf den Methodennamen, um zur Methodendefinition / -implementierung zu springen (abhängig vom Kontext)
qualidafial
8
Der Punkt ist, dass Sie nicht tatsächlich zur Implementierung navigieren. Es wird nur Popup gezeigt, genau wie Javadoc usw.
Jackrabbit
1
In Eclipse
Victor
24

IntelliJ hat einige ziemlich fortgeschrittene Code-Inspektionen (vergleichbar, aber anders als FindBugs).

Obwohl ich ein FindBugs-Plugin bei der Verwendung von IntelliJ ernsthaft vermisse (Die Eclipse / FindBugs-Integration ist ziemlich cool).

Hier ist eine offizielle Liste der von IntelliJ unterstützten CodeInspections

EDIT: Endlich gibt es ein Findbugs-Plugin für IntelliJ. Es ist noch ein bisschen Beta, aber die Kombination aus Code Inspections und FindBugs ist einfach fantastisch!

Mo.
quelle
yeah findbugs ist einer der wenigen statischen Code-Analysatoren, die tatsächlich praktische Fehler finden, die ehrlich und gut sind. :)
Epaga
Haben Sie ein konkretes Beispiel für die Codeprüfung? Was für Dinge kann es erkennen?
Epaga
Ein weiterer Link zu Inspektionen: hamletdarcy.blogspot.com/2008/04/…
Mo.
8
Ich finde, dass die Code-Inspektion von IntelliJ mehr Fehler findet, nützliche Schnellkorrekturen bietet, Warnungen geben und Zeilen korrigieren kann, während Sie sie eingeben. (Sie müssen die Datei nicht speichern und sie muss nicht kompiliert werden.) Diese Feinheiten machen es praktischer, Fehler so schnell wie möglich zu beheben.
Peter Lawrey
16

Weit, weit, weit mehr Refactorings.

Tom
quelle
15

Eine Sache, die ich regelmäßig benutze, ist das Setzen eines Haltepunkts, aber dann das Steuern dessen, was er tut. (Bei meinem letzten Job haben fast alle anderen Eclipse verwendet ... Ich erinnere mich, dass ich überrascht war, dass niemand in Eclipse herausfinden konnte, wie das geht.)

Beispielsweise kann der Haltepunkt nicht tatsächlich angehalten werden, sondern nur eine Nachricht an der Konsole protokollieren. Das heißt, ich muss meinen Code nicht mit "System.out.println (...)" verunreinigen und dann neu kompilieren.

jgindin
quelle
2
Sie können dies mit bedingten Haltepunkten in Eclipse tun, aber es ist ein bisschen frech .eg. true
HaveAGuess
Ich denke, mit IntelliJ können Sie komplexere Trefferzahlen festlegen, nicht wahr?
Kimball Robinson
3
Es ist jetzt in Eclipse einfacher zu finden - es zeigt jetzt Bedingungen in der Haltepunktansicht an (damit Sie wissen, dass sie verfügbar sind). Sie können nach Anzahl brechen, beliebigen Code eingeben, System.out.println("here"); falsedrucken, aber nicht brechen (letzte Anweisung ist ein boolescher Ausdruck, der bestimmt, ob wir brechen sollen)
Scott Stanchfield
15

Es gibt viele Dinge, die die Idee auf viel einfachere Weise löst, oder es gibt kein Äquivalent:

  • Autocomplete-Aktionen: Ausführen ctrl+shift+a Wenn Sie eine Ideenaktion über die Tastatur aufrufen können, ohne sich an die Tastenkombination zu erinnern ... Denken Sie an Gnome-Do oder Launchy in Windows, und Sie haben die Idee! Diese Funktion unterstützt auch CamelCasing-Abkürzungen;)

  • Regal: Ermöglicht es Ihnen, einige Codeteile einfach auseinander zu halten und sie dann über den Diff-Viewer zu überprüfen.

  • Lokale Geschichte: Es ist viel besser verwaltet und einfacher.

  • SVN-Anmerkungen und Verlauf: Einfacher zu überprüfen, und Sie können den Verlauf auch nur für einen solchen Teil einer gesamten Quelldatei anzeigen.

  • Überall automatisch vervollständigen, z. B. in den Fenstern Ausdrucksausdruck und Haltepunktbedingung.

  • Maven-Integration ... viel, viel einfacher und gut integriert.

  • Refaktoren, die viel näher an der Hand liegen, z. B. Einfügen von Schleifen, Umschließen / Umwandeln, Umbenennen und Hinzufügen von Variablen.

  • Finden Sie viel mächtig und gut organisiert. Auch bei großen Projekten

  • Sehr stabil, um mit mehreren Zweigen eines großen Projekts gleichzeitig zu arbeiten (als ehemaliger Bugfixer von 1,5 GB durch Zweigstellenquellen und die Notwendigkeit, gleichzeitig in ihnen zu arbeiten, zeigte die Idee seine grundsoliden Fähigkeiten).

  • Sauberere und einfachere Oberfläche ...

  • Und einfacher nur mit der Tastatur zu bedienen, ohne die Notwendigkeit, die Maus für viele einfache Aufgaben zu verwenden, Zeit zu sparen und sich mehr auf den Code zu konzentrieren ... wo es darauf ankommt!

Und jetzt, als OpenSource ... wird die Idea-Benutzerbasis exponentiell wachsen.

Serginho
quelle
2
Autocomplete-Aktionen = schneller Zugriff in Eclipse; Ich sehe nicht, wie lokale Geschichte einfacher sein kann als in Eclipse ...
Scott Stanchfield
Wie Scott angedeutet hat, ist es Strg + 3. Die Inhaltsunterstützung ist auch verfügbar, wenn Ausdrücke ausgewertet und bedingte Haltepunkte festgelegt werden. Ich bin mir nicht sicher, wie viel näher die genannten Refactorings liegen als die von Strg + 1 und Strg + 2 vorgeschlagenen. Ein Großteil des Restes klingt subjektiv.
Nitind
14

Strukturelles Suchen und Ersetzen.

Suchen Sie beispielsweise nach etwas wie:

  System.out.println($string$ + $expr$);

Dabei ist $ string $ ein Literal und $ expr $ ein Ausdruck vom Typ my.package.and.Class. Ersetzen Sie ihn dann durch:

  $expr$.inspect($string$);
Darron
quelle
1
Tatsächlich können Sie in Ihrem Code nach dem Typ casts / () - operator / suchen, was mit der Nur-Text-Suche praktisch unmöglich ist
Karl
13

Mein Timing mag in Bezug auf diesen Thread etwas abweichen, aber ich musste nur antworten.

Ich bin ein großer Eclipse-Fan - ich benutze es seit seinem ersten Auftritt. Ein Freund sagte mir damals (vor mehr als 10 Jahren), dass es ein Spieler sein würde. Er hatte recht.

Jedoch! Ich habe gerade angefangen, IntelliJ zu verwenden, und wenn Sie keine Änderungslisten gesehen oder verwendet haben, verpassen Sie den Programmierhimmel.

Die Möglichkeit, meine geänderten Dateien (in meinem Entwicklungszweig ala clearcase) zu verfolgen, war etwas, wonach ich in einem Plugin für Eclipse gesucht habe. Intellij verfolgt alle Ihre Änderungen für ein einziges Commit, ganz einfach. Sie können geänderte Dateien mit benutzerdefinierten Listen isolieren. Ich verwende das für Konfigurationsdateien, die lokal eindeutig sein müssen, aber beim Synchronisieren oder Vergleichen mit dem Repository ständig markiert werden. Wenn ich sie in einer Änderungsliste aufführe, kann ich sie überwachen, aber ordentlich verstauen, damit ich mich auf die tatsächlichen Ergänzungen konzentrieren kann Ich mache.

Außerdem gibt es ein Commit Log-Plugin, das einen Text aller Änderungen für diejenigen SCCS ausgibt, die nicht in Ihre Bug-Tracking-Software integriert sind. Durch Einfügen des Protokolls in den Arbeitsverlauf eines Tickets werden die Dateien, ihre Version, Datum / Uhrzeit und die Verzweigung / Tags erfasst. Es ist verdammt cool.

All dies könnte über Plugins (oder zukünftige Verbesserungen) in Eclipse unterstützt werden, wette ich; Intellij macht dies jedoch zu einem Kinderspiel.

Schließlich freue ich mich sehr über die Mainstream-Liebe zu diesem Produkt - die Tastenanschläge, also ist es schmerzhaft, aber es macht Spaß.

G Craig
quelle
Ich mag die Funktion der Änderungslisten sehr. Es ähnelt einem VCS-unabhängigen Satz von Patches / Regalen, an denen Sie unabhängig arbeiten können und die ihnen zugeordnet werden können. Sie können auch Ihrem Issue-Tracker zugeordnet werden. Sie haben einen lokalen Verlauf (wie ein Mini-VCS), der Ihre Änderungen verfolgt, während Sie fast auf Zeilenebene arbeiten, sodass Sie bei Bedarf zu fast jedem Zeitpunkt zurückkehren können. Wenn Sie Aufgaben wechseln, merkt sich alle IDEA den Status der IDE für die neue Aufgabe und stellt geöffnete Dateien, Fensterpositionen usw. wieder her
Sylvanaar
Changelisten sind eigentlich eine SVN-Funktion. Mit IntelliJ können Sie sie nur dort anzeigen und verwalten, wo die Eclipse SVN-Plugins dies nicht tun.
Neil Traft
12

Der IntelliJ-Debugger verfügt über eine sehr praktische Funktion namens "Ausdruck auswerten", die bei weitem besser ist als der Eclipses-Anhänger. Es hat die vollständige Code-Vervollständigung und ich halte es für allgemein "nützlicher".

Mo.
quelle
8
Eclipse verfügt außerdem über einen Ausdrucksauswerter, der die Code-Vervollständigung bietet. Gehen Sie zu Fenster -> Ansicht anzeigen -> Debuggen -> Anzeigen. Wenn Sie an einem Haltepunkt im Debugger angehalten werden, können Sie beliebige Ausdrücke in dieser Anzeigeansicht auswerten.
Laz
11

Für mich sind es tausend kleine Dinge. Einige der Makros, das GUI-Layout im Allgemeinen in Eclipse finde ich schrecklich. Ich kann in Eclipse nicht mehrere Projekte in verschiedenen Fenstern öffnen. Ich kann mehrere Projekte öffnen, aber dann tauscht das ansichtsbasierte System beim Wechseln von Dateien eine Reihe von Dingen gegen mich aus. Die Code-Inspektionen von IntelliJ scheinen besser zu sein. Die Popup-Helfer zur Behebung häufiger Probleme sind nett. Viele einfache Usability-Dinge wie die Seitenleiste, in der ich über einen Hot Spot schweben kann, und die mir jede implementierende Unterklasse einer Methode oder die Methode, die ich implementiere, und von wo aus sagt.

Wann immer ich Eclipse verwenden oder beobachten musste, scheint Eclipse die meisten Dinge zu tun, die ich in IntelliJ tun kann, aber es dauert länger und es ist klobiger.

Chris Kessel
quelle
9

Variable einführen. ( Ctrl+Alt+Vunter Windows, Cmd+Alt+Vunter OSX)

Nehmen wir an, Sie rufen eine Methode auf. service.listAllPersons() Hit Ctrl+Alt+Vund Enter, und eine Variable für den Rückgabewert des Methodenaufrufs wird eingefügt:

List<Person> list = service.listAllPersons();

Spart Ihnen die Eingabe und Sie müssen den Rückgabetyp der aufgerufenen Methode nicht überprüfen. Besonders nützlich bei der Verwendung von Generika, z

new ArrayList<String>()

[Variable einführen]

ArrayList<String> stringArrayList = new ArrayList<String>();

(Natürlich können Sie den Namen der Variablen leicht ändern, bevor Sie sie treffen. Enter)

rlovtang
quelle
13
Dies ist Strg + 2 L in Eclipse.
Micke
2
Schön, ich wusste es nicht und keiner der Eclipse-Benutzer, die ich gefragt habe. Ist diese Funktion schon lange Teil von Eclipse?
Rlovtang
3
Ziemlich lange Zeit ... Wenn Sie Quickfix verwenden control+1(die offensichtlichste Schlüsselbindung der Welt, wie?), Schlägt dies Dinge vor, die Sie an der aktuellen Cursorposition tun können, ähnlich wie bei IDEA. Es werden beispielsweise "Lokal zuweisen", "Feld zuweisen" und andere Optionen aufgelistet. control+2, List die Abkürzung dafür.
Scott Stanchfield
Wenn Sie in Eclipse ausgewählt haben, können Sie ctrl+2, Lden Typ der erstellten Variablen entweder in den Typ auf der rechten Seite (standardmäßig) oder in einen beliebigen Supertyp ändern: Der Variablentyp kann mit TAB ausgewählt werden.
Gaetan
8

IntelliJ unterstützt Intellisense und Refactoring von Code in jspx-Dokumente.

Krosenvold
quelle
Können Sie klarstellen, was Sie unter Intellisense verstehen? Eclipse hat auch eine automatische Vervollständigung, aber meinst du noch etwas anderes?
Epaga
Eclipse hat keine automatische Vervollständigung in AFAIK-Jspx-Dokumenten. In regulären jsp ja, jspx nein.
Krosenvold
3
Er bedeutet, dass Ihre JSP korrekt aktualisiert wird, wenn Sie eine JSP haben, die auf eine Eigenschaft in einem POJO verweist, und Sie die Eigenschaft umbenennen. Die JSP-Unterstützung von IntelliJ unterstützt Eclipse / WTP!
Erickson
2
Ich kann die automatische Vervollständigung von Eclipse nicht in JSP-EL-Ausdrücken ausführen, Punkt. JSP oder JSPX, es spielt keine Rolle, es ist nur ahnungslos. IntelliJ behandelt Tagx und JSPX wie erwartet: wie ein Tag oder eine JSP-Datei.
Erickson
Es ist schön zu sehen, wie Eclipse-Benutzer die Dinge abstimmen, die sie nicht mögen. Wenn meine Beobachtungen falsch sind, antworten Sie bitte mit einem Kommentar. Sag mir, wie das in Eclipse geht!
Krosenvold
7

Für mich ist die Maven-Unterstützung von IDEA, insbesondere in Version 9, unübertroffen. Die schnelle Synchronisierung des Projekts mit dem Maven-Modell ist einfach fantastisch und macht die Entwicklung angenehm.

mdma
quelle
6

Intellij hat ein weit überlegenes SVN-Plug-In als Subversive oder Subclipse und es funktioniert! Über die Zeit, die wir mit dem Zusammenführen von Quelldateien mit Eclipse verschwendet haben, muss nicht nachgedacht werden. Dies ist kein Problem mit IntelliJ, da das Plugin Ihnen viel mehr hilft.

Auch das Subclipse-Plugin ist unzuverlässig - wir haben regelmäßig Fälle, in denen das Plugin nicht glaubt, dass von anderen Entwicklern Code in SVN eingecheckt wurde, aber es gibt - der CI-Server hat sie verarbeitet!

Tony Ruddock
quelle
Genau, SVN-Unterstützung ist in der Idee hervorragend, während Subclipse / Subversive fehlerhaft, ungeschickt und nicht sehr zuverlässig sind. Gleiches gilt für Git, eigentlich erinnere ich mich an keine vernünftige Git-Integration für Eclipse und IntelliJ handhabt es sehr gut
Kamil Mikolajczyk
Persönlich denke ich, dass Sie Ihre gesamte Versionskontrolle über die Befehlszeile durchführen sollten, auch wenn Ihre IDE dies kann. Wenn Sie dies in der Befehlszeile tun, wissen Sie später, wie Sie das Skript ausführen können, was Ihre Entwicklung erheblich beschleunigen könnte. Manchmal bitten mich meine Mitarbeiter um Hilfe beim Subclipse- oder Git-Eclipse-Plugin. Ich fordere sie einfach auf, die Verwendung einzustellen und dies in der Befehlszeile zu tun.
msknapp
4

VIM Emulator. Dieses Plugin bietet eine nahezu vollständige vi / vim / gvim-Emulation beim Bearbeiten von Dateien in IDEA. Folgende Funktionen werden unterstützt:

  • Bewegungstasten
  • Löschen / Ändern
  • Modusbefehle einfügen
  • Markierungen
  • Register
  • VIM rückgängig machen / wiederholen
  • Befehle für den visuellen Modus
  • Einige Ex-Befehle
  • Einige: Optionen festlegen
  • Vollständige reguläre VIM-Ausdrücke zum Suchen und Suchen / Ersetzen
  • Makros
  • Diagramme
  • Befehlszeilenverlauf
  • Suchverlauf
  • Jumplisten
  • VIM-Hilfe

Einige Kommentare zu diesem Plugin von http://plugins.jetbrains.net/plugin/?id=164

Ich kann aufgrund dieses Plugins nicht sehen, dass ich jemals zu einer anderen Idee zurückkehren werde. Das Beste aus beiden Welten ... Super!. Das hat mir in allen IDEs gefehlt.
Maciek Kreft
quelle
Ich stimme zu, ich könnte nicht ohne mein IdeaVim-Plugin leben, aber um fair zu sein, gibt es ein Vim-Plugin für Eclipse mit dem treffenden Namen VimPlugin ( vimplugin.org )
Keith
3
Vwrapper ist ein weiteres Vim Eclipse-Plugin. Und es funktioniert sogar noch besser als das Idea Vim-Plugin (Wiederholungstasten funktionieren). Vwrapper übernimmt jedoch weder das Suchen und Ersetzen über die Befehlszeile (obwohl die Suche hervorragend funktioniert) noch das interaktive Definieren von Makros. Einverstanden, dass Vim-Unterstützung in einer IDE unerlässlich ist. Würde Eclipse oder Idea ohne es nicht verwenden!
Brent Faust
1
Das Viableplugin.com ist sehr gut für Eclipse. Ich verwende auch den Intellij One und stelle fest, dass der Intellij One unter bestimmten Umständen gelegentlich im Editor hängen bleibt und nicht auf Befehle reagiert.
John Lemp
3

Ein paar andere Dinge:

  • Weitergabe von Parametern / Ausnahmen beim Ändern der Methodensignatur, sehr praktisch zum Aktualisieren von Methoden tief im Aufrufstapel
  • SQL-Code-Validierung in den Zeichenfolgen, die als Argumente an JDBC-Aufrufe übergeben wurden (und das gesamte neu gebündelte Sprachinjektionsmaterial)
  • implementiert in / überschrieben in Symbolen für Schnittstellen und Klassen (und deren Methoden) und der intelligenten Implementierungsnavigation (Strg + Alt + Klicken oder Strg + Alt + B)
  • Verknüpfung zwischen den EJB 2.1-Schnittstellen und Bean-Klassen (einschließlich Refactoring-Unterstützung); alt, aber immer noch immens wertvoll bei der Arbeit an älteren Projekten
Andrei
quelle
2

Zwei Dinge, die IntelliJ tut, die Eclipse nicht tut, sind für mich sehr wertvoll:

Methodentrennzeichen: Diese schwachen grauen Linien zwischen den Methoden machen viel Code lesbarer

Text-Anti-Aliasing: Lässt Code in der IDE so gut aussehen

Yalestar
quelle
2
Ich fand IntelliJs Anti-Aliasing tatsächlich viel schlimmer als Eclipse. Dies war jedoch vor einigen Versionen von IntelliJ. Wurde es verbessert?
Laz
Ich verwende eine proportionale Verdana-Schriftart, die meiner Meinung nach besser aussieht als Anti-Aliasing.
Peter Lawrey
2

Eine sehr nützliche Funktion ist die Möglichkeit, ein Maven-Reaktorprojekt teilweise so zu erstellen, dass nur die Teile enthalten sind, die Sie benötigen.

Um dies ein wenig klarer zu machen, betrachten Sie den Fall einer Sammlung von WAR-Dateien, bei denen viele gemeinsame Ressourcen (z. B. JavaScript, Spring-Konfigurationsdateien usw.) mithilfe von verwendet werden Overlay-Technik gemeinsam genutzt werden. Wenn Sie an einer Webseite arbeiten (die in Jetty ausgeführt wird) und einen Teil des Overlay-Codes ändern möchten, der in einem separaten Modul enthalten ist, müssen Sie normalerweise Jetty stoppen, den Maven-Build ausführen, Jetty erneut starten und fortsetzen. Dies ist bei Eclipse und fast jeder anderen IDE der Fall, mit der ich gearbeitet habe. Nicht so bei IntelliJ. Mit den Projekteinstellungen können Sie definieren, welche Facette von welchem ​​Modul Sie in einen Hintergrund-Build aufnehmen möchten. Folglich erhalten Sie einen Prozess, der nahtlos erscheint. Sie ändern so gut wie jeden Code im Projekt und er ist sofort verfügbar, nachdem Sie den Browser aktualisiert haben.

Sehr ordentlich und sehr schnell.

Ich könnte mir nicht vorstellen, ein Frontend in so etwas wie YUI-Backing auf DWR / SpringMVC ohne es zu codieren.

Gary Rowe
quelle
2

Präambel zu meiner Antwort: Meine Verwendung von Eclipse ist begrenzt. Wir brauchten eine Java-IDE, um sowohl unter Windows als auch unter Mac zu arbeiten, und der Mac-Port wurde von Tag zu Tag langsamer. Das war vor Jahren und ich bin sicher, dass es jetzt in Ordnung ist. Aber das hat uns dazu gebracht, zu IntelliJ zu wechseln, und wir waren damit zufrieden.

Nun zu meiner Antwort: Ein großer Unterschied, den ich noch nicht erwähnt habe, ist, dass der technische Support mit IntelliJ / Jet Brains besser ist. Wir senden eine E-Mail an JetBrains und erhalten in weniger als einer Stunde eine endgültige Antwort. Das Suchen nach Antworten auf Eclipse-Probleme führt zu den üblichen Antworten "Du dummer Idiot" (normalerweise eine kleine Anzahl der Antworten) zusammen mit der viel größeren Anzahl aufschlussreicher, hilfreicher Antworten. Aber es braucht einige Sortierung, um die richtige Antwort zu erhalten.

Jim Dodd
quelle
Eclipse ist Open Source. Niemand wird dafür bezahlt, Fragen zu beantworten oder Fehler zu beheben. Kaufen Sie eine kommerzielle Eclipse-basierte IDE, z. B. MyEclipse, und erhalten Sie Unterstützung für Ihr Geld. Schnelle Statistiken: Ich habe JetBrains 56 Fehler gemeldet, von denen 23 geschlossen sind. Von 65 an Eclipse 33 gemeldeten Fehlern sind geschlossen. Der einzige Unterschied besteht darin, dass JetBrains Fehler etwas schneller als Eclipse behebt.
Victor
2

Etwas, das ich in IntelliJ ständig benutze, ist das Refactoring während der Eingabe. Ich habe Klassen aus einem Ausdruck (ursprünglich in Eclipse geschrieben) mit beiden IDEs neu geschrieben und etwa 40% weniger Tastenanschläge / Mausklicks verwendet, um dieselben Klassen in IntelliJ als in Eclipse zu schreiben.

Ich würde Eclipse erst verwenden wollen, wenn sie so viel Refactoring mit unvollständigen Codeteilen unterstützen.

Hier ist eine längere Liste der Funktionen in IntelliJ 8.0 / 8.1 [ http://www.jetbrains.com/idea/features/index.html]

Peter Lawrey
quelle
2

Es gibt eine Sache, die IntelliJ viel besser macht als Eclipse und die Ihre Taschen leer macht!

Ich bevorzuge es jedoch und ein großer Vorteil gegenüber Eclipce ist die Art und Weise, wie es mit dem Dateisystem synchronisiert wird, für große Projekte und langsame Computer (ja, in Arbeitsumgebungen sind die PCs viel langsamer als unsere zu Hause). Eclipse scheint dies zu tun kämpfen, wo IntelliJ schneller zu sein scheint, wenn auch mit einer langsameren anfänglichen Indizierungszeit.

Die IntelliJ Community Edition macht die Verwendung natürlich kostenlos, aber Sie möchten bald diese zusätzlichen Umgestaltungen und netten kleinen Extras, die nicht in der CC-Edition enthalten sind.

Meiner Meinung nach ist es im Allgemeinen eine bessere Benutzererfahrung, aber ob es die Kosten wert ist, ist eine Frage, die jeder Entwickler selbst beantworten muss.

Aber seien wir dankbar, dass wir derzeit bis zu drei großartige IDEs für Java haben, wobei NetBeans immer besser wird.

Shawn Vader
quelle
3
IntelliJ Ultimate Edition ist zwar nicht kostenlos, aber als Entwickler verwende ich meine IDE etwa 8 bis 10 Stunden am Tag. Ich sehe seinen vernünftigen Preis also nicht als Fehler !!
Romain Linsolas
2

Datenflussanalyse : Interprozedurale Rückflussanalyse und Vorwärtsflussanalyse, wie hier beschrieben . Meine Erfahrungen basieren auf der Community Edition, die Datenflussanalysen ziemlich gut durchführt. Es ist in einigen Fällen fehlgeschlagen (es wurde abgelehnt, etwas zu tun), wenn der Code sehr komplex ist.

Ville Laitila
quelle
2

Zuallererst liebe ich Intellij. Es gibt mindestens hundert Merkmale, die der Eclipse fehlen. Ich spreche von Größenordnungen in Bezug auf Zuverlässigkeit und Intelligenz, die keine Übertreibung beschreiben kann, wenn es um Refactoring, Umbenennung, Umzug und andere bereits erwähnte Dinge geht.

ABER es gibt eine Sache, die Intellij nicht zulässt, was Eclipse tut. Es ist nicht möglich, mehrere Projekte gleichzeitig unter derselben VM auszuführen.

Wenn Sie separate Projekte für Front, Middle, Core, Agents usw. haben, in denen alle miteinander interagieren müssen, können Sie afaik nicht schnell gleichzeitig ändern und debuggen. Die einzige Möglichkeit, mit der ich derzeit fertig werde, besteht darin, Ant-Skripte zu verwenden, um Jars in abhängigen Projekten bereitzustellen und zu aktualisieren, oder Maven zu verwenden.

Mit Eclipse können mehrere Projekte unter einer ide vm-Instanz debuggt werden.

blicket
quelle
4
Dies sollte in Dinge gepostet worden sein, die Eclipse kann, was IntelliJ nicht kann , nicht umgekehrt.
Neil Traft
IntelliJ macht das ohne Probleme. Diese Antwort ist einfach falsch.
Software Engineer