IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI et Outils pour Java Discussion :

Quelles sont les difficultés pour passer de Eclipse à IntelliJ ? Venez partager votre expérience


Sujet :

EDI et Outils pour Java

  1. #101
    Membre chevronné
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    Autre truc gênant que je viens d'avoir ce matin après avoir laissé mon IDE ouvert (le pc était en veille) : certaines classes refusaient de s'ouvrir !
    Purement et simplement, et ce quoi que je fasse. A nouveau du le redémarrer.


    J'en suis à mon 4ième jour d'utilisation et je n'ai toujours pas de préférence nette pour l'un ou pour l'autre des IDE (même si je préfère toujours Eclipse par habitude)

    Et du coup, j'en viens à me demander si on ne préfère pas un IDE à un autre pour une simple affaire d'habitude (ce qui en soit est un argument suffisant)

  2. #102
    Membre chevronné
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    Et j'arrive donc pour le coup à un vrai problème dans l'utilisation : ça marche parfaitement bien dans Eclipse (qui me met un warning TypeSafety Unckecked invocation), mais IDEA me met une erreur...

    Le twist : les deux l'exécutent sans aucun problème et avec le même résultat.
    Pourquoi mon ami IJ me dit qu'il y a une erreur? Et pas n'importe quel type d'erreur d'ailleurs :
    Inferred Type 'HasCodeTest.EnumRaw' for type parameter T is not within its bound; should implement 'HasCode<java.lang.String>'

    Je vous met le code source pour que vous puissiez tester chez vous

    Interface HasCode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    public interface HasCode<T extends Serializable> {
     
        T getCode();
     
        /**
         * récupération d'une valeur d'énum depuis son code
         */
        static <U extends Serializable, T extends Enum<T> & HasCode<U>> T fromCode(U code, Class<T> classEnum){
            for (T value : classEnum.getEnumConstants()){
                if (code.equals(value.getCode())){
                    return value;
                }
            }
            return null;
        }
    }
    Classe de test HasCodeTest
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    import java.util.function.BiFunction;
     
    public class HasCodeTest {
     
        /**
         * Enum privée de test
         */
        private enum EnumString implements HasCode<String>{
            STRING_VALUE1,
            STRING_VALUE2,
            STRING_VALUE3;
     
            @Override
            public String getCode() {
                return name();
            }
        }
     
        /**
         * Enum privée de test
         */
        private enum EnumInteger implements HasCode<Integer>{
            INTEGER_VALUE1,
            INTEGER_VALUE2,
            INTEGER_VALUE3;
     
            @Override
            public Integer getCode() {
                return ordinal();
            }
        }
     
        /**
         * Enum privée de test
         */
        private enum EnumRaw implements HasCode{
            RAW_VALUE1,
            RAW_VALUE2,
            RAW_VALUE3;
     
            @Override
            public String getCode() {
                return name();
            }
        }
     
        public static <T, U, R> R checkExpected(BiFunction<T, U, R> funct, T param, U secondParam, R expectedResult){
            R result = funct.apply(param, secondParam);
            if (result != null && result.equals(expectedResult)){
                System.out.println("expected result " + result );
            } else {
                System.out.println("Result not found for parameter " + param );
            }
            return result;
        }
     
        public static void main(String[] args){
            checkExpected(HasCode::fromCode, "RAW_VALUE2", EnumRaw.class, EnumRaw.RAW_VALUE2); // IJ me met une erreur sur le HasCode::fromCode. Mais il s'exécute sans problème... Et la compil maven marche aussi
            checkExpected(HasCode::fromCode, 1, EnumInteger.class, EnumInteger.INTEGER_VALUE2);
            checkExpected(HasCode::fromCode, "STRING_VALUE2", EnumString.class, EnumString.STRING_VALUE2);
        }
     
    }

  3. #103
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 298
    Points : 484
    Points
    484
    Par défaut
    Salut Eubolbo,
    Je vais essayer de répondre en vrac à quelques unes de tes questions:
    1. Javadoc auto sur génération du code des getters/setters. Je ne sais pas.
    2. Pour ajouter de la javadoc sur une méthode : /** + Enter.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
        /**
         *
         * @param funct
         * @param param
         * @param secondParam
         * @param expectedResult
         * @param <T>
         * @param <U>
         * @param <R>
         * @return
         */
        public static <T, U, R> R checkExpected(BiFunction<T, U, R> funct, T param, U secondParam, R expectedResult){
            R result = funct.apply(param, secondParam);
            if (result != null && result.equals(expectedResult)){
                System.out.println("expected result " + result );
            } else {
                System.out.println("Result not found for parameter " + param );
            }
            return result;
        }
    3. Refactoring d'un package. Je ne suis pas arrivé à reproduire ton pb. Tu as utilisé Maj+F6 pour refactoriser ton nom de package ?
    4. Thèmes Eclipse. Si tu recherches Thèmes IntelliJ, tu trouveras pleins de thèmes pour IJ dont des thèmes Eclipse. Jamais testé donc je ne peux pas t'en dire plus.
    5. Mon IJ reste ouvert en permanence et je n'ai pas de problèmes de blocages de l'IDE avec obligation de restart.

    6. Problème d'erreur sur les types génériques. Reproductible.
    La sévérité devrait être warning et non pas error.
    Je n'ai pas trouvé comment modifier ce niveau de sévérité.
    ça n'empêche pas la compilation dans Eclipse, Maven et IntelliJ. Mais c'est très désagréable.

    Petite astuce sur le compilateur:
    Par défaut IntelliJ utilise javac comme compilateur.
    Tu peux modifier ce compilateur pour utiliser le compilateur d'Eclipse.
    Ctrl+Alt+S : Compiler->Java Compiler->Use compiler: Eclipse

    Quel intérêt ?
    Le compilateur Eclipse est plus "souple" que javac.
    Et en particulier tu retrouve la petite case magique d'Eclipse : Proceed on errors.

    Ce qui te permet de lancer un programme sans être obligé de corriger toutes les erreurs avant.

    EDIT, J'avais oublié:
    L'erreur n'apparaît pas si tu remplace la méthode référence par des lambdas (Alt+Enter sur ta méthode HasCode).
    C'est certainement pas une solution, c'est juste pour l'info:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    checkExpected((code, classEnum) -> HasCode.fromCode(code, classEnum), "RAW_VALUE2", EnumRaw.class, EnumRaw.RAW_VALUE2);

  4. #104
    Membre chevronné
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    Merci spidetra, j'essayerai tout ça pour voir

    Pour le déplacement de package, je fais ça "à la main" en déplaçant les classes d'un package à l'autre (je suis pas encore au taquet sur les raccourcis claviers).

  5. #105
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 19
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    Développeur java depuis plus de 10 ans, j'ai connu pas mal de versions d'Eclipse (d'Europa à Mars), avant de passer à IntelliJ. C'est clair, lorsqu'on a ses automatismes avec Eclipse, passer à IntelliJ demande un petit effort mais au bout de quelques semaines, je n'imaginais plus revenir à Eclipse. Pas mal de choses fonctionnent beaucoup mieux sous IntelliJ que sous Eclipse. L'intégration Maven fonctionne très bien alors qu'avec eclipse, dès qu'on commence à faire des choses qui sortent de la traditionnelle gestion des dépendances, le plugin montre ses limites.

    Autre point qui est assez stupéfiant avec IntelliJ c'est que la complétion syntaxique fonctionne à peut près partout. Par exemple, dans les expressions languages d'une JSP ou d'une facelet, dans une page HTML, dans un fichier XML. Le refactoring est réellement efficace. Je peut modifier le nom d'une property dans un fichier properties et cela est répercuté partout où cette propriété est utilisée. La recherche est performante et rapide. Par exemple, si je recherche une classe qui s'appelle RisquesRemplacementCalculateurDecisionnel. Je fais un Ctrl+N et je saisis RiReCaDe et ça marche. Ce qui est aussi bluffant, quand on prend le temps de l'apprendre, c'est que quasiment tout peut être fait via des raccourcis clavier. Alors certes, il faut y consacrer un peut de temps, certes les raccourcis clavier d'IntelliJ sont un peut moins intuitifs que ceux d'Eclipse, mais une fois maitrisés c'est d'une efficacité redoutable.

    Eclipse n'est pas mauvais même si je lui reproche une mauvaise integration avec Maven et que je trouve que WTP est une purge. Je pense même qu'on peut être très performant avec Eclipse, mais IntelliJ est simplement meilleurs dans pas mal de domaines. Après, le meilleur IDE, c'est avant tout celui qu'on maitrise.

  6. #106
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 187
    Points : 488
    Points
    488
    Par défaut
    Je ne connais pas IntelliJ mais la plupart des architectes un peu Geek que j'ai rencontré m'on vendu que c'étais 100 x mieux que Eclipse mais hormis le visuel mis en avant (colorisation, thématisation de l'UI) je n'ai pas eu d'autres arguments vraiment solides pour justifier l'achat d'une licence à 500€ l'année. Il y a 15 ans je suis passé à Eclipse. Au départ j'étais le seul dans mon équipe développement car tous le monde travaillaient encore sous JBuilder et puis j'ai convaincu mes collègues de l'époque que cet IDE prometteur remplaçait avantageusement notre vieillissant JBuilder. Ayant essayé d'autres IDE même en dehors de l'univers Java, NetBean, Xcode, Qt Creator, Microsoft Visual Studio, je n'en trouve pas un seul qui lui arrive à la cheville, il manquait toujours un raccourci ou une fonctionnalité qui crée immédiatement une frustration immense, surtout dans le contexte d'un usage intensif toute la journée. Par ailleurs je n'utilise pas les assistants proposés dans Eclipse, d'ailleurs à tout moment on peut éditer le fichier visé directement, c'est souvent plus rapide et plus simple avec l'autocomplétion après pour les archi débutants il y a la bouée avec les assistants.

Discussions similaires

  1. Utilisez-vous Grails ? Venez partager votre expérience
    Par Mickael Baron dans le forum Grails
    Réponses: 9
    Dernier message: 11/10/2017, 15h49
  2. Réponses: 4
    Dernier message: 20/03/2015, 14h43
  3. Réponses: 18
    Dernier message: 25/09/2013, 10h26
  4. Réponses: 4
    Dernier message: 11/01/2013, 15h11
  5. Utilisez-vous Apache Tapestry ? Venez partager votre expérience
    Par Mickael Baron dans le forum Tapestry
    Réponses: 0
    Dernier message: 01/10/2012, 21h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo