Eclipse et Java 7

Depuis l'édition 3.7.1, Eclipse offre une prise en charge totale des nouvelles fonctions de langage Java de Java SE 7. L'une des conséquences les plus notables de cette prise en charge est que vous êtes susceptible de ne même pas la remarquer : tout ce qui à vos yeux doit fonctionner pour Java 6 (édition, compilation, débogage, correctifs rapides, propagation, actions source, recherche, etc.) fonctionne de manière transparente avec la nouvelle syntaxe de Java 7. Dans ce document, nous allons vous présenter certaines des fonctionnalités les plus intéressantes dont les utilisateurs d'Eclipse vont pouvoir bénéficier en utilisant Java 7.

Remarquez que les deux numéros de version '1.7' et '7' sont utilisés pour identifier la publication de l'édition standard de la plateforme Java. La version '7' est la version produit tandis que la version '1.7' est la version développeur et est également utilisée pour le niveau de conformité du compilateur.

Conditions prérequises

Pour être en mesure de développer du code compatible avec Java 7, vous devez disposer d'un environnement d'exécution Java (JRE) de type Java 7. Si vous lancez Eclipse pour la première fois à l'aide d'un environnement d'exécution Java 7, il utilisera cet environnement d'exécution Java par défaut. Dans le cas contraire, il vous faudra utiliser la page de préférences Ouvre la page des préférences des environnements d'exécution Java installés Java > Environnements d'exécution Java installés afin de l'enregistrer avec Eclipse.

Vous pouvez également configurer un environnement d'exécution Java 7 via la page de préférences Ouvre la page de préférences Environnements d'exécution Java > JRE installés > Environnements d'exécution :

Page de préférences Environnements d'exécution

Pour convertir un projet Java existant en Java 7, ouvrez la boîte de dialogue Propriétés de la Bibliothèque système JRE et choisissez l'environnement d'exécution : JavaSE-1.7.

Boîte de dialogue Propriétés

La description de l'API de l'environnement d'exécution pour Java 7 est disponible sur le site de mise à jour correspondant. Une fois qu'il est installé, vous pouvez détecter les références non valides aux bibliothèques système de Java 7 :

Page de préférences Erreurs/Avertissements d'API affichant la nouvelle description EE Java 7

Fonctions du langage Java 7

Java 7 est livré avec une série d'améliorations mineures (appelées Project Coin) du langage Java, un nouveau bytecode permettant d'appeler les méthodes de façon dynamique et de nombreux ajouts aux bibliothèques. Le présent document présente brièvement certaines des nouvelles fonctions de langage offertes par Java 7, mais ne constitue pas à proprement parler un tutoriel pour ces fonctions. Pour plus d'informations, cliquez ici.

Déduction de type améliorée pour la création d'instance générique (losange)

Cette modification de langage permet d'omettre dans plusieurs situations l'utilisation d'arguments de type explicites avec les constructeurs de classes paramétrées. Le compilateur déduit les arguments de type omis à partir du type attendu.

Lorsque cela est possible, l'assistant de contenu pour les appels de constructeur insère un losange à la place d'arguments de type explicites.

Assistant de contenu après 'new HashMap'

Résultat :

Insertion de 'new HashMap<>()' à l'aide de l'assistant de contenu

Le compilateur peut également détecter la spécification redondante d'arguments de type que vous pouvez retirer via le correctif rapide Supprimer les arguments de type.

Spécification redondante d'arguments de type

Cette option est désactivée par défaut, mais peut être activée sur la page de préférences Ouvre la page de préférences Erreurs/Avertissements Java > Compilateur > Erreurs/Avertissements :

Avertissement relatif à des arguments de type redondants

En outre, vous pouvez également insérer des arguments de type déduit d'un losange via un assistant rapide.

Insérer des arguments de type déduit

Suggestion : cette procédure fonctionne également sous forme de correctif rapide dans le code 1.5 et 1.6, où le losange est une erreur de syntaxe.

Multi-catch

Dans Java 7, vous pouvez intercepter plusieurs types d'exception à l'aide d'un bloc catch unique.

Vous pouvez utiliser l'option Marquer les occurrences dans l'éditeur Java pour mettre en évidence des instructions qui émettent une exception particulière.

Marquer les occurrences

L'action Source > Entourer d'un bloc try/multi-catch permet de placer les instructions sélectionnées dans un bloc try/multi-catch. Elle est également disponible sous forme de correctif rapide Entourer d'un bloc try/multi-catch si plusieurs exceptions n'ont pas été interceptées.

Entourer d'un bloc try/multi-catch

Le correctif rapide Ajouter des exceptions à la clause catch existante permet d'ajouter des exceptions non interceptées à une clause catch existante.

Ajouter des exceptions à la clause catch existante

L'assistant rapide Utiliser des blocs catch séparés permet de remplacer une clause multi-catch par des blocs catch individuels pour chaque exception figurant dans la clause multi-catch.

Utiliser des blocs catch séparés

L'assistant rapide Déplacer les exceptions vers le bloc catch séparé permet de choisir une ou plusieurs exceptions sélectionnées dans une clause multi-catch.

Déplacer les exceptions vers le bloc catch séparé

L'assistant rapide Combiner des blocs catch permet de combiner des blocs catch distincts dans un bloc multi-catch unique. Il n'est disponible que lorsque les corps de tous les blocs catch sont identiques.

Combiner des blocs catch

Le compilateur signale une erreur si une exception figurant dans une clause multi-catch a déjà été interceptée par une autre exception. Le correctif rapide Supprimer l'exception permet de supprimer cette exception.

Supprimer l'exception

En outre, il existe des options de retour à la ligne dans le programme de formatage pour la syntaxe multi-catch. Elles peuvent être configurées dans la page de préférences Ouvre la page de préférences Programme de formatage Java > Style de code > Programme de formatage sous Retour à la ligne > Instructions > 'multi-catch'.

Instruction try-with-resources

L'instruction try-with-resources garantit que chaque ressource - a java.lang.AutoCloseable - est fermée à la fin de la déclaration.

L'option Marquer les occurrences de l'éditeur Java comprend la syntaxe try-with-resources. L'accolade fermante '}' d'une instruction try-with-resources est marquée en tant que point de sortie de méthode si l'appel implicite de close() émet une exception. La variable de ressource correspondante est également mise en évidence.

Marquer les occurrences

Le compilateur détecte les exceptions non gérées émises par l'appel automatique de close() pour une ressource.

Détection des exceptions non gérées émises par l'appel automatique de close()

Le compilateur peut suggérer d'utiliser l'instruction try-with-resources si les ressources ont été explicitement fermées, mais qu'elles n'ont pas été déclarées dans des instructions try-with-resources.

Avertissement de compilateur pour une ressource devant être gérée avec l'instruction try-with-resource

Cette option est désactivée par défaut, mais peut être activée sur la page de préférences Ouvre la page de préférences Erreurs/Avertissements Java > Compilateur > Erreurs/Avertissements :

Ressource non gérée via l'avertissement try-with-resource

En outre, il existe des options de retour à la ligne et d'espace dans le programme de formatage pour la syntaxe try-with-resources. Elles peuvent être configurées dans la page de préférences Ouvre la page de préférences Programme de formatage Java > Style de code > Programme de formatage sous Retour à la ligne > Instructions > 'try-with-resources' et Espace > Instructions de contrôle > 'try-with-resources'.

Appel des méthodes Varargs simplifié

Le compilateur Java 7 génère un avertissement sur le site de déclaration d'une méthode ou d'un constructeur Varargs avec un paramètre formel Varargs non-réifiable. Cet avertissement peut être supprimé à l'aide de l'annotation @SafeVarargs.

Le correctif rapide Ajouter @SafeVarargs peut être utilisé en cas d'avertissements relatifs à la pollution de segment de mémoire potentielle dans les déclarations de méthode.

Ajouter @SafeVarargs

Le correctif rapide est également disponible à partir des sites d'appels.

Ajout de l'annotation @SafeVarargs à une déclaration

Le correctif rapide Supprimer @SafeVarargs peut être utilisé en cas d'utilisation incorrecte de l'annotation @SafeVarargs.

Supprimer @SafeVarargs

Supprimer @SafeVarargs

Chaînes dans switch

Vous pouvez utiliser un objet de chaîne dans l'expression d'une instruction switch.

L'assistant rapide Convertir 'switch' en 'if-else' fonctionne avec les chaînes dans switch.

Assistant rapide Convertir 'switch' en 'if-else'

Il évite l'exception de pointeur nul (NullPointerException) dans le code résultant.

Littéraux binaires et traits de soulignement dans les littéraux numériques

/Dans Java 7, les littéraux de type intégral (byte, short, int et long) peuvent également être exprimés à l'aide du système de nombre binaire. En outre, n'importe quel nombre de caractères de soulignement (_) peut apparaître n'importe où entre des chiffres dans un littéral numérique.

La fonction de changement de valeur d'une variable au cours du débogage prend en charge les traits de soulignement dans les littéraux numériques et les littéraux binaires :

Exemple d'affectation à un entier de littéral binaire comportant des traits de soulignement

Méthodes polymorphiques

Les infobulles Javadoc des références aux méthodes polymorphiques affichent la signature de méthode utilisée.

Signature de méthode polymorphique dans une infobulle Javadoc

A vous de jouer !