Java 7 disponible en version finale
Oracle publie son environnement d'exécution et le JDK 7
Le 2011-07-07 13:48:06, par lunatix, Rédacteur
Mise à jour du 27 octobre 2011 par Idelways
Une anomalie découverte quelques jours avant la sortie de Java 7, et laissée pour compte par manque de temps, vient d'être écartée.
Oracle sort l'Update 1 de Java 7 qui corrige l'optimisation défectueuse du compilateur Hotspot, responsable de boucles potentiellement erronées, pouvant produire des résultats de calculs incorrects, ou faire crasher la JVM à l'exécution.
Cette anomalie touchait notamment Apache Lucence, le célèbre moteur de recherche en full TEXT, ainsi que son sous-produit Solr.
Oracle a sortie cet Update il y a quelques jours, mais n'a mis à jour qu'aujourd'hui les statuts des trois rapports du compilateur "JIT [Just in Time] et les bogues de boucle" signalés par la fondation. D'autres bogues relatifs, découverts en interne, ont été corrigés.
Uwe Schindler, un contributeur du projet confirme après des tests que l'anomalie a bien été résorbée. Il n'a cependant pas précisé si l'utilisation des flags -XX:+OptimizeStringConcat et -XX:+AggressiveOpts reste toujours recommandée.
Télécharger Java 7u1
Source : Oracle, blog d'un contributeur à Apache
Un bogue sur Java 7 paralyse Apache Lucene et Solr
Une optimisation défectueuse du compilateur Hotspot incriminée
Mise à jour du 1 août 2011 par Idelways
Un sérieux bogue vient d'être dévoilé suite au lancement final de Java 7. Il entrave le fonctionnement de deux projets de la fondation Apache, notamment Lucene, le célèbre moteur de recherche en full-text.
Le problème se situe plus précisément au niveau du compilateur Hotspot qui intègre un optimisateur défectueux, capable de créer des boucles potentiellement erronées.
Par conséquent, la machine virtuelle Java peut planter à l'exécution, ou produire des résultats de calculs incorrects.
Pour Lucene, ce bogue risque de corrompre l'index, plus particulièrement sur la version qui embarque le PulsingCodec.
L'autre projet phare de la fondation Apache affecté par ce bogue est Solr, le moteur de recherche issu de la bibliothèque Lucene sus-citée.
Oracle aurait découvert ce bogue 5 jours avant la sortie de Java 7 en version définitive, mais aurait préféré reporter sa correction au deuxième « service release » de Java 7, le premier étant réservé à la correction des bogues de sécurité, sauf changement de planning.
En attendant, les utilisateurs des deux projets doivent temporiser avant de passer à Java 7 en production ou l'utiliser avec l'option -XX:-UseLoopPredicate qui désactive l'optimisation et met ainsi l'index Lucene à l'abri.
Un bogue similaire peut surgir sur Java 6 avec les flags -XX:+OptimizeStringConcat et -XX:+AggressiveOpts qui activent des optimisations Hotspot par défaut désactivées.
Trois rapports de bogues ont été admis par Oracle, l'un de faible priorité et les deux autres de priorité modérée.
De pareils dysfonctionnements n'ont pas encore été signalés sur des produits autres que ceux de la fondation Apache.
Pour plus d'informations sur les nouveautés de Java 7, lire ci-dessous.
Source : avertissement de la fondation Apache
Et vous ?
Qu'en pensez-vous de ce bogue ? L'avez-vous rencontré ?
Java 7 disponible en version finale
Oracle publie son environnement d'exécution et le JDK 7
Mise à jour du 29/07/11, par Hinault Romaric
Après plus de quatre ans depuis la sortie de Java 6, Oracle vient de publier la version finale de Java Runtime Environment (JRE) 7.
Cette version est la première de Java SE publiée depuis la reprise du langage par Oracle suite au rachat de SUN.
Java SE 7 apporte un support pour un bon nombre de tendances qui ont déferlé dans le monde du développement informatique depuis la publication de la dernière version. Il offre une prise en charge amélioré des langages dynamique conçus pour fonctionner sur la machine virtuelle Java comme Scala et Groovy.
Java SE 7 embarque une API permettant de simplifier l’exécution d’un programme à travers des processeurs multi-cœurs. Et plusieurs autres nouveautés importantes (lire-ci avant).
Le nouveau Runtime Java 7 peut-être utilisé par les développeurs avec les environnements de développement NetBeans ou encore IntelliJ IDEA 10.5. Oracle a annoncé qu’il publiera avant la fin de l’année une mise à jour de son EDI JDeveloper pour un support de Java 7.
Le Runtime Java 7 est disponible pour les systèmes d’exploitations Linux, Solaris et Windows 32 bits et 64 bits.
Oracle a également annoncé la disponibilité de la version finale du Kit de Développement de Java 7 (JDK7),
Télécharger Java 7 sur le site d'Oracle
Télécharger JDK 7 sur le site d'Oracle
La RC de Java 7 est disponible
nio2, coin, javadoc et autres nouveautés
Enfin ! Plus de quatre ans après la dernière version majeure de Java, Oracle vient d'annoncer la disponibilité de Java 7 en Release Candidate.
Oracle relance enfin l'évolution de la plate-forme phare qu'est Java qui avait été ralentie par la sortie de JavaFX 1.X et ensuite par le rachat de Sun par Oracle.
Les nouveautés, si elles sont moins nombreuses qu'initialement espérées (un bon nombre ont été repoussées pour Java 8) sont tout de même importantes. Nous allons en faire un rapide tour d'horizon.
Le Projet Coin va apporter des nouveautés au cœur du langage.
Nio2 Le gros morceau à avaler car cela va remplacer l'antique java.io.File (qui reste cependant présent) par une API beaucoup plus moderne et complète. La plupart de ces nouveautés se trouvent dans le package java.nio.File
invokeDynamic : Une amélioration de la JVM pour les langages dynamiques (Groovy par exemple) mais qui sera utilisable directement en Java via l'API java.lang.invoke. CGlib et JavaAssist vont sûrement beaucoup évoluer.
Concurrency and collections updates (jsr166y) : pour améliorer vos programmes multi-threadés avec la classe ForkJoinPool
Plus anecdotique mais quand même bien sympathique :
un nouveau look beaucoup plus moderne pour la javadoc :
Et enfin, toute l'API est pleine de petites nouveautés. Par exemple, la nouvelle classe Objects que vous pouvez découvrir avec Adiguba.
L'annonce sur le site d'oracle
Télécharger Java 7 sur le site d'Oracle
La liste officielle des nouveautés
Une anomalie découverte quelques jours avant la sortie de Java 7, et laissée pour compte par manque de temps, vient d'être écartée.
Oracle sort l'Update 1 de Java 7 qui corrige l'optimisation défectueuse du compilateur Hotspot, responsable de boucles potentiellement erronées, pouvant produire des résultats de calculs incorrects, ou faire crasher la JVM à l'exécution.
Cette anomalie touchait notamment Apache Lucence, le célèbre moteur de recherche en full TEXT, ainsi que son sous-produit Solr.
Oracle a sortie cet Update il y a quelques jours, mais n'a mis à jour qu'aujourd'hui les statuts des trois rapports du compilateur "JIT [Just in Time] et les bogues de boucle" signalés par la fondation. D'autres bogues relatifs, découverts en interne, ont été corrigés.
Uwe Schindler, un contributeur du projet confirme après des tests que l'anomalie a bien été résorbée. Il n'a cependant pas précisé si l'utilisation des flags -XX:+OptimizeStringConcat et -XX:+AggressiveOpts reste toujours recommandée.
Source : Oracle, blog d'un contributeur à Apache
Un bogue sur Java 7 paralyse Apache Lucene et Solr
Une optimisation défectueuse du compilateur Hotspot incriminée
Mise à jour du 1 août 2011 par Idelways
Un sérieux bogue vient d'être dévoilé suite au lancement final de Java 7. Il entrave le fonctionnement de deux projets de la fondation Apache, notamment Lucene, le célèbre moteur de recherche en full-text.
Le problème se situe plus précisément au niveau du compilateur Hotspot qui intègre un optimisateur défectueux, capable de créer des boucles potentiellement erronées.
Par conséquent, la machine virtuelle Java peut planter à l'exécution, ou produire des résultats de calculs incorrects.
Pour Lucene, ce bogue risque de corrompre l'index, plus particulièrement sur la version qui embarque le PulsingCodec.
L'autre projet phare de la fondation Apache affecté par ce bogue est Solr, le moteur de recherche issu de la bibliothèque Lucene sus-citée.
Oracle aurait découvert ce bogue 5 jours avant la sortie de Java 7 en version définitive, mais aurait préféré reporter sa correction au deuxième « service release » de Java 7, le premier étant réservé à la correction des bogues de sécurité, sauf changement de planning.
En attendant, les utilisateurs des deux projets doivent temporiser avant de passer à Java 7 en production ou l'utiliser avec l'option -XX:-UseLoopPredicate qui désactive l'optimisation et met ainsi l'index Lucene à l'abri.
Un bogue similaire peut surgir sur Java 6 avec les flags -XX:+OptimizeStringConcat et -XX:+AggressiveOpts qui activent des optimisations Hotspot par défaut désactivées.
Trois rapports de bogues ont été admis par Oracle, l'un de faible priorité et les deux autres de priorité modérée.
De pareils dysfonctionnements n'ont pas encore été signalés sur des produits autres que ceux de la fondation Apache.
Pour plus d'informations sur les nouveautés de Java 7, lire ci-dessous.
Source : avertissement de la fondation Apache
Et vous ?
Java 7 disponible en version finale
Oracle publie son environnement d'exécution et le JDK 7
Mise à jour du 29/07/11, par Hinault Romaric
Après plus de quatre ans depuis la sortie de Java 6, Oracle vient de publier la version finale de Java Runtime Environment (JRE) 7.
Cette version est la première de Java SE publiée depuis la reprise du langage par Oracle suite au rachat de SUN.
Java SE 7 apporte un support pour un bon nombre de tendances qui ont déferlé dans le monde du développement informatique depuis la publication de la dernière version. Il offre une prise en charge amélioré des langages dynamique conçus pour fonctionner sur la machine virtuelle Java comme Scala et Groovy.
Java SE 7 embarque une API permettant de simplifier l’exécution d’un programme à travers des processeurs multi-cœurs. Et plusieurs autres nouveautés importantes (lire-ci avant).
Le nouveau Runtime Java 7 peut-être utilisé par les développeurs avec les environnements de développement NetBeans ou encore IntelliJ IDEA 10.5. Oracle a annoncé qu’il publiera avant la fin de l’année une mise à jour de son EDI JDeveloper pour un support de Java 7.
Le Runtime Java 7 est disponible pour les systèmes d’exploitations Linux, Solaris et Windows 32 bits et 64 bits.
Oracle a également annoncé la disponibilité de la version finale du Kit de Développement de Java 7 (JDK7),
La RC de Java 7 est disponible
nio2, coin, javadoc et autres nouveautés
Enfin ! Plus de quatre ans après la dernière version majeure de Java, Oracle vient d'annoncer la disponibilité de Java 7 en Release Candidate.
Oracle relance enfin l'évolution de la plate-forme phare qu'est Java qui avait été ralentie par la sortie de JavaFX 1.X et ensuite par le rachat de Sun par Oracle.
Les nouveautés, si elles sont moins nombreuses qu'initialement espérées (un bon nombre ont été repoussées pour Java 8) sont tout de même importantes. Nous allons en faire un rapide tour d'horizon.
Le Projet Coin va apporter des nouveautés au cœur du langage.
- Strings in switch
Code : 1
2
3case "truc": processTruc(s); break;
- Binary integral literals
Code : int value = 0b10000000; // 128
- Underscores in numeric literals
Code : 1
2
3int oneMillion = 1_000_000; //plutôt que int oneMillion = 1000000;
- Multi-catch and more precise rethrow
Code : 1
2
3
4catch (IOException|SQLException ex) { logger.log(ex); throw ex; }
- Improved type inference for generic instance creation (diamond)
Code : 1
2
3Map<String, List<String>> map = new HashMap<String, List<String>>(); //pourra s’écrire plus rapidement grâce au diamond opérateur : Map<String, List<String>> map = new HashMap<>();
- try-with-resources statement
Code : 1
2
3
4
5
6
7
8
9
10BufferedReader br = new BufferedReader(new FileReader(path)); try { return br.readLine(); } finally { br.close(); } //pourra s’écrire : try (BufferedReader br = new BufferedReader(new FileReader(path)) { return br.readLine(); }
- Simplified varargs method invocation
Nio2 Le gros morceau à avaler car cela va remplacer l'antique java.io.File (qui reste cependant présent) par une API beaucoup plus moderne et complète. La plupart de ces nouveautés se trouvent dans le package java.nio.File
- Détection de modification de fichiers grâce à la classe WatchService
- Une toute nouvelle API de manipulation de fichiers.
- Gestion des E/S asynchrones
- Enfin une copie de fichier simple
Code : 1
2
3
4FileSystem default = FileSystems.getDefault(); Path source = default.getPath("pets/cat.txt"); Path target = default.getPath("nicePets/nicecat.txt"); Files.copy(source, target);
- Un support complet des liens physiques et symboliques (si le système de fichier les supporte).
- Une gestion propre des erreurs, via des exceptions.
- Un API complète pour l'accès aux attributs des fichiers, qui supporte les fonctionnalités de chaque système (DOS et Posix) ainsi que la gestion des utilisateurs (propriétaire et liste ACL). Le tout parfaitement extensible pour supporter d'autres systèmes de fichiers via des providers. D'ailleurs ce dernier point se concrétise en standard par l'intégration du filesystem "ZIP" qui permet de traiter un fichier ZIP comme un système de fichier standard (ou presque).
Ainsi pour extraire un fichier d'un ZIP on peut faire ceci (noter l'utilisation du try-with-resource) :
Code : 1
2
3
4
5try (FileSystem zip = FileSystems.newFileSystem(Paths.get("file.zip"), null)) { Path source = zip.getPath("pets/cat.txt"); Path target = Paths.get("nicePets/nicecat.txt"); Files.copy(source, target); }
invokeDynamic : Une amélioration de la JVM pour les langages dynamiques (Groovy par exemple) mais qui sera utilisable directement en Java via l'API java.lang.invoke. CGlib et JavaAssist vont sûrement beaucoup évoluer.
Concurrency and collections updates (jsr166y) : pour améliorer vos programmes multi-threadés avec la classe ForkJoinPool
Plus anecdotique mais quand même bien sympathique :
un nouveau look beaucoup plus moderne pour la javadoc :
Et enfin, toute l'API est pleine de petites nouveautés. Par exemple, la nouvelle classe Objects que vous pouvez découvrir avec Adiguba.
-
UtherExpert éminent séniorC'est particulièrement pour cette raison que je n'aime pas cette notation : dans ce cas, le type de la variable listeClient n'est pas evident au premier coup d'oeil.
A mon avis, le fait d'avoir systématiquement le type de la variable en début de déclaration apporte vraiment un plus à la lisibilité.le 07/07/2011 à 23:16 -
tchize_Expert éminent séniorce qui m'ennuie quand on ne précise pas le type, c'est que si demain la méthode retourne un sous type avec des méthodes supplémentaire (genre machin(String) en plus de machin(Object), le code va changer de sens, alors que si on avait sagement visé le type connu au moment de la création du code (exemple une interface X) machin(String) n'entrerais jamais dans l'équation.
Bref c'est un des nombreux effets de bord qui ont du être pirs en compte dans la décision je suppose
Sans compter qu'un typeage automatique, ca va au delà de facilité l'utilisation des genericle 08/07/2011 à 10:27 -
_skipExpert éminentIl a fallu quoi? 5 ans bien tapés pour ça?
Je suis un peu déçu par l'absence d'un sucre syntaxique pour les get/set. Et notre API de date promise censée remplacer cette grosse merde (désolé) de Calendar dans tout ça?
Quant à la syntaxe en diamant, je trouve que l'inférence de type (le mot clef "var" en C#) aurait été une tellement meilleure solution.
Avec le try-with-resource, on peut ajouter des catch et finally (et donc l'exemple est un poil naze là-dessus) ou même pas ?
Code : 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25BufferedReader br = null; try { br = new BufferedReader(new FileReader(path)); return br.readLine(); } finally { if( br != null) { try { br.close() } catch(IOException ex) { //rien } } } }
le 07/07/2011 à 17:57 -
_skipExpert éminentDésolé de te faire pitié mais sur ce coup t'es pas à jour. Le mot clef var en c# ne désigne en rien un type variable, écrire :
Code : var table = new Hashtable<int, List<Client>>()
Code : Hashtable<int, List<Client>> table = new Hashtable<int, List<Client>>()
Code : var liste = null;
Mais cela permet d'écrireCode : 1
2foreach(var listeClient in table.Values )
Code : 1
2for( List<Client> listeClient : table.values() )
le 07/07/2011 à 20:35 -
Hinault RomaricResponsable .NETJava 7 disponible en version finale
Oracle publie son environnement d'exécution et le JDK 7
Mise à jour du 29/07/11
Après plus de quatre ans depuis la sortie de Java 6, Oracle vient de publier la version finale de Java Runtime Environment (JRE) 7.
Cette version est la première de Java SE publiée depuis la reprise du langage par Oracle suite au rachat de SUN.
Java SE 7 apporte un support pour un bon nombre de tendances qui ont déferlé dans le monde du développement informatique depuis la publication de la dernière version. Il offre une prise en charge amélioré des langages dynamique conçus pour fonctionner sur la machine virtuelle Java comme Scala et Groovy.
Java SE 7 embarque une API permettant de simplifier l’’exécution d’un programme à travers des processeurs multi-cœurs. Et plusieurs autres nouveautés importantes (lire-ci avant).
Le nouveau Runtime Java 7 peut-être utilisé par les développeurs avec les environnements de développement NetBeans ou encore IntelliJ IDEA 10.5. Oracle a annoncé qu’il publiera avant la fin de l’année une mise à jour de son EDI JDeveloper pour un support de Java 7.
Le runtime Java 7 est disponible pour les systèmes d’exploitations Linux, Solaris et Windows 32 bits et 64 bits.
Oracle a également annoncé la disponibilité de la version finale du Kit de Développement de Java 7 (JDK7),Télécharger Java 7 sur le site d'Oracle Télécharger JDK 7 sur le site d'Oracle le 29/07/2011 à 11:52 -
FlaburganModérateurUn seul mot : ENFIN !
Oracle a peut être bien fait de reporter la majorité des nouveautés à Java 8. Il fallait absolument qu'une mise à jour sorte, pour prouver que le langage continue d'évoluer...le 29/07/2011 à 13:22 -
UtherExpert éminent séniorCe qui est horrible dans l'exemple, c'est surtout d'utiliser les underscores dans les noms de variable alors que Java recommande d'utiliser les majuscules pour démarquer les mots.
Mais à mon avis, les underscores à l’intérieur d'un chiffre peuvent le rendre bien plus lisible. C'est même limite indispensable avec les littéraux binaires.
Justement! L'un des principaux intérêt du "try with ressource" est que le close() est fait automatiquement et proprement quand on sort du bloc try.
On peut rajouter un catch et un finally si on le souhaite, mais la plupart du temps, ça ne sera plus nécessaire.le 07/07/2011 à 16:43 -
tchize_Expert éminent séniorok merci pour l'info, je suis pas trop c#
Pour le diamant, je sais qu'il y a eu beaucoup de discussion a l'époque pour savoir si il fallait inférer à gauche, à droite, des deux coté, et quand on infère de savoir dans quel règles on applique. Dans tous les cas où on regardais le problème, il y avait des pour et des contres, et comme toujours, il faut finir par prendre une décision.
L'avantage avec le diamant c'est qu'on peut faire des choses du genreCode : 1
2
3
4
5MonType<Map<String,String>> donnee; if (condition) donnee = new MonSousType<>(); else donnee = new MonTypeReadOnly<>();
le 07/07/2011 à 22:10 -
tchize_Expert éminent séniorEntre nous, tu préfère tomber sur un code où une constante est écrite
100_000_000
ou
100000000
moi, au moins, dans le premier cas je vois immédiatement que la constante vaut 100 millionsDans le deuxième je dois balader mon curseur pour compter les 0. le 08/07/2011 à 10:59 -
UtherExpert éminent séniorEncore faut il que l'énumération ait un sens. S'il s'agit de créer une énumération qui ne sert que pour un switch c'est bidon.
De toute façon quand ces gens la voient que les String dans un switch ne marchent pas, ils font tout simplement une chaine de if, pas une énumération.le 29/07/2011 à 15:33