• [^] # Re: Petite erreur

    Posté par . En réponse à la dépêche IronRuby 1.0, le futur de Java, Gizzard et Flockdb, rachat de RabbitMQ par SpringSource. Évalué à 7.

    Pas le temps de faire une dépêche mais la meilleur source de renseignement est la page d'alex miller: http://tech.puredanger.com/java7/


    J'ai pas suivit les discussion ces trois derniers mois et la liste n'est pas encore finale. Donc y'a peut être des erreurs. Pour faire très vite:

    On commence par le côté bibliothèque standard

    - NIO2 (new new I/O): Ca continue le travail et ca corrige les défauts de conceptions des NIO. Notamment une nouvelle interface pour l'accès au système de fichier et la possibilité de faire des opérations asynchrones sur des sockets et des descripteurs de fichiers. Et peut être qu'on va enfin avoir les sorties de processus forké en selectable channel (oui actuellement il faut 3 threads par processus forké...)

    - Nouvelle API Date / Time. L'ancienne était très casse gueule à utiliser (surtout de manière thread safe) et ajout de nouvelles fonctions (intervalles etc.)

    - JSR166y: revision de la l'API concurrency. On ajoute un module pour le fork & join et pas mal de classe encore et toujours plus utiles. La JSR166 y'a que du bon dedans mangez en

    - XQJ: Une api XQuery pour java (XML). Pas joué avec donc pas d'avis

    Après au niveau langage:

    - Support des fermetures. Y'a eu tellement de discussions que j'ai meme pas cherché à suivre...

    - Nettoyage automatique des ressources à la sortie d'un bloc. On déclare en début de bloc les ressources que l'on utilise et quand on sort du bloc les méthodes de nettoyage sont automagiquement appelées. Le but est d'éviter le code relou de nettoyage dans les finally et d'éviter les leaks

    - Extension des annotations pour pouvoir les placer un peu plus partout. Un des buts est de pouvoir placer des annotations pour aider les analyseurs statique (indiquer qu'un champ peut être nul ou pas par exemple)

    - Inférence de type (ami du CAML pas la peine d'hurler :p ) plus besoin de doubler la déclaration des generics lors d'un new. Map<List, Integer> map = new Map<>(). Merci pour nos petits doigts !

    - Possibilité de faire des switch/case sur des string


    Et enfin au niveau de la VM (Open JDK):

    - Nouveau garbage collector G1 qui envoit du bois. Fini les stop the world & co. Il peut travailler par région et donc tourne en un temps prévisible. Pas mal configurable. C'est du tout bon mangez en (et regardez comment ca marche)

    - Ajout d'invokedynamic à la JVM. Le support des langages dynamiques va être beaucoup plus aisé.

    - Modularisation du JRE/JDK en petit paquets.


    J'ai pu oublier des choses, et certaines choses viendront certainement s'ajouter d'ici la release. Donc non pas de surcharge d'opérateur (et ca n'a jamais été imaginé, pas dans l'esprit de Java et impossible que ca soit backward compatible). On peut noter qu'un des plus grand absent de Java 7 sont les superpackage (équivalent d'OSGi). Et aussi que le null safe handling (invocation d'une méthode uniquement si l'objet n'est pas nul) ne semble pas avoir fait son chemin. De même le multicatch à l'air mort (exécution d'une même action pour différent type d'exceptions), et ca ca craint !

    Pas de révolution donc, quelques APIs retravaillées, et une VM qui s'affine toujours plus.