Quelles nouvelles fonctionnalités de java 7 vont être implémentées? Et que font-ils maintenant?
Réponses:
Voici le résumé des nouvelles fonctionnalités de Java 7 sur la page des fonctionnalités d'OpenJDK 7 :
vm JSR 292: prise en charge des langages à typage dynamique (InvokeDynamic) Vérification stricte des fichiers de classe lang JSR 334: Petites améliorations linguistiques (Project Coin) architecture de chargeur de classe de mise à niveau de base Méthode pour fermer un URLClassLoader Mises à jour de la concurrence et des collections (jsr166y) i18n Unicode 6.0 Amélioration des paramètres régionaux Paramètres régionaux utilisateur et paramètres régionaux d'interface utilisateur distincts ionet JSR 203: plus de nouvelles API d'E / S pour la plate-forme Java (NIO.2) Fournisseur de système de fichiers NIO.2 pour les archives zip / jar SCTP (protocole de transmission de contrôle de flux) SDP (protocole direct de sockets) Utiliser la pile IPv6 de Windows Vista TLS 1.2 Sec Cryptographie à courbe elliptique (ECC) jdbc JDBC 4.1 pipeline XRender client pour Java 2D Créer de nouvelles API de plate-forme pour les fonctionnalités graphiques 6u10 Look-and-feel Nimbus pour Swing Composant Swing JLayer Synthétiseur de sons Gervill [NOUVEAU] web Mettre à jour la pile XML mgmt Enhanced MBeans [MISE À JOUR]
ce:
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
}
int one_million = 1_000_000;
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;
}
int binary = 0b1001_1001;
Map<String, List<String>> anagrams = new HashMap<String, List<String>>();
devient:
Map<String, List<String>> anagrams = new HashMap<>();
ce:
} 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;
}
ce:
@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);
}
}
Objects
classe, avec des méthodes statiques pour éviter d'avoir à vérifier les références nulles. Exemple: if (obj != null && obj.equals(anotherObj))
devientif (Objects.equals(obj, anotherObj))
Décorez les composants avec la classe JLayer:
La classe JLayer est un décorateur flexible et puissant pour les composants Swing. La classe JLayer dans Java SE 7 est similaire dans l'esprit au projet de projet JxLayer sur java.net. La classe JLayer était initialement basée sur le projet JXLayer, mais son API a évolué séparément.
Chaînes dans l'instruction switch :
Dans le JDK 7, nous pouvons utiliser un objet String dans l'expression d'une instruction switch. Le compilateur Java génère généralement un bytecode plus efficace à partir d'instructions switch qui utilisent des objets String que d'instructions if-then-else chaînées.
Inférence de type pour une instance générique:
Nous pouvons remplacer les arguments de type requis pour appeler 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 angulaires est officieusement appelée le diamant. Java SE 7 prend en charge l'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 dans le 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);
Attraper plusieurs types d'exceptions et relancer les exceptions avec une vérification de type améliorée:
Dans Java SE 7 et versions ultérieures, un seul bloc catch peut gérer plusieurs types d'exception. Cette fonctionnalité peut réduire la duplication de 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 des types différents. L'exemple suivant, qui est valide dans Java SE 7 et versions ultérieures, é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 gérer, et chaque type d'exception est séparé par une barre verticale (|).
Le package java.nio.file
Le java.nio.file
package et son package associé, 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 JDK 7.
Améliorations du langage de programmation Java @ Java7
Référence officielle Référence
officielle avec la référence wiki java8
Simple, Object-Oriented, Portable, Platform independent, Secured...
En plus de ce que John Skeet a dit, voici un aperçu du projet Java 7 . Il comprend une liste et une description des fonctionnalités.
Remarque: JDK 7 est sorti le 28 juillet 2011, vous devriez donc maintenant vous rendre sur le site officiel java SE .
Changements de langue :
-Project Coin (small changes)
-switch on Strings
-try-with-resources
-diamond operator
Modifications de 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 fonctionnalités nouvellement ajoutées de JAVA 7, l'explication est claire avec les petits exemples possibles pour chaque fonctionnalité:
Utilisation de l'opérateur Diamond (<>) pour la création d'instances génériques
Map<String, List<Trade>> trades = new TreeMap <> ();
Utilisation de chaînes dans les instructions switch
String status= “something”;
switch(statue){
case1:
case2:
default:
}
Soulignement dans les littéraux numériques
int val 12_15; long phoneNo = 01917_999_720L;
Utilisation d'une instruction catch unique pour lever plusieurs exceptions à l'aide de «|» opérateur
catch(IOException | NullPointerException ex){
ex.printStackTrace();
}
Pas besoin de fermer les ressources () car Java 7 fournit une instruction try-with-resources
try(FileOutputStream fos = new FileOutputStream("movies.txt");
DataOutputStream dos = new DataOutputStream(fos)) {
dos.writeUTF("Java 7 Block Buster");
} catch(IOException e) {
// log the exception
}
littéraux binaires avec le préfixe «0b» ou «0B»
La liste suivante contient des liens vers les pages d'améliorations de Java SE 7.
Swing
IO and New IO
Networking
Security
Concurrency Utilities
Rich Internet Applications (RIA)/Deployment
Requesting and Customizing Applet Decoration in Dragg able Applets
Embedding JNLP File in Applet Tag
Deploying without Codebase
Handling Applet Initialization Status with Event Handlers
Java 2D
Java XML – JAXP, JAXB, and JAX-WS
Internationalization
java.lang Package
Multithreaded Custom Class Loaders in Java SE 7
Java Programming Language
Binary Literals
Strings in switch Statements
The try-with-resources Statement
Catching Multiple Exception Types and Rethrowing Exceptions with Improved Type Checking
Underscores in Numeric Literals
Type Inference for Generic Instance Creation
Improved Compiler Warnings and Errors When Using Non-Reifiable Formal Parameters with Varargs Methods
Java Virtual Machine (JVM)
Java Virtual Machine Support for Non-Java Languages
Garbage-First Collector
Java HotSpot Virtual Machine Performance Enhancements
JDBC