Mark Reinhold nous présente une petite mise à jour sur la plateforme Java. En 1996, Java 1.0 c’est les Applets, la première version pose les principes de Java qui sont toujours d’actualité 14 ans plus tard. Java 1.1 en 97, 1.2 etc… Java 1.4 finalement a été la première version la plus utilisée. Java 5 avec les Generics, puis Java 6 en 2006, soit il y a déjà 4 ans. Sun avait prévu de sortir quelque chose en 2010, mais le rachat a bousculé le planning. Oracle l’an dernier a réorganisé et a relancé la dynamique.
Java 7 sortira en 2011, et ce qui suivra fin 2012.
Productivité, performance,modularité, integration et universalité. Ce sont les 3 principes 5 principes qui vont guider la philosophie de Java 7. Aujourd’hui on parle plus de la plateforme Java que du langage. Finalement faire du Java c’est appartenir à une communauté et c’est vivre sur un continent. Chaque continent a ses pays, avec aujourd’hui Scala, Groovy, jRuby, jPython, mais bien d’autres.
Concernant la productivité, Mark nous présente un exemple simple classique :
Map<String ,String> m=new HashMap<String ,String>(); // java 6 Map<String, List<String>%gt; m2= new HashMap<>(); // Java 7+
Mark présente ensuite d’autres nouveautés dans le langage Java lui-même, et nous invite à suivre le projet Coins pour être à jour.
Performance
Concernant l’architecture, Mark explique que depuis 5 ans sur la loi de Moore nous sommes sur un plateau depuis 4 ans. En conséquence, de meilleures performances dans une application ne seront pas possibles uniquement avec du matériel. En 2005 par exemple Sun sort un proc avec 32 cores. En 2007, Niagara2 en 2007 64 cores… En 2009 c’est la sortie du processeur Niagara 3 avec 128 cores… Mais comment votre application va-t-elle gérer cela ?
Finalement Java qui a offert la possibilité de tourner sur toutes les machines, vise maintenant la possibilité de tourner sur de multiples cores, sans que le développeur ait besoin d’être une brute en programmation concurrente. Comprenez bien ce message, la phrase qui va suivre est de moi, pas de Marc : « Write once, Run Everywhere, Scale anywhere »
Java se rapproche des paradigmes de la programmation fonctionnelle, nous reparlons des expressions lamda. Mark montre l’utilisation des closures avec la notation #{ … }.
double max = students.filter(#{ s -> s.gradYear == 2010 }) .map( #{ s -> s.score }) .max(); interface Collection<T> { Collection<E> filter(Predicate<T> p) default Collections.<T>filter; <V> Collection<V> map(Extractor<T,V> e) default Collections.<T>map; <V> V max() default Collections.<V>max;
Pour en savoir plus : http://openjdk.java.net/projects/lambda/
Java dans le futur sera mis à jour moins souvent que jusqu’à maintenant. Oracle veut que Java soit un langage de premier plan mais qu’il conserve ses racines. C’est un langage en phase de stabilisation avec cependant de belles nouveautés pour les années. qui viennent.
La grosse annonce de ce matin finalement c’est l’annonce de Reification sur les Generics. Java reprendra une version réunifiée sur les génériques afin de couvrir les lacunes, sur les paramètres des méthodes. Ce sujet a 4 ans, je l’ai vu sur le blog de Neal Gafter par exemple.
Nous abordons maintenant une présentation sur les différents langages qui tournent sur la JVM. Mark pour Ruby cite par exemple jRuby. Cette implémentation tourne même plus vite que Ruby sur certains benchmarks.
Concernant le classpath et le packaging, Mark reparle des modules, de l’alternative au classpath. Il cite maven et présente jmod, une application en ligne de commande qui mime Maven. Il permet de télécharger des JARs et des applications. Si j’ai bien compris, la notion de repository de Maven sera intégré dans votre JVM.
nicolas@host $ jmod install org.openjdk.aggregator-1.0.jar nico...
La nouvelle est qu’Oracle confirme une version de Java pour la mi 2011 avec beaucoup de nouveautés qui sont déjà prêtes. La nuit dernière, un ensemble de nouvelles JSR a été publié sur le site du JCP
Une Keynote dans le ton de Sun, avec cependant du contenu plus précis que l’an dernier.
On retiendra que Java 7 est donc bien prévu pour l’année prochaine.
« Finalement faire du Java c’est appartenir à une communauté et c’est vivre sur un continent. Chaque continent a ses pays, avec aujourd’hui Scala, Groovy, jRuby, jPython, mais bien d’autres. »
C’est une bien belle métaphore !
Par ailleurs, les closures présentées par Mark (module la notation #{ … }) m’ont fait penser à celles du langage Gosu : closures avec typage simplifié par inférence.
Merci pour ces CR.
à propos d’Oracle et Java :
http://grep.codeconsult.ch/2010/11/16/why-the-asf-disagrees-with-oracle-straight-from-the-anonymous-cowards-mouth/
qu’est ce que vous en pensez?
« Productivité, performance, modularité, integration et universalité. Ce sont les 3 principes qui vont guider la philosophie de Java 7. »
Euh ça fait pas 5 principes ? ;o)
Autre point :
« Java dans le futur sera mis à jour moins souvent que jusqu’à maintenant. Oracle veut que Java soit un langage de premier plan. »
N’est-ce pas l’inverse, à savoir que « Java sera mis à jour PLUS souvent » ? Sinon je ne vois pas trop comment Oracle pourrait le mettre au premier plan… Et puis considérant le temps pris pour sortir Java7 après Java6 (environ 5 ans) et celui « normalement prévu » entre la version 7 et 8 (1 an et demi), ça me conforte dans l’idée que tu as dû te tromper dans ta phrase (mais je ne t’en veux pas, ton planning a l’air très chargé ces jours-ci ;o) ).
Merci pour tous les reportages et compte-rendu qui nous permettent de suivre Devoxx à distance !
@Romain : article corrigé, merci de ton retour. J’ai précisé et changé l’article original.