Quelles sont les nouvelles fonctionnalités qui vont être implémentées dans java 7 ? Et que font-ils actuellement ?
Réponses
Trop de publicités?Java SE 7 Caractéristiques et améliorations à partir des notes de version du JDK 7
Voici le résumé des nouvelles fonctionnalités de Java 7, tiré du site Web de la Commission européenne. Page des caractéristiques d'OpenJDK 7 :
vm JSR 292: Support for dynamically-typed languages (InvokeDynamic) Strict class-file checking lang JSR 334: Small language enhancements (Project Coin) core Upgrade class-loader architecture Method to close a URLClassLoader Concurrency and collections updates (jsr166y) i18n Unicode 6.0 Locale enhancement Separate user locale and user-interface locale ionet JSR 203: More new I/O APIs for the Java platform (NIO.2) NIO.2 filesystem provider for zip/jar archives SCTP (Stream Control Transmission Protocol) SDP (Sockets Direct Protocol) Use the Windows Vista IPv6 stack TLS 1.2 sec Elliptic-curve cryptography (ECC) jdbc JDBC 4.1 client XRender pipeline for Java 2D Create new platform APIs for 6u10 graphics features Nimbus look-and-feel for Swing Swing JLayer component Gervill sound synthesizer \[NEW\] web Update the XML stack mgmt Enhanced MBeans \[UPDATED\]
Exemples de code pour les nouvelles fonctionnalités de Java 1.7
Déclaration d'essai avec les ressources
ceci :
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
} finally {
br.close();
}
devient :
try (BufferedReader br = new BufferedReader(new FileReader(path)) {
return br.readLine();
}
Vous pouvez déclarer plus d'une ressource à fermer :
try (
InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dest))
{
// code
}
Les underscores dans les littéraux numériques
int one_million = 1_000_000;
Cordes dans l'interrupteur
String s = ...
switch(s) {
case "quux":
processQuux(s);
// fall-through
case "foo":
case "bar":
processFooOrBar(s);
break;
case "baz":
processBaz(s);
// fall-through
default:
processDefault(s);
break;
}
Les littéraux binaires
int binary = 0b1001_1001;
Inférence de type améliorée pour la création d'instances génériques
Map<String, List<String>> anagrams = new HashMap<String, List<String>>();
devient :
Map<String, List<String>> anagrams = new HashMap<>();
Collecte d'exceptions multiples
ceci :
} catch (FirstException ex) {
logger.error(ex);
throw ex;
} catch (SecondException ex) {
logger.error(ex);
throw ex;
}
devient :
} catch (FirstException | SecondException ex) {
logger.error(ex);
throw ex;
}
SafeVarargs
ceci :
@SuppressWarnings({"unchecked", "varargs"})
public static void printAll(List<String>... lists){
for(List<String> list : lists){
System.out.println(list);
}
}
devient :
@SafeVarargs
public static void printAll(List<String>... lists){
for(List<String> list : lists){
System.out.println(list);
}
}
Nouvelle fonctionnalité de Java Standard Edition (JSE 7)
-
Décorer les composants avec la classe JLayer :
La classe JLayer est un décorateur flexible et puissant pour les composants Swing. La classe JLayer de Java SE 7 est similaire dans son esprit au projet JxLayer de java.net. La classe JLayer était initialement basée sur le projet JXLayer, mais son API a évolué séparément.
-
Chaînes de caractères dans le commutateur Déclaration :
Dans le JDK 7 , nous pouvons utiliser un objet String dans l'expression d'une instruction switch. Le compilateur Java génère un bytecode généralement plus efficace à partir des instructions switch qui utilisent des objets String qu'à partir des instructions if-then-else enchaînées.
-
Inférence de type pour l'instance générique :
Nous pouvons remplacer les arguments de type requis pour invoquer le constructeur d'une classe générique par un ensemble vide de paramètres de type (<>) tant que le compilateur peut déduire les arguments de type à partir du contexte. Cette paire de crochets d'angle est appelée de manière informelle le diamant. Java SE 7 prend en charge une inférence de type limitée pour la création d'instances génériques ; vous ne pouvez utiliser l'inférence de type que si le type paramétré du constructeur est évident à partir du contexte. Par exemple, l'exemple suivant ne compile pas :
List<String> l = new ArrayList<>(); l.add("A"); l.addAll(new ArrayList<>());
En comparaison, l'exemple suivant compile :
List<? extends String> list2 = new ArrayList<>(); l.addAll(list2);
-
Capture de plusieurs types d'exceptions et renvoi des exceptions avec une vérification de type améliorée :
Dans Java SE 7 et les versions ultérieures, un seul bloc catch peut traiter plusieurs types d'exception. Cette fonctionnalité permet de réduire la duplication du code. Considérez le code suivant, qui contient du code en double dans chacun des blocs catch :
catch (IOException e) { logger.log(e); throw e; } catch (SQLException e) { logger.log(e); throw e; }
Dans les versions antérieures à Java SE 7, il est difficile de créer une méthode commune pour éliminer le code dupliqué car la variable e a différents types. L'exemple suivant, qui est valable à partir de Java SE 7, élimine le code dupliqué :
catch (IOException|SQLException e) { logger.log(e); throw e; }
La clause catch spécifie les types d'exceptions que le bloc peut traiter, et chaque type d'exception est séparé par une barre verticale (|).
-
Le paquet java.nio.file
En
java.nio.file
et son paquetage connexe, java.nio.file.attribute, fournissent une prise en charge complète des E/S de fichiers et de l'accès au système de fichiers. Un fournisseur de système de fichiers zip est également disponible dans le JDK 7.
Source : http://ohmjavaclasses.blogspot.com/
Améliorations du langage de programmation Java @ Java7
- Littéraux binaires
- Chaînes de caractères dans le commutateur Déclaration
- Essayez avec les ressources ( Comment cela fonctionne ) ou ARM ( Gestion automatique des ressources )
- Traitement des exceptions multiples
- Exceptions supprimées
- underscore dans les littéraux
- Inférence de type pour la création d'instances génériques à l'aide de la syntaxe Diamond
- Amélioration des avertissements et des erreurs du compilateur lors de l'utilisation de paramètres formels non réifiables avec des méthodes Varargs
Référence officielle
Référence officielle avec java8
référence wiki
En plus de ce que John Skeet a dit, voici une aperçu du projet Java 7 . Il comprend une liste et une description des fonctionnalités.
Remarque : le JDK 7 a été publié le 28 juillet 2011, vous devez donc maintenant vous rendre sur le site officiel de la société Site SE java .
Changements linguistiques :
-Project Coin (small changes)
-switch on Strings
-try-with-resources
-diamond operator
Changements dans la bibliothèque :
-new abstracted file-system API (NIO.2) (with support for virtual filesystems)
-improved concurrency libraries
-elliptic curve encryption
-more incremental upgrades
Changements de plate-forme :
-support for dynamic languages
Vous trouverez ci-dessous le lien expliquant les nouvelles fonctionnalités de JAVA 7, l'explication est claire comme de l'eau de roche avec les petits exemples possibles pour chaque fonctionnalité :
- Réponses précédentes
- Plus de réponses