96 votes

Nouvelles fonctionnalités de java 7

Quelles sont les nouvelles fonctionnalités qui vont être implémentées dans java 7 ? Et que font-ils actuellement ?

215voto

didxga Points 2019

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);
    }
}

13voto

apresh Points 61

Nouvelle fonctionnalité de Java Standard Edition (JSE 7)

  1. 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.

  2. 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.

  3. 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);
  4. 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 (|).

  5. 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/

6voto

3voto

David G Points 3588

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 .

1voto

Soumyaansh Points 99

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é :

http://radar.oreilly.com/2011/09/java7-features.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X