Des choses possibles dans IntelliJ qui ne sont pas possibles dans Eclipse?

365

J'ai entendu des gens qui sont passés d'une façon ou d'une autre et qui ne jurent que par l'un ou l'autre.

Étant un grand fan d'Eclipse mais n'ayant pas eu le temps d'essayer IntelliJ, je suis intéressé à entendre des utilisateurs d'IntelliJ qui sont des "ex-Eclipsiens" des choses spécifiques que vous pouvez faire avec IntelliJ que vous ne pouvez pas faire avec Eclipse.

Remarque : Ce n'est pas une question subjective ni du tout destinée à devenir une guerre sainte IDE. S'il vous plaît downvote toutes les réponses aux appâts de flamme .

Epaga
la source
1
Je suis passé d'Eclipse à Netbeans à IntelliJ rubyMine et chacun était un «pas en avant» par rapport au précédent. Je ne peux pas voir quoi spécifiquement (donc ce n'est pas une réponse) car c'était un moment mais le plus grand saut a été vers rubyMine qui était juste plus "intégré" et semblait avoir plus de fonctionnalités et présenter les choses de manière plus simple. à utiliser de façon. Il semblait également gérer les problèmes de gemmes, les dépendances et autres mieux que d'autres.
junky
Je veux passer d'intelliJ à Eclipse (à cause du développement Android), donc ce type de questions et réponses est très utile.
chrome
8
@chrome Android passe maintenant dans l'autre sens: developer.android.com/sdk/installing/studio.html
Daniel Alexiuc
1
J'ai autant de ces messages que je peux et toutes les réponses pointent vers des choses qui peuvent réellement être faites éclipse, parfois plus facile à mon humble avis. Je veux me sentir comme j'ai eu ma valeur avec intellij mais la seule raison pour laquelle je l'ai acheté était la saisie semi-automatique Javascript. J'aurais pu acheter Webstorm moins cher si c'est tout ce que j'obtiens. Il existe probablement un plugin Eclipse qui fait la même chose aussi. Franchement, je pense que l'éclipse est plus cohérente et la fonctionnalité Perspectives me manque.
dres

Réponses:

185

CTRL-click fonctionne partout

CTRL-click qui vous amène à l'endroit où l'objet cliqué est défini fonctionne partout - non seulement dans les classes Java et les variables dans le code Java, mais dans la configuration Spring (vous pouvez cliquer sur le nom de la classe, ou la propriété, ou le nom du bean), dans Hibernate (vous peut cliquer sur le nom ou la classe de la propriété, ou sur la ressource incluse), vous pouvez naviguer en un seul clic de la classe Java jusqu'à son utilisation en tant que bean Spring ou Hibernate; en cliquant sur la balise JSP ou JSTL incluse, cela fonctionne également, ctrl-cliquez sur la variable ou la fonction JavaScript vous amène à l'endroit où elle est définie ou affiche un menu s'il y a plus d'un endroit, y compris d'autres fichiers .js et le code JS en HTML ou JSP des dossiers.

Saisie semi-automatique pour de nombreuses langues

Hiberner

Saisie semi-automatique dans les expressions HSQL, dans la configuration Hibernate (y compris les noms de classe, de propriété et de colonne DB), dans la configuration Spring

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

et il vous montrera la liste de ces beans que vous pouvez injecter dans cette propriété.

Java

Saisie semi-automatique très intelligente en code Java:

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

et il vous montre UNIQUEMENT getName () , getAddress () et toString () (seulement ils sont compatibles par type) et getName () est le premier dans la liste car il a un nom plus pertinent. La dernière version 8 qui est toujours en EAP a une saisie automatique encore plus intelligente.

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>

et il le complétera automatiquement en silence pour

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

Javascript

Saisie semi-automatique intelligente en 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>;
}

et il affiche UNIQUEMENT getName () et getAddress () , peu importe comment obtenir les méthodes * que vous avez dans d'autres objets JS dans votre projet, et ctrl-cliquez sur this.getName () vous amène là où celui-ci est défini, même si il existe d'autres fonctions getName () dans votre projet.

HTML

Ai-je mentionné la saisie semi-automatique et le ctrl-clic dans les chemins d'accès aux fichiers, comme <script src = "", <img src = "", etc.?

Saisie semi-automatique dans les attributs de balise HTML. Saisie semi-automatique dans l'attribut de style des balises HTML, à la fois les noms et les valeurs d'attribut. Saisie semi-automatique dans les attributs de classe également.
Tapez <div class = "<CTRL-SPACE> et il vous montrera la liste des classes CSS définies dans votre projet. Choisissez-en une, ctrl-cliquez dessus et vous serez redirigé vers l'endroit où elle est définie.

Mise en surbrillance simple de la langue

La dernière version a une injection de langue, vous pouvez donc déclarer que votre balise JSTL personnalisée contient généralement JavaScript et qu'elle mettra en évidence JavaScript à l'intérieur.

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

Recherche indexée sur tous les projets.

Vous pouvez utiliser Find Usages de n'importe quelle classe ou méthode Java et il trouvera où il est utilisé, y compris non seulement les classes Java mais aussi Hibernate, Spring, JSP et d'autres endroits. Rename Method refactoring rename method non seulement dans les classes Java mais n'importe où, y compris les commentaires (il ne peut pas être sûr si la chaîne dans les commentaires est vraiment le nom de la méthode, donc il le demandera). Et il ne trouvera que votre méthode même s'il existe des méthodes d'une autre classe du même nom. Bonne intégration du contrôle de source (SVN prend-il en charge les listes de modifications? IDEA les prend en charge pour chaque contrôle de source), possibilité de créer un correctif avec vos modifications afin que vous puissiez envoyer vos modifications à un autre membre de l'équipe sans les valider.

Débogueur amélioré

Quand je regarde HashMap dans la fenêtre de surveillance du débogueur, je vois une vue logique - clés et valeurs, la dernière fois que je l'ai fait dans Eclipse, il montrait des entrées avec hachage et champs suivants - je ne débogue pas vraiment HashMap , je veux juste regarder son contenu.

Validation de la configuration Spring & Hibernate

Il valide la configuration Spring et Hibernate dès que vous le modifiez, donc je n'ai pas besoin de redémarrer le serveur pour savoir que j'ai mal orthographié le nom de la classe, ou ajouté un paramètre constructeur afin que mon cfg Spring ne soit pas valide.

La dernière fois que j'ai essayé, je n'ai pas pu exécuter Eclipse sur Windows XP x64.

et il vous suggérera person.name ou person.address . Ctrl-cliquez sur person.name et il vous dirigera vers la méthode getName () de la classe Person .

Tapez Pattern.compile("");put \\ là, appuyez sur CTRL-ESPACE et voyez des conseils utiles sur ce que vous pouvez mettre dans votre expression régulière. Vous pouvez également utiliser l'injection de langue ici - définissez votre propre méthode qui prend le paramètre de chaîne, déclarez dans la boîte de dialogue des options IntelliLang que votre paramètre est une expression régulière - et cela vous donnera également la saisie semi-automatique. Inutile de dire qu'il met en évidence les expressions régulières incorrectes.

Autres caractéristiques

Il y a peu de fonctionnalités dont je ne suis pas sûr qu'elles soient présentes dans Eclipse ou non. Mais au moins chaque membre de notre équipe qui utilise Eclipse, utilise également un outil de fusion pour fusionner les modifications locales avec les modifications du contrôle de source, généralement WinMerge. Je n'en ai jamais besoin - fusionner avec IDEA me suffit. En 3 clics, je peux voir la liste des versions de fichiers dans le contrôle de code source, en 3 autres clics, je peux comparer les versions précédentes, ou précédente et actuelle et éventuellement fusionner.

Il permet de spécifier que j'ai besoin de tous les .jars dans le WEB-INF\libdossier, sans choisir chaque fichier séparément, donc quand quelqu'un valide un nouveau .jar dans ce dossier, il le récupère automatiquement.

Mentionné ci-dessus représente probablement 10% de ce qu'il fait. Je n'utilise pas Maven, Flex, Swing, EJB et beaucoup d'autres trucs, donc je ne peux pas dire comment ça aide avec eux. Mais c'est le cas.

Pavel Feldman
la source
26
Les deux exemples de code java à saisie automatique fonctionnent de manière identique dans eclipse. Quelqu'un avec plus de représentants pourrait-il supprimer uniquement les exemples java s'il vous plaît?
Craig P. Motlin
9
La plupart de vos exemples sont disponibles dans Eclipse, directement ou via des plugins tiers. Je ne connais personne qui utilise un outil externe pour la fusion svn dans Eclipse. Pour les éditeurs spring / hibernate / javascript (et la saisie semi-automatique), il existe des plugins tiers. Quant à regex et jsp EL, vous m'avez battu :)
Yoni
1
Le plugin Jboss Tools ajoute la saisie semi-automatique des expressions Hibernate et JSF.
Damo
4
Pour la vue de débogage d'éclipse, il existe une option pour afficher le contenu des collections plutôt que les détails de l'implémentation. Pour les listes et les ensembles, il affichera leur contenu. Pour les cartes, il affichera une liste de paires clé-valeur. Il est également possible de configurer des affichages personnalisés.
deterb
1
Eclipse 3.7 (Indigo), complète également automatiquement les noms de classe dans la configuration Spring.
stivlo
81

Il n'y a qu'une seule raison pour laquelle j'utilise l'intellij et non l'éclipse: la convivialité

Qu'il s'agisse de débogage, de refactoring, d'auto-complétion. Intellij est beaucoup plus facile à utiliser avec des raccourcis clavier cohérents, des options disponibles où vous les recherchez, etc. Côté fonctionnalités, il sera difficile pour intellij de rattraper Eclipse, car le ce dernier a beaucoup plus de plugins disponibles qu'intellij, et est facilement extensible.

Amit
la source
10
Il est intelligent et sacrément rapide. Cela s'ajoute à de nombreuses fonctionnalités d'utilisation. Le passage à une sous-classe ou à une classe d'implémentation, à la recherche dans le chemin, à la recherche d'utilisations, etc. se produit si rapidement. La saisie semi-automatique s'effectue en ligne, un simple onglet l'insérera. La saisie semi-automatique est également intelligente, tout simplement pas de simples suggestions, mais l'IDE pense à des noms, etc. pour vous.
Ravindranath Akila
Il y a plus d'une raison d'utiliser IntelliJ. L'utilisabilité n'est même pas en tête de liste. Il y a plus de fonctionnalités dans IntelliJ qu'Eclipse. IntelliJ a moins de plugins au total, mais plus de plugins de «qualité». Donc, cette réponse, malgré les votes positifs, est fausse.
Ingénieur logiciel
2
@EngineerDollery Je ne dirais pas qu'il est « faux », puisque Amit a déclaré : « Il n'y a qu'une seule raison pour laquelle je l' utilise IntelliJ et non éclipse », et non « Il n'y a qu'une seule raison d' utiliser IntelliJ et non éclipse ».
Max Nanasy
54

La question n'est probablement pas de savoir ce qui peut / ne peut pas être fait, mais comment .

Par exemple, les deux ont un éditeur entouré de panneaux d'ancrage pour le projet, le chemin de classe, la sortie, la structure, etc. Dans éclipse, tous ces panneaux restent ouverts, ce qui laisse ma zone d'édition très réduite, environ 1/5 de la zone totale visible. Je dois donc saisir la souris et cliquer pour minimiser dans ces panneaux. Faire cela toute la journée est une expérience très frustrante en éclipse.

La chose exactement inverse se produit avec la fenêtre de sortie de la vue. Dans Idea, l'exécution d'un programme amène la fenêtre / le panneau de sortie pour voir la sortie du programme même si elle a été minimisée de façon perverse. Dans eclipse, je dois saisir à nouveau ma souris et rechercher l'onglet de sortie et cliquer dessus pour afficher la sortie de mon programme, car la fenêtre / le panneau de sortie est juste un autre, comme tous les autres fenêtres, mais dans Idea, il est traité dans une manière spéciale: "Si l'utilisateur veut exécuter son programme, il est très probable qu'il veut voir la sortie de ce programme!" Cela semble si naturel quand je l'écris, mais l'éclipse échoue dans ce concept d'interface utilisateur de base.

Il y a probablement un raccourci pour cela dans eclipse (masquer automatiquement la fenêtre de sortie lors de l'édition et l'afficher automatiquement lors de l'exécution du programme), mais comme certaines autres dizaines de fonctionnalités, le raccourci doit être recherché dans les forums, l'aide en ligne, etc. tandis que dans Idea est un peu plus " Naturel".

Cela peut être répété pour presque toutes les fonctionnalités des deux, saisie semi-automatique, retour à la ligne, affichage rapide de la documentation, tout. Je pense que l'expérience utilisateur est beaucoup plus agréable dans Idea que dans Eclipse. Puis la devise devient réalité "Développer avec plaisir"

Eclipse gère des projets plus grands et plus rapides (+300 jars et +4000 classes) et je pense qu'IntelliJ Idea 8 y travaille.

Tout cela est bien sûr subjectif. Comment mesurer l'expérience utilisateur?

OscarRyz
la source
18
dans eclipse, vous pouvez appuyer sur control-m pour min / max la fenêtre d'édition, ou double-cliquez sur son onglet éditeur - cela aide beaucoup
Scott Stanchfield
Wow ... merci beaucoup. Ce serait très utile si eclipse avait un moyen de le savoir (à part lire la feuille de triche des raccourcis clavier) Merci beaucoup. Existe-t-il un moyen de passer à la fenêtre de sortie?
OscarRyz
ALT-SHIFT-Q affiche une fenêtre Afficher la vue ... C est pour la console ALT-SHIFT-Q, C est le raccourci pour accéder à la console.
Instantsoup
7
Ctrl + Shift + L vous montre une liste de raccourcis clavier disponibles dans le contexte actuel.
Dan Berindei
3
Double-cliquez sur le titre d'une sous-fenêtre - N'IMPORTE QUELLE sous-fenêtre - et votre sous-fenêtre s'éteint en plein écran. Recommencez pour la restauration. Réduisez le panneau avec la console, puis lorsque la sortie se produit, la console apparaît instantanément.
Ian
44

Idea 8.0 a le joli ctrl+shift+spacex 2 qui effectue la saisie semi-automatique suivante:

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

décide de

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

à travers un certain nombre de niveaux de getters / setters.

krosenvold
la source
27
assez cool bien que quoi que ce soit plus de deux niveaux est tout à fait l'odeur du code ...;)
Epaga
33

N'oubliez pas "comparer avec le presse-papiers".

Quelque chose que j'utilise tout le temps dans IntelliJ et qui n'a pas d'équivalent dans Eclipse.

Daniel Alexiuc
la source
6
En outre, l'historique du presse-papiers.
Kimball Robinson
3
Cette fonctionnalité peut être ajoutée à eclipse sous la forme d'un plugin appelé AnyEditTools (trouvé sur le marché)
Yaniv
Je ne connaissais même pas l'histoire du presse-papiers avant de lire ceci. Excellent!
NodeDad
M'a
31

Mon raccourci préféré dans IntelliJ qui n'a pas d'équivalent dans Eclipse (que j'ai trouvé) s'appelle «Aller au symbole». CTRL-ALT-SHIFT-Nvous permet de commencer à taper et à regrouper des classes, des noms de méthode, des noms de variables, etc., à partir de l'ensemble du projet.

Paul Morie
la source
10
ctrl-shift-G dans éclipse
dres
ctrl-shift-G n'est pas ce que Paul a décrit .. est plus comme "ctrl + O" mais pour toutes les classes, méthodes et variables du projet
Tano
27

J'ai essayé de passer à IntelliJ à cause du nouveau Android Studio. Mais je suis très déçu maintenant. J'utilise Eclipse avec le plugin Code Recommanders . Voici un exemple simple pourquoi Eclipse est si génial:

Je veux en créer un nouveau SimpleTimeZone. SimpleTimeZonen'a pas de constructeur avec zéro argument.

Ctrl + Space dans Eclipse

entrez la description de l'image ici

Ctrl + Space dans IntelliJ

entrez la description de l'image ici

Dans IntelliJ, je ne reçois aucune information sur le type de constructeur SimpleTimeZone.

After Enterdans Eclipse

entrez la description de l'image ici

J'obtiens le constructeur précédemment sélectionné rempli de noms de variables prédéfinis. Et je peux voir le type de chaque argument. Avec Code Recommanders, Eclipse devine le bon constructeur par les types de variables précédemment définis dans la portée actuelle et remplit le constructeur avec ces variables.

Après Enterdans IntelliJ, rien ne se passe. Je reçois un constructeur vide. Je dois appuyer Ctrl + Ppour voir les arguments attendus.

entrez la description de l'image ici

passsy
la source
25

Si vous avez le curseur sur une méthode, une CTRL+SHIFT+Iimplémentation de la méthode apparaîtra. Si la méthode est une interfaceméthode, vous pouvez utiliser les flèches haut et bas pour parcourir les implémentations:

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

Où | est (par exemple) où se trouve votre curseur.

oxbow_lakes
la source
4
En fait, dans Eclipse (au moins la version que j'utilise), lorsque vous placez votre curseur sur le nom d'une méthode et appuyez sur CTRL + T, vous obtenez l'arborescence entière, de l'interface la plus haute jusqu'aux implémentations de feuilles, et pouvez sauter à l'un d'eux.
Yuval
2
Dans Eclipse, vous pouvez également Ctrl + cliquer sur le nom de la méthode pour passer à la définition / implémentation de la méthode (selon le contexte)
qualidafial
8
Le fait est que vous ne naviguez pas réellement vers l'implémentation. Il est juste affiché en popup, tout comme javadoc etc.
jackrabbit
1
Dans Eclipse, il vous suffit de survoler le nom de la méthode avec Shift pour ouvrir une fenêtre contextuelle avec son implémentation
Victor
24

IntelliJ a quelques inspections de code assez avancées (comparables mais différentes de FindBugs).

Bien que je manque sérieusement un plugin FindBugs lors de l'utilisation d'IntelliJ (l'intégration Eclipse / FindBugs est plutôt cool).

Voici une liste officielle des CodeInspections pris en charge par IntelliJ

EDIT: Enfin, il existe un plugin findbugs pour IntelliJ. C'est encore un peu bêta mais la combinaison de Code Inspections et FindBugs est tout simplement génial!

Mo.
la source
ouais findbugs est l'un des rares analyseurs de code statique qui trouve réellement des bogues pratiques honnêtes à la bonté. :)
Epaga
Avez-vous un exemple spécifique de son inspection de code? Quel genre de choses peut-il détecter?
Epaga
Un autre lien sur les inspections: hamletdarcy.blogspot.com/2008/04/…
Mo.
8
Je trouve que l'inspection du code d'IntelliJ trouve plus de bogues, a des correctifs rapides utiles, il peut donner des avertissements et corriger des lignes lorsque vous les tapez. (Vous n'avez pas à enregistrer le fichier et il n'a pas à être compilé) Ces subtilités rendent plus pratique la correction des bogues dès que possible.
Peter Lawrey
16

Loin, loin, bien plus de refactorisations.

À M
la source
15

Une chose que j'utilise régulièrement est de définir un point d'arrêt, mais de contrôler ensuite ce qu'il fait. (Lors de mon dernier travail, presque tout le monde a utilisé Eclipse ... Je me souviens avoir été surpris que personne ne puisse trouver comment faire cela dans Eclipse.)

Par exemple, le point d'arrêt ne peut pas réellement s'arrêter, mais il suffit d'enregistrer un message sur la console. Ce qui signifie que je n'ai pas à jeter mon code avec "System.out.println (...)" puis à recompiler.

jgindin
la source
2
Vous pouvez le faire avec des points d'arrêt conditionnels dans Eclipse, mais c'est un peu effronté .eg. true
HaveAGuess
Je pense qu'intelliJ vous permet de définir des nombres de coups plus complexes, n'est-ce pas?
Kimball Robinson
3
C'est plus simple à trouver maintenant dans eclipse - il affiche maintenant les conditions dans la vue des points d'arrêt (donc vous savez qu'elles sont disponibles). Vous pouvez casser sur les décomptes, entrer du code arbitraire, comme System.out.println("here"); falseimprimer mais pas casser (la dernière instruction est une expression booléenne qui détermine si nous devons casser)
Scott Stanchfield
15

Il y a beaucoup de choses que l'idée résout de manière beaucoup plus simple, ou il n'y a pas d'équivalent:

  • Actions de saisie semi-automatique: ctrl+shift+avous pouvez appeler n'importe quelle action d'idée à partir du clavier sans vous souvenir de sa combinaison de touches ... Pensez à gnome-do ou launchy dans Windows, et vous avez l'idée! De plus, cette fonctionnalité prend en charge les abréviations CamelCasing;)

  • Étagère: permet de séparer facilement certains morceaux de code, puis de les consulter via le visualiseur de différences.

  • Histoire locale: c'est beaucoup mieux géré et plus simple.

  • Annotations SVN et historique: plus simple à inspecter, et vous pouvez également facilement voir l'historique uniquement pour une telle partie d'un fichier source entier.

  • Saisie semi-automatique partout, comme les fenêtres d'évaluation d'expression et de condition de point d'arrêt.

  • Intégration Maven ... beaucoup, beaucoup plus simple et bien intégrée.

  • Des refactors beaucoup plus proches de la main, comme l'insertion de boucles, le wrapping / casting, le renommage et l'ajout de variables.

  • Trouvez beaucoup plus puissant et bien organisé. Même dans les grands projets

  • Beaucoup stable pour travailler avec plusieurs branches d'un grand projet en même temps (en tant qu'ancien correcteur de bogues de 1,5 Go par sources de branche, et la nécessité de travailler en même temps, l'idée a montré ses capacités à toute épreuve)

  • Interface plus propre et plus simple ...

  • Et, plus simple à utiliser uniquement avec le clavier, laissant de côté le besoin d'utiliser la souris pour de nombreuses prises simples, vous permettant de gagner du temps et de vous concentrer davantage sur le code ... là où c'est important!

Et maintenant, étant opensource ... la base d'utilisateurs Idea va croître de façon exponentielle.

Serginho
la source
2
Actions de saisie semi-automatique = accès rapide dans éclipse; Je ne vois pas comment l'histoire locale peut être plus facile qu'en éclipse ...
Scott Stanchfield
Comme Scott l'a indiqué, c'est Ctrl + 3. L'assistant de contenu est également disponible lors de l'évaluation des expressions et de la définition de points d'arrêt conditionnels. Je ne sais pas à quel point les remaniements mentionnés sont plus proches de ceux proposés par Ctrl + 1 et Ctrl + 2. Une grande partie du reste semble subjective.
nitind
14

Recherche structurelle et remplacement.

Par exemple, recherchez quelque chose comme:

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

Où $ string $ est un littéral et $ expr $ est une expression de type my.package.and.Class, puis remplacez par:

  $expr$.inspect($string$);
Darron
la source
1
En fait, vous pouvez rechercher le type casts / () - opérateur / dans votre code, pratiquement impossible avec la recherche en texte brut
Karl
13

Mon timing est peut-être un peu décalé par rapport à ce fil, mais je n'ai eu qu'à répondre.

Je suis un grand fan d'éclipse - je l'utilise depuis sa première apparition. Un ami m'a alors dit (il y a plus de 10 ans) que ce serait un joueur. Il avait raison.

Toutefois! Je viens de commencer à utiliser IntelliJ et si vous n'avez pas vu ou utilisé de listes de modifications - vous manquez la programmation paradisiaque.

La possibilité de suivre mes fichiers modifiés (sur ma branche de développement ala clearcase) était quelque chose que je cherchais dans un plugin pour eclipse. Intellij suit toutes vos modifications pour un seul commit, extrêmement simple. Vous pouvez isoler les fichiers modifiés avec des listes personnalisées. Je l'utilise pour les fichiers de configuration qui doivent être uniques localement, mais qui sont constamment signalés lorsque je synchronise ou compare avec le référentiel - en les répertoriant sous une liste de modifications, je peux les surveiller, mais soigneusement les ranger pour me concentrer sur les vrais ajouts Je fais.

En outre, il existe un plugin Commit Log qui génère un texte de toutes les modifications pour les SCCS qui ne sont pas intégrés à votre logiciel de suivi des bogues. Le collage du journal dans l'historique de travail d'un ticket capture les fichiers, leur version, la date / l'heure et la branche / les balises. C'est cool comme l'enfer.

Tout cela pourrait être pris en charge via des plugins (ou des améliorations futures) dans eclipse, je parie; pourtant, Intellij en fait un jeu d'enfant.

Enfin, je suis vraiment enthousiasmé par l'amour général pour ce produit - les frappes, donc c'est douloureux, mais amusant.

G Craig
la source
J'aime vraiment la fonctionnalité des listes de modifications. Il est similaire à un ensemble indépendant de correctifs / étagères VCS sur lequel vous pouvez travailler indépendamment et qui peut être associé à eux peut également être associé à votre outil de suivi des problèmes. Vous avez un historique local (comme un mini VCS) qui suit vos modifications pendant que vous travaillez presque au niveau des détails de la ligne afin que vous puissiez revenir à presque n'importe quel moment si vous en avez besoin. De plus, lorsque vous changez de tâche, toute IDEA se souvient de l'état de l'IDE pour la nouvelle tâche et restaure les fichiers ouverts, les positions des fenêtres, etc.
sylvanaar
Les listes de modifications sont en fait une fonctionnalité SVN. IntelliJ vous permet simplement de les voir et de les gérer là où les plugins Eclipse SVN ne le font pas.
Neil Traft,
12

Le débogueur IntelliJ a une fonctionnalité très pratique appelée "Evaluate Expression", qui est de loin meilleure que les éclipses pendantes. Il a un code complet et je pense qu'il est généralement "plus utile".

Mo.
la source
8
Eclipse dispose également d'un évaluateur d'expression qui permet la complétion de code. Allez dans Fenêtre -> Afficher la vue -> Déboguer -> Afficher Lorsque vous êtes arrêté à un point d'arrêt dans le débogueur, vous pouvez évaluer des expressions arbitraires dans cette vue d'affichage.
laz
11

Eh bien, pour moi, c'est mille petites choses. Certaines des macros, la disposition de l'interface graphique en général dans Eclipse, je trouve horrible. Je ne peux pas ouvrir plusieurs projets dans différentes fenêtres dans Eclipse. Je peux ouvrir plusieurs projets, mais son système basé sur la vue échange un tas de choses autour de moi lorsque je change de fichier. Les inspections de code d'IntelliJ semblent meilleures. Ses aides contextuelles pour résoudre les problèmes courants sont agréables. Beaucoup de choses simples d'utilisation comme la barre latérale où je peux survoler un point chaud et cela me dira chaque sous-classe d'implémentation d'une méthode ou la méthode que j'implémente et d'où.

Chaque fois que j'ai dû utiliser ou regarder quelqu'un utiliser Eclipse, il semble qu'ils peuvent faire la plupart des choses que je peux faire dans IntelliJ, mais cela leur prend plus de temps et c'est plus maladroit.

Chris Kessel
la source
9

Introduisez la variable. ( Ctrl+Alt+Vsous Windows, Cmd+Alt+Vsous OSX)

Disons que vous appelez une méthode, service.listAllPersons() Hit Ctrl+Alt+Vet Enter, et une variable pour la valeur de retour de l'appel de méthode est insérée:

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

Vous évite de taper et vous n'avez pas à vérifier le type de retour de la méthode que vous appelez. Particulièrement utile lors de l'utilisation de génériques, par exemple

new ArrayList<String>()

[introduire une variable]

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

(bien sûr, vous pouvez facilement changer le nom de la variable avant d'appuyer Enter)

rlovtang
la source
13
Il s'agit de Ctrl + 2 L dans Eclipse.
Micke
2
Bien, je ne le savais pas, et aucun des utilisateurs d'Eclipse à qui j'ai demandé. Cette fonctionnalité fait-elle partie d'Eclipse depuis longtemps?
rlovtang
3
Assez longtemps ... Si vous utilisez quickfix, control+1(la liaison de touches la plus évidente au monde, hein?), Cela suggère des choses que vous pouvez faire à l'emplacement actuel du curseur, similaires aux intentions d'IDEA. Il répertorie par exemple "attribuer local", "attribuer champ" et d'autres options. control+2, Lest le raccourci pour cela.
Scott Stanchfield
Dans eclipse, une fois que vous avez choisi ctrl+2, L, vous pouvez toujours changer le type de la variable créée en soit le type de droite (par défaut), ou n'importe quel supertype: le type de variable est sélectionnable avec TAB.
Gaetan
8

IntelliJ prend en charge l'intellisense et la refactorisation du code dans les documents jspx.

krosenvold
la source
Pourriez-vous clarifier ce que vous entendez par intellisense? Eclipse a également l'auto-complétion, mais voulez-vous dire autre chose?
Epaga
Eclipse n'a pas d'auto-complétion dans les documents jspx AFAIK. En jsp régulier oui, jspx non.
krosenvold
3
Il signifie que si vous avez un JSP qui fait référence à une propriété sur un POJO et que vous renommez la propriété, votre JSP est correctement mis à jour. Le support JSP d'IntelliJ lance Eclipse / WTP!
erickson
2
Je n'arrive pas à faire fonctionner automatiquement Eclipse dans les expressions JSP EL, point. JSP ou JSPX, ça n'a pas d'importance, c'est juste sans idée. IntelliJ gère tagx et jspx exactement comme vous vous y attendez: comme une balise ou un fichier jsp.
erickson
C'est agréable de voir comment les utilisateurs d'Eclipse votent contre les choses qu'ils n'aiment pas. Si mes observations sont fausses, veuillez répondre avec un commentaire. Dites-moi comment faire cela en éclipse!
krosenvold
7

Pour moi, c'est le support maven d'IDEA, en particulier dans la version 9 est sans pareil. La synchronisation à la volée du projet avec le modèle maven est tout simplement fantastique et rend le développement agréable.

mdma
la source
6

Intellij possède un plug-in SVN bien supérieur à Subversive ou Subclipse et cela fonctionne! Le temps que nous avons perdu à fusionner les fichiers source à l'aide d'Eclipse ne mérite pas d'être pensé. Ce n'est pas un problème avec IntelliJ car le plugin vous aide beaucoup plus.

De plus, le plugin Subclipse n'est pas fiable - nous avons régulièrement des cas où le plugin ne pense pas qu'il y ait eu de code archivé dans SVN par d'autres développeurs, mais il y en a - le serveur CI les a traités!

Tony Ruddock
la source
exactement, le support svn est superbe en idée, tandis que subclipse / subversive sont bogués, maladroits et peu fiables; il en va de même pour git, en fait je ne me souviens d'aucune intégration git raisonnable pour eclipse et intelliJ le gère très bien
Kamil Mikolajczyk
Personnellement, je pense que vous devriez faire tout votre contrôle de version sur la ligne de commande, même si votre IDE peut le faire. Lorsque vous faites cela sur la ligne de commande, vous saurez comment bash le script plus tard, ce qui pourrait vraiment accélérer votre développement. Parfois, mes collègues me demandent de l'aide avec le plugin subclipse ou eclipse de git, je leur dis simplement d'arrêter de l'utiliser et de le faire sur la ligne de commande.
msknapp
4

Emulateur VIM . Ce plugin fournit une émulation vi / vim / gvim presque complète lors de l'édition de fichiers dans IDEA. Les fonctionnalités suivantes sont prises en charge:

  • Touches de mouvement
  • Suppression / modification
  • Commandes du mode d'insertion
  • Des marques
  • Registres
  • VIM annuler / rétablir
  • Commandes en mode visuel
  • Quelques commandes Ex
  • Certains: définir les options
  • Expressions régulières VIM complètes pour la recherche et la recherche / remplacement
  • Macros
  • Diagraphes
  • Historique de la ligne de commande
  • Historique des recherches
  • Jumplists
  • Aide VIM

quelques commentaires sur ce plugin de http://plugins.jetbrains.net/plugin/?id=164

Je ne vois jamais revenir à une autre idée à cause de ce plugin .. Le meilleur des deux mondes ... Génial!. c'est ce qui me manquait dans tous les IDE.
Maciek Kreft
la source
Je suis d'accord, je ne pourrais pas vivre sans mon plugin IdeaVim, mais pour être honnête, il existe un plugin Vim pour Eclipse, bien nommé VimPlugin ( vimplugin.org )
Keith
3
Vwrapper est un autre plugin Vim Eclipse. Et cela fonctionne encore mieux que le plugin Idea Vim (les touches de répétition fonctionnent). Cependant, Vwrapper ne gère pas la recherche et le remplacement à partir de la ligne de commande (bien que la recherche fonctionne très bien), ni ne permet de définir des macros de manière interactive. Convenu que le support Vim est essentiel dans un IDE. N'utiliserait pas Eclipse ou Idea sans lui!
Brent Faust
1
Le viableplugin.com est très bon pour l'éclipse. J'utilise également l'intellij et je trouve que l'intellij est parfois bloqué dans l'éditeur dans certaines circonstances et ne répond pas aux commandes.
John Lemp
3

Quelques autres choses:

  • propager les paramètres / exceptions lors du changement de signature de méthode, très pratique pour mettre à jour les méthodes au plus profond de la pile d'appels
  • Validation du code SQL dans les chaînes passées en tant qu'arguments aux appels jdbc (et tout le contenu d'injection de langage nouvellement intégré)
  • implémenté dans / remplacé par des icônes pour les interfaces et les classes (et leurs méthodes) et la navigation d'implémentation intelligente (Ctrl + Alt + Click ou Ctrl + Alt + B)
  • liaison entre les interfaces EJB 2.1 et les classes de bean (y compris le support de refactoring); ancien, mais toujours extrêmement précieux lorsque vous travaillez sur des projets plus anciens
Andrei
la source
2

Deux choses qu'IntelliJ fait qu'Eclipse ne me sont pas très précieuses:

Séparateurs de méthodes: ces faibles lignes grises entre les méthodes rendent le code beaucoup plus lisible

Anti-aliasing de texte: rend le code si agréable dans l'IDE

yalestar
la source
2
En fait, j'ai trouvé que l'anticrénelage d'IntelliJ était bien pire qu'Eclipse. Il s'agissait cependant de quelques versions d'IntelliJ. At-il été amélioré?
laz
J'utilise une police proportionnelle Verdana qui me semble plus agréable que l'utilisation de l'anti-aliasing.
Peter Lawrey
2

Une fonctionnalité très utile est la possibilité de construire partiellement un projet de réacteur Maven afin que seules les pièces dont vous avez besoin soient incluses.

Pour rendre cela un peu plus clair, considérons le cas d'une collection de fichiers WAR avec beaucoup de ressources communes (par exemple JavaScript, fichiers de configuration Spring, etc.) partagés entre eux en utilisant la technique de superposition. Si vous travaillez sur une page Web (en cours d'exécution dans Jetty) et que vous souhaitez modifier une partie du code de superposition qui se trouve dans un module distinct, vous vous attendez normalement à devoir arrêter Jetty, exécuter la génération Maven, redémarrer Jetty et continuer. C'est le cas avec Eclipse et à peu près tous les autres IDE avec lesquels j'ai travaillé. Ce n'est pas le cas dans IntelliJ. En utilisant les paramètres du projet, vous pouvez définir quelle facette de quel module vous souhaitez inclure dans une construction en arrière-plan. Par conséquent, vous vous retrouvez avec un processus qui semble transparent. Vous modifiez à peu près n'importe quel code du projet et il est instantanément disponible après avoir actualisé le navigateur.

Très soigné et très rapide.

Je ne pouvais pas imaginer coder un front-end dans quelque chose comme YUI sauvegardant sur DWR / SpringMVC sans lui.

Gary Rowe
la source
2

Préambule à ma réponse: Mon utilisation d'Eclipse est limitée. Nous avions besoin d'un IDE Java pour fonctionner à la fois sur Windows et Mac et le port Mac ralentissait de jour en jour. C'était il y a des années et je suis sûr que ça va maintenant. Mais c'est ce qui nous a permis de passer à IntelliJ et nous en sommes satisfaits.

Maintenant pour ma réponse: Une grande différence que je n'ai pas encore mentionnée est que le support technique est meilleur avec IntelliJ / Jet Brains. Nous envoyons un e-mail à JetBrains et obtenons une réponse définitive en moins d'une heure. La recherche de réponses aux problèmes d'Eclipse donne les réponses habituelles, "idiot stupide" (généralement un petit nombre de réponses) ainsi qu'un nombre beaucoup plus élevé de réponses utiles et perspicaces. Mais il faut un certain tri pour obtenir la vraie réponse.

Jim Dodd
la source
Eclipse est open source. Personne n'est payé pour répondre aux questions ou corriger les bugs. Achetez un IDE commercial basé sur Eclipse, par exemple MyEclipse et obtenez une assistance pour votre argent. Statistiques rapides: j'ai signalé à JetBrains 56 bugs, 23 d'entre eux sont fermés; de 65 bugs signalés à Eclipse 33 sont fermés. La seule différence est que JetBrains corrige les bogues légèrement plus rapidement qu'Eclipse.
Victor
2

Quelque chose que j'utilise dans IntelliJ tout le temps est la refactorisation pendant que je tape. J'ai réécrit des classes à partir d'une impression (à l'origine écrite en éclipse) en utilisant les deux IDE et j'ai utilisé environ 40% de touches / clics de souris en moins pour écrire les mêmes classes dans IntelliJ qu'éclipse.

Je ne voudrais pas utiliser Eclipse jusqu'à ce qu'ils prennent en charge autant de refactoring avec des morceaux de code incomplets.

Voici une liste plus longue des fonctionnalités d'IntelliJ 8.0 / 8.1 [ http://www.jetbrains.com/idea/features/index.html]

Peter Lawrey
la source
2

Il y a une chose qu'IntelliJ fait bien mieux qu'Eclipse et c'est de vider vos poches!

Je préfère cependant l'utiliser et un gros avantage qu'il a sur Eclipce est la façon dont il se synchronise avec le système de fichiers, pour les gros projets et les ordinateurs lents (oui dans les environnements de travail, les PC sont beaucoup plus lents que les nôtres à la maison) Eclipse semble lutte où IntelliJ semble être plus rapide bien qu'avec un temps d'indexation initial plus lent.

L'édition IntelliJ Community rend évidemment son utilisation gratuite mais vous voudrez bientôt ces refactoring supplémentaires et de jolis petits cadeaux non inclus dans l'édition CC.

À mon avis, c'est généralement une meilleure expérience utilisateur, mais la question de savoir si cela en vaut la peine est une question à laquelle chaque développeur doit répondre lui-même.

Mais soyons reconnaissants d'avoir jusqu'à trois excellents IDE pour Java en ce moment, avec NetBeans qui s'améliore tout le temps.

Shawn Vader
la source
3
IntelliJ Ultimate Edition n'est en effet pas gratuit, mais en tant que développeur, j'utilise mon IDE environ 8 à 10 heures par jour. Donc je ne vois pas son prix raisonnable comme un défaut !!
Romain Linsolas
2

Analyse de flux de données : analyse de flux arrière inter-procédurale et analyse de flux avant, comme décrit ici . Mes expériences sont basées sur Community Edition, qui analyse assez bien le flux de données. Il a échoué (refusé de faire quoi que ce soit) dans quelques cas où le code est très complexe.

Ville Laitila
la source
2

Tout d'abord, j'aime l'intellij. Il y a au moins une centaine de fonctionnalités qui manquent à cette éclipse. Je parle mieux de magnitudes en termes de fiabilité et d'intelligence qu'aucune hyperbole ne peut décrire en matière de refactoring, de changement de nom, de déplacement et d'autres qui ont déjà été mentionnés.

MAIS, il y a une chose qu'intellij ne permet pas, quelle éclipse le permet. Il ne permet pas d'exécuter plusieurs projets à la fois sous le même vm.

Lorsque vous avez des projets distincts pour le front, le middle, le core, les agents..etc, où ils doivent tous interagir les uns avec les autres, vous ne pouvez pas modifier et déboguer rapidement en même temps, afaik. La seule façon de gérer cela actuellement est d'utiliser des scripts ant pour déployer et mettre à jour des fichiers JAR dans des projets dépendants, ou d'utiliser maven.

Eclipse permet de déboguer plusieurs projets sous une seule instance ide vm.

blicket
la source
4
Cela aurait dû être publié dans Things Eclipse peut faire ce que IntelliJ ne peut pas , et non l'inverse.
Neil Traft
IntelliJ le fait sans aucun problème. Cette réponse est tout simplement fausse.
Ingénieur logiciel