Suivant son cycle de releases trimestrielles, la fondation Eclipse a diffusé la version 2020-09 (4.17) de son IDE. Cet article propose une revue des principales nouveautés générales et du JDT.
Java 11 est requis pour l’exécution
C’est un gros changement car pour exécuter Eclipse version 2020-09 : il faut obligatoirement un Java 11 minimum. Si ce n’est pas le cas, Eclipse ne démarre pas.
Le JDT d’Eclipse sera capable de compiler des classes pour les versions antérieures de Java mais son exécution requière maintenant un Java 11 minimum.
Support de Java 15
Eclipse 2020-09 est sortie la veille de Java 15. Il ne propose donc pas de support de Java 15 sans installer un plug-in supplémentaire via le Marketplace.
Ce plugin permet notamment de mettre en œuvre plusieurs évolutions dans la syntaxe de Java 15, sous réserve que l’option preview soit activée dans les propriétés « Java compiler » du projet :
- JEP 378: Text Blocks (Standard)
- JEP 384: Records (Second Preview)
- JEP 375: Pattern Matching for Instanceof (Second Preview)
- JEP 360: Sealed Classes (Preview).
Les éditeurs de texte
Précédemment l’éditeur offrait la fonctionnalité « Last Edit Location » qui permettait de revenir à l’emplacement de la dernière modification. Maintenant, elle est capable de revenir sur les 15 derniers emplacements de modifications grâce à deux options du menu « Navigate » :
L’exécution des tests JUnit
Dans la vue JUnit, le menu contextuel est enrichi de deux nouvelles options pour étendre ou réduire les tests d’une classe de tests.
La vue JUnit permet d’afficher les résultats d’exécution selon plusieurs ordres : ordre d’exécution, temp d’exécution ou ordre alphabétique des noms de méthodes. Par défaut, les résultats sont affichés dans leur ordre d’exécution.
Une fois tous les tests exécutés, pour afficher les résultats dans l’ordre de leur temps d’exécution, il faut utiliser l’option Sort By > Execution Time dans le menu de la vue JUnit.
Exemple :
Les résultats sont alors affichés dans leur ordre de temps d’exécution décroissant.
L’éditeur de code Java
L’assistant Content Assist prend désormais entièrement en charge les correspondances de sous-chaînes et de sous-mots pour les types :
Les correspondances avec la sous-chaine sont toujours affichées. L’affichage des correspondances avec les sous-mots est configurable dans les Preferences : Java > Editor > Content Assist.
Si l’option est décochée, les correspondances avec les sous-mots ne sont plus affichées.
Dans un éditeur de code Java, le code mining peut être activé/désactivé en utilisant le menu « Find Actions » (Ctrl +3).
Un nouveau quickfix propose de remplacer la concaténation de chaînes et de valeurs par l’utilisation de la méthode statique String::format
Exemple :
Le résultat de l’application du quickfix est :
Un nouveau quickfix propose de créer une méthode manquante invoquée via une référence de méthodes.
Une fois le quickfix appliqué, la méthode est créée :
Attention : cette fonctionnalité ne peut être mise en œuvre que dans la classe courante et pour des cas simples.
Les options de clean up
Elles possèdent un nouvel onglet « Optimization » qui regroupe deux options relatives à la performance d’exécution.
Une nouvelle fonctionnalité de nettoyage (clean up) a été ajoutée pour optimiser l’exécution des expressions régulières en les précompilant avec java.util.regex.Pattern
. L’expression régulière doit être utilisée explicitement plusieurs fois pour être sûr que le nettoyage est utile.
Pour l’activer, il faut cocher « Precompile reused regular expressions » dans l’onglet « Optimization » d’un profil personnalisé.
Une nouvelle opération de clean up a été ajoutée pour utiliser la méthode Objects::equals()
dans la redéfinition d’une méthode equals() afin de permettre de réduire la quantité de code requise. Elle n’est utilisable qu’à partir de Java 7.
Cette option est activable dans l’onglet « Unnecessary Code » d’une configuration personnalisée du « Clean up »
Sans l’option activée |
Avec l’option activée |
|
|
Le formatage du code Java
Une nouvelle option permet de formater les instructions assert
.
Editer les options de formatage de code Java d’un profile : Preferences > Java > Code Style > Formatter.
Sélectionner « Line Wrapping > Wrapping Settings > Statements > ‘assert’ message » pour configurer le formatage des asserts.
Le débogage
Les configurations d’exécution proposent dans l’onglet Arguments une case à cocher « Use the -XX:+ShowCodeDetailsInExceptionMessages argument when launching » qui permet d’activer l’option proposée par la JEP 358 (Helpful NullPointerExceptions) pour avoir des messages d’erreurs détaillés lors de NullPointerExceptions
.
Cette case à cocher est cochée par défaut si Java 14 ou supérieur est utilisé.
La vue « Variables», lorsque l’option « Show type names » est activée, affiche le type actuel d’une valeur au lieu de son type déclaré.
Pour activer cette option, il faut que le mode colonne (column mode) soit désactivé.
Exemple :
Avec Eclipse 2020-06
Avec Eclipse 2020-09
Le thème dark
Quelques petites adaptations sont apportées au thème dark.
Le style des menus a changé dans le thème dark.
Le style des listes déroulantes (ComboBox) a aussi changé dans le thème dark.
Conclusion
Eclipse poursuit son rythme de release tous les 3 mois. La grande nouveauté de cette version 2020-09 est qu’elle requière un Java 11 pour s’exécuter. Cela encouragera peut-être à migrer vers Java 11 dont l’adoption est faible malgré la sortie l’année prochaine de Java 17. Elle ajoute aussi quelques petites fonctionnalités.