Nouvelles fonctionnalités de java 7


Quelles nouvelles fonctionnalités de java 7 vont être implémentées? Et que font-ils maintenant?

Author: Ashutosh Singh, 2008-10-18

7 answers

Il s'agit d'une version de Java SE 7 avec des fonctionnalités et des améliorations

De JDK 7 Release Notes

Ceci est le résumé des nouvelles fonctionnalités de Java 7 de la page OpenJDK 7 features :

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 dans Java 1.7

Instruction Try-with-resources

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 plusieurs ressources à fermer:

try (
   InputStream in = new FileInputStream(src);
   OutputStream out = new FileOutputStream(dest))
{
 // code
}

Traits de soulignement dans les littéraux numériques

int one_million = 1_000_000;

Chaînes dans commutateur

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

Littéraux binaires

int binary = 0b1001_1001;

Amélioration de l'inférence de type pour la Création d'instance générique

Map<String, List<String>> anagrams = new HashMap<String, List<String>>();

Devient:

Map<String, List<String>> anagrams = new HashMap<>();

Capture d'exception multiple

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);
    }
}
 181
Author: didxga, 2016-05-15 23:02:43

Nouvelle fonctionnalité de Java Standard Edition (JSE 7)

  1. 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 JxLayer project project at java.net. La classe JLayer était initialement basée sur le projet JXLayer, mais son API a évolué séparément.

  2. Les 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 qu'à partir d'instructions if-then-else chaînées.

  3. 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 de la cadre. Cette paire d'équerres s'appelle officieusement le diamant. Java SE 7 prend en charge l'inférence de type limitée pour la création d'instance générique; 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);
    
  4. Attraper plusieurs Types d'exceptions et Repenser les Exceptions avec un Type amélioré Vérification:

    Dans Java SE 7 et versions ultérieures, un seul bloc catch peut gérer plus d'un type d'exception. Cette fonctionnalité peut réduire la duplication de code. Considérons 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 valide dans Java SE 7 et versions ultérieures, élimine 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 (|).

  5. Le java.nio.paquet de fichiers

    Le paquet java.nio.file et son paquet associé, java.nio.fichier.attribut, fournir un support complet pour les E/S de fichiers et pour accéder au système de fichiers. Un fournisseur de système de fichiers zip est également disponible dans JDK 7.

Source: http://ohmjavaclasses.blogspot.com/

 12
Author: apresh, 2015-11-16 22:40:01

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 a été publié le 28 juillet 2011, vous devriez donc maintenant aller sur le site officieljava SE .

 3
Author: David G, 2011-08-09 19:37:59

Les changements de Langue:

-Project Coin (small changes)
-switch on Strings
-try-with-resources
-diamond operator

Changements de bibliothèque :

-new abstracted file-system API (NIO.2) (with support for virtual filesystems)
-improved concurrency libraries
-elliptic curve encryption
-more incremental upgrades

Changement de Plateforme:

-support for dynamic languages

Voici le lien expliquant les nouvelles fonctionnalités de JAVA 7, l'explication est limpide avec les petits exemples possibles pour chaque fonctionnalité:

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

 1
Author: Soumyaansh, 2014-06-30 10:56:07

Utilisation de l'opérateur Diamond() pour la création d'instance générique

Map<String, List<Trade>> trades = new TreeMap <> ();

Utilisation de chaînes dans les instructions switch

String status=  “something”;
   switch(statue){
     case1: 
     case2: 
     default:
    }

Underscore dans les littéraux numériques

Int val 12_15; longue phoneNo = 01917_999_720L;

Utilisation d'une seule instruction catch pour lancer plusieurs exceptions en utilisant l'opérateur " / "

catch(IOException | NullPointerException ex){
          ex.printStackTrace();   
    }

Pas besoin de fermer () les ressources car Java 7 fournit try-with-resources déclaration

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 préfixe "0b" ou"0B"

 0
Author: Amit, 2018-05-15 18:05:04

La liste suivante contient des liens vers les pages 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

Référence 1 Référence 2

 -2
Author: Muhammad Imran Tariq, 2011-11-16 07:18:43