Syndication : Atom 1.0  RSS 2.0
Blogs des développeurs   »   adiGuba:Blog

Article complet: Planning Java 7 : retard et plan B

08/09/2010

Permalink 19:37:29, Catégories: Java, 7 (Dolphin), Récapitulatif Java, 209 mots   French (FR) , adiGuba

[Java] Planning Java 7 : retard et plan B


Mark Reinhold, qui dirige les travaux sur la plateforme Java chez Oracle, vient de publier sur son blog personnel un billet intéressant quand à la prochaine version de Java : Re-thinking JDK 7.

Comme on s'en doutait un peu, suite au rachat de Sun par Oracle et à l'ajout de nouveaux projets (Lambda, Jigsaw et Coin), le planning originel n'a pas été respecté (Le JDK7 aurait dû sortir demain !) alors que la version actuellement en développement n'a même pas encore atteint le status de "feature-complete", et qu'il manque toujours plusieurs JSRs...

Et dans ces cas là, il y a toujours une bonne et une mauvaise nouvelle...

[Suite:]

La bonne, c'est qu'Oracle ne va pas abandonner les JSRs pour le développement de Java.

La mauvaise c'est que le JDK7 arrivera bien plus tard qu'on ne le pensait. Tel qu'il est défini actuellement, le JDK7 ne pourrait pas voir le jour avant la mi-2012 !

Toutefois, Oracle semblerait privilégier un "plan B" qui verrait le JDK7 sortir à la mi-2011 (une année plus tôt donc), mais amputé de certaines de ses fonctionnalités (en particulier les projets Lambda, Jigsaw et une partie du projet Coin).

Les fonctionnalités manquantes serait reportées au JDK8 pour la fin de l'année 2012.

Social Bookmarking:

                                     

Adresse de trackback pour cet article:

http://blog.developpez.com/htsrv/trackback.php?tb_id=9264

Commentaires, Trackbacks, Pingbacks:

Connectez-vous pour vous abonner à cet article:

Flux de commentaires pour cet article : Atom 1.0  RSS 2.0
Commentaire de: Baptiste Wicht [Membre] · http://baptiste-wicht.developpez.com
Personnellement, je pense que la bonne solution serait le plan B. Ce serait cool d'avoir une sortie assez vite même avec un peu moins de fonctionnalités et d'avoir ensuite le reste plus tard.
Permalien 08/09/2010 @ 20:12
Commentaire de: lunatix [Membre]
Hum, sans jigsaw closures lambdas : reste pas grand chose non ? Datetime et nio2 ?
Java 6.1 en gros
Ou alors j oublie un gros truc
Permalien 08/09/2010 @ 21:33
Commentaire de: Baptiste Wicht [Membre] · http://baptiste-wicht.developpez.com
On aura apparemment une partie des updates du projet Coin, faudra voir lesquelles.

Faudrait voir précisement ce qu'ils vont inclure dans le JDK7 Plan B.
Permalien 08/09/2010 @ 23:15
Commentaire de: adiGuba [Membre] · http://adiguba.developpez.com

Si on se base sur les derniers builds du JDK7, on peut avoir une idée de ce à quoi ressemblerait le JDK7 "B".

On peut déjà noter des améliorations de la JVM :
  • Compression des pointeurs 64bits afin de diminuer l'occupation mémoire des JVM 64bits.
  • Garbage Collector "Garbage First" (G1).
  • Le support en interne des langages dynamiques via l'instruction invokedynamic.
  • La compilation "tiered" qui cumule les avantages des JIT client et server.



Au niveau des APIs, on pourra surement compter sur ceci :
  • NIO.2 pour l'accès complet au système de fichier et les channels asynchrones
  • La nouvelle API de concurrence (ForkJoin, Phaser, ...).
  • La standardisation des nouveautés du JDK6u10 (nouveau plugin, Java Kernel, fenêtres transparences et non-rectangulaires, mélanges de composants AWT/Swing, LnF Nimbus, JLayer, Painter).
  • L'évolution de quelques classes et package existant (ProcessBuilder, JList<T> java.net, javax.net.ssl, ...).




Quand au projet Coin, il est quasiment totalement implémenté dans les derniers builds (litéraux numériques, switch sur String, opérateur en losange, multicatch et rethrow, try-with-resources).
En fait il ne manque que deux éléments originellement prévu :
  • Le support syntaxique des collections (à la manière des tableaux).
  • La package java.dyn qui devrait permettre de supporter l'invocation dynamique dans le langage Java (InvokeDynamic et MethodHandle). En réalité ce package est déjà présent dans les derniers builds mais c'est désactivé par défaut...



Après le report des Lambdas pourraient permettre de voir arriver une API adaptée...


a++
Permalien 09/09/2010 @ 10:03
Commentaire de: Loic [Membre] · http://coffeebean.loicdescotte.com
Je suis vraiment déçu qu'on doive encore encore attendre au mois 2 ans pour lambda...
Je crois qu'il est vraiment temps d'apprendre le Scala :D

Avec le temps qu'ils ont en plus si ils pouvaient apporter un support des properties, c'est pas indispensable mais ça allégerait toujours un peu les classes...
Permalien 09/09/2010 @ 10:50
Commentaire de: Loic [Membre] · http://coffeebean.loicdescotte.com
Pour ce qui est du invokedynamic, ça améliore vraiment la rapidité d'execution des langages dynamiques?
ça donne quoi sur groovy par exemple, quelqu'un a essayé?

Loic
Permalien 09/09/2010 @ 11:43
Commentaire de: TheNOHDirector [Membre]
@Loic
Scal offre certainement des paradigmes très intéressants, les traits, les acteurs, la programmation fonctionnelle, et d'autres trucs...

Cependant Scala n'est pas sans défaut, typiquement à propos des dates :
"Java's class libraries define powerful utility classes, such as Date and DateFormat. Since Scala interoperates seemlessly with Java, there is no need to..."
cf. www.scala-lang.org/docu/files/ScalaTutorial.pdf

Honnêtement les objets Date sont connus pour être mutable, avec une API mal conçue, et avec des problèmes de performance. C'est typiquement le genre d'objet à ne pas utiliser dans une architecture concurrente (et je pense là aux acteurs sur lequel Scala repose entre autres).
Permalien 09/09/2010 @ 12:55
Commentaire de: Uther [Membre]
C'est dommage, mais en même temps je préfère ça que d'avoir des lambda a moitié finis.

@Adiguba> Il me semblait que l'intégration de JodaTime était prévue à une époque, ce n'est plus d'actualité?

@Loic> Il me semble que Groovy n'en tire pas encore partie. Ça nécessite tout de même des changements en profondeur du compilateur.
Mais d'après quelques tests qui ont été fait sur certains langage dynamiques, le gain potentiel est très conséquent.

Permalien 09/09/2010 @ 14:45
Commentaire de: adiGuba [Membre] · http://adiguba.developpez.com
@Uther : Tu veux parler de la JSR 310 (Date and Time API) : c'était seulement pressentie, mais déjà absent du planning de février 2009 : http://openjdk.java.net/projects/jdk7/features/
Peut-être que cela intègrera le JDK8...

@Loic : L'intérêt de l'invokedynamic c'est que c'est géré au niveau de la JVM via une instruction spéciale. Actuellement les invocations de méthode sont trop rigide, et cela nécessite de manipuler un méthode connu sur un type connu. Bref tout l'inverse de ce qu'on peut faire avec un langage dynamique. Une des solutions consiste à passer par une méthode generique, qui utilisera la reflection pour rechercher et exécuter la bonne méthode.

Mais la réflection reste assez lourde, même s'il y a eu d'énorme progrès dans le domaine.
Surtout si l'on compare à un simple appel de méthode : cela impose plusieurs vérifications (type de l'instance, des paramètres, visibilité de la méthode, ...) une conversion des types primitifs vers leurs types Wrapper et l'utilisation d'un tableau pour stocker les paramètres.


Avec invokedynamic, le premier appel de la méthode exécute une méthode bootstrap qui va se charger de rechercher la méthode à invoquer, puis de retourner un MethodHandle vers cette dernière. Les appels successif utiliseront directement ce MethodHandle.

Or les MethodHandles apportent plusieurs avantages :
  • Les types sont passées tels quel, sans être encapsulé dans un tableau ni "wrappé".
  • Les règles de sécurité et de visibilité sont vérifiées uniquement à la création du handle, et non pas à chaque appel comme avec la reflection.
  • Cela correspond en quelques sortes à un pointeur vers la méthode, donc le coût d'appel est équivalent à celui d'une méthode classique.


Donc en théorie cela devrait booster les performances des implémentations de langages dynamiques sur une JVM ;)



Maintenant cela imposera d'utiliser une JVM 1.7, ce qui risque de retarder les implémentations.




L'invokedynamic est très important pour la JVM et les langages dynamiques.


a++
Permalien 09/09/2010 @ 15:53
Commentaire de: Loic [Membre] · http://coffeebean.loicdescotte.com
@adiGuba merci beaucoup pour ces précisions sur invokedynamic. En effet le gain devrait être énorme!
Permalien 09/09/2010 @ 18:18
Commentaire de: Blaise1 [Membre]
Le projet lambda me rebute, j'attends principalement NIo2 et Coin. Le plan "B" me comblerais, je vote pour.
Permalien 10/09/2010 @ 08:53

Vous devez être identifié pour poster un commentaire.

Liste des blogs

Rechercher

<  Mars 2012  >
Lun Mar Mer Jeu Ven Sam Dim
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

Syndiquez ce blog XML

Articles :

Commentaires :

 
 
 
 
Partenaires

Hébergement Web