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]
Exemples de code pour les nouvelles fonctionnalités de Java 1.7
+1 Code pour les exemples de code difficiles à trouver. Pouvez-vous en ajouter?
Zasz
3
L'inférence de type améliorée semble être une triste copie de C # avec un changement étrange où une référence est tapée, mais l'objet ne l'est pas ?? Quelle comédie!
Zasz
1
@Zasz, oui bien sûr, il est en amélioration continue
didxga
Alors la question est à OP, quelle est votre opinion? Ces améliorations concernent-elles uniquement la productivité ou peuvent-elles vraiment améliorer les performances des programmes? Si aucun bytecode ne change, les nouvelles améliorations de langage peuvent-elles être utilisées avec le bytecode marqué comme 1.5?
Dmitriy R
Bien qu'il ne s'agisse pas d'une amélioration du langage, il y a la nouvelle Objectsclasse, 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))
Carcamano
13
Nouvelle fonctionnalité de Java Standard Edition (JSE 7)
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 =newArrayList<>();
l.add("A");
l.addAll(newArrayList<>());
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:
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é:
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.filepackage 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.
Jusqu'au point! Les dix premiers résultats de recherche Google pour " Fonctionnalités Java " renvoient la liste (inutile):Simple, Object-Oriented, Portable, Platform independent, Secured...
Marinos An
3
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 .
Pour info, c'est une bonne présentation mais assez ancienne et un peu démodée.
Alex Miller
J'ai reçu une page d'erreur en hébreu lorsque j'ai essayé ce lien - y a-t-il une copie plus à jour quelque part?
Simon Nickerson
1
Changements de langue :
-ProjectCoin(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é:
La liste suivante contient des liens vers les pages d'améliorations de Java SE 7.
Swing
IO and New IO
NetworkingSecurityConcurrencyUtilitiesRichInternetApplications(RIA)/DeploymentRequesting and CustomizingAppletDecoration in Dragg able AppletsEmbedding JNLP File in AppletTagDeploying without CodebaseHandlingAppletInitializationStatus with EventHandlersJava2DJava XML – JAXP, JAXB, and JAX-WS
Internationalization
java.lang PackageMultithreadedCustomClassLoaders in Java SE 7JavaProgrammingLanguageBinaryLiteralsStrings in switchStatementsThetry-with-resources StatementCatchingMultipleExceptionTypes and RethrowingExceptions with ImprovedTypeCheckingUnderscores in NumericLiteralsTypeInferenceforGenericInstanceCreationImprovedCompilerWarnings and ErrorsWhenUsingNon-ReifiableFormalParameters with VarargsMethodsJavaVirtualMachine(JVM)JavaVirtualMachineSupportforNon-JavaLanguagesGarbage-FirstCollectorJavaHotSpotVirtualMachinePerformanceEnhancements
JDBC
Vous devriez donner des descriptions plus courtes ou des exemples au lieu de cette liste, ce que nous avons également pu découvrir sur la page officielle Java.
Réponses:
Fonctions et améliorations de Java SE 7 à partir des notes de mise à jour de JDK 7
Voici le résumé des nouvelles fonctionnalités de Java 7 sur la page des fonctionnalités d'OpenJDK 7 :
Exemples de code pour les nouvelles fonctionnalités de Java 1.7
Instruction Try-with-Resources
ce:
devient:
Vous pouvez déclarer plus d'une ressource à fermer:
Les soulignés dans les littéraux numériques
Cordes dans le commutateur
Littéraux binaires
Inférence de type améliorée pour la création d'instances génériques
devient:
Capture d'exceptions multiples
ce:
devient:
SafeVarargs
ce:
devient:
la source
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))
Nouvelle fonctionnalité de Java Standard Edition (JSE 7)
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:
En comparaison, l'exemple suivant compile:
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:
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é:
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.Source: http://ohmjavaclasses.blogspot.com/
la source
Améliorations du langage de programmation Java @ Java7
Référence officielle Référence
officielle avec la référence wiki java8
la source
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 .
la source
Changements de langue :
Modifications de la bibliothèque :
Changements de plate-forme :
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é:
http://radar.oreilly.com/2011/09/java7-features.html
la source
int val 12_15; long phoneNo = 01917_999_720L;
la source
Je pense que ForkJoinPool et les améliorations associées à Executor Framework sont un ajout important à Java 7.
la source
La liste suivante contient des liens vers les pages d'améliorations de Java SE 7.
Référence 1 Référence 2
la source