Jazoon troisième journée.
Après une soirée animée, un réveil difficile où vous vous dites que vous n’avez plus 20 ans, retour ce matin dans la plus grande salle afin de participer à la KeyNotes de SpringSource. Sur scène, un très bon speaker en la personne d’Adrian Colyer, CTO de SpringSource.
La présentation s’intitule : The Changing Nature of Enterprise Java Application Development
La lumière s’éteint, début du show…
Adrian Colyer : notre écosystème Java est comme la Forêt Vierge : une végétation dense, des petits arbres, de grands arbres, beaucoup d’animaux, qui se battent… On voit des strates, la canopée est l’étage en contact avec la lumière du soleil. Les arbres les plus grands, 20 mètres plus haut que les autres. En dessous de cela, la canopée, ceux qui bénéficient de la lumière. Pour un oiseau c’est cool. En dessous, pas top. La vie est difficile si vous êtes en dessous, 5% de la lumière du SUN (soleil) arrive jusqu’au sol.
Adrian prend le temps de laisser les images s’imprimer…
Le sol de la forêt ne reçoit que 2% de la lumière. Mais de temps en temps arrive une éclaircie dans la forêt. Dans ce cas, arrive une explosion de la vie, jusqu’à prendre peut-être la place des autres. Peut-être même une nouvelle canopée.
Regardons les arbres géants : ce sont les grosses compagnies (IBM, SUN, Oracle…). La canopée est l’espace de vie pour les mediums-size players. Il constate qu’il est très dur pour une nouvelle idée, une nouvelle approche, de faire sa place.
Oracle rachète SUN. Pour lui, un grand arbre est tombé. Cela crée un trou de lumière qui touche le sol, ce qui va entrainer du changement.
Un ange passe..
Il cherche à nous faire prendre conscience qu’en ce moment, il se passe quelque chose.
Où en sommes-nous dans notre forêt vierge ? Au couché du soleil, en anglais au Sunset. SUN Microsystems se fait racheter par Oracle, nous sommes à la fin de quelque chose pour lui. Adrian montre la courbe de la quotation de SUN pour dire que la compagnie descend tout doucement.
Après le couché du soleil, vient la période sombre (Dark Age) mais nous aurons ensuite une nouvelle aire, de l’innovation, un renouveau. (A cet instant je vois presque Rod sur son cheval blanc… une larme coule… que c’est beau)
Slide suivant, les temps changent. Regardez, dit-il, la présentation de SUN la veille. Parmis les 5 premiers points les plus importants dans le JDK 7, nous voyons que le support des langages dynamiques est cité dans cette liste. C’est très important, vous devez comprendre que les alternatives à Java, qui devient parfois un peu lourd ou complexe pour certains sujets, se trouve dans les nouveaux langages dynamiques, pas dans une quelconque JSR pour les Closures en Java. En avons-nous besoin d’ailleurs ?
Il continue ensuite en expliquant que l’explosion de nouveaux langages basés sur la JVM comme Groovy ou Scala doivent nous faire prendre conscience rapidement qu’un nouvel arbre est entrain de pousser dans la forêt.
Adrian affiche ensuite un slide avec différents langages:
– Groovy,
– Erlang,
– Clojure,
– Jython,
– JRuby,
– Ruby,
– Scala.
Il continue ensuite: Java est peut-être trop compliqué. L’introduction des Generics serait le début de cette complexité. D’autres disent que Java bouge trop lentement. D’autres pensent qu’il y a trop de fonctionnalités. Java est trop ceci, trop cela…
Il nous demande à notre avis quel sera le langage qui aura le plus de chances de pousser dans cette nouvelle forêt ? 4 langages se détachent dans sa sélection
Groovy JRuby Clojure et Scala
Il revient ensuite sur Groovy qui a remporté le « Script Bowl » lors de JavaOne 2009 (voir cet article sur le Touilleur Express). Dans les slides qui suivent, il montre un exemple Groovy vs Java, largement discutable. Mais l’idée est de dire que l’on peut faire la même chose avec moins de code. Ok, à cet instant je suis d’accord sur la quantité. Mais il passe aussi sous silence le changement de paradigme. Programmer avec un langage dynamique est forcément différent par rapport à Java.
Concernant la productivité, Groovy est plus concis, se concentrant sur l’efficacité. Adrian montre l’exemple du script HelloWorld, qu’il transforme en script Groovy. Il passe à un slide en Groovy avec 10 lignes au lieu de 30. Et il fait rire la salle en disant « et c’est la même taille de police ».
Adrian explique ensuite en quelques minutes les principes de Groovy.
class HelloWorld { def name deg greet() { "Hello ${name}"} static main(args) { def helloWorld=new HelloWorld(name: "Groovy") println helloWorld.greet() } }
Concernant ensuite la gestion des threads, Adrian montre un exemple en Scala.
class Pong extends Actor { def act() { var pongCount=0 loop { react { case Ping => if(pongCount % 1000 ==0) println("Pong: ping "+pongCount +" from + " sender) sender ! Pong pongCo = pongCount + 1 case Stop => println("Pong : Stop") exit('stop') } } } }
Pour suivre un exemple avec Clojure, langage du domaine fonctionnel comme OCaml.
;; Hello (use 'clojure.contrib.test-is') (defn hello "return a greeting" ([] "Hello World Default") ([username] (str "Hello " username " !"))) (println (hello "World")) (deftest test-hello (is (="Hello World" (hello "World"))) (is (="Hello World" (hello "World"))) (is (="Hello World Defalt" (hello)) "Called with no arg, we default to World !" ) )
Il pose ensuite une question à la salle:
A votre avis, quel est le langage qui a le plus de chances d’être le plus populaire ? Il ne nous demande pas le meilleur langage, question à laquelle il n’y a pas de réponses. Il nous demande simplement quel serait selon-nous les chances de chacun de ses langages ? Clairement Groovy se détache du lot. Il conclue en expliquant de manière très pragmatique : « That’s a reason why we bought G2One.Inc »
SpringSource recherche la meilleur technologie, le meilleur framework, afin d’aider à faire émerger de nouveaux arbres dans la forêt vierge.
Il nous demande : seriez-vous prêt à retravailler en assembleur plutôt qu’en Java ?
Non bien entendu car vous êtes plus productif en Java. Il nous encourage ensuite à regarder Groovy comme un moyen d’améliorer encore cette productivité. Et un jour il espère nous demander : « seriez-vous prêt à retravailler en Java ? ». Réaction plus retenue dans la salle, certains ont le sourire, d’autres moins. Mais l’objectif ce matin est de nous remuer et de nous faire prendre conscience que quelque chose est entrain de se passer.
Adrian Colyer parle maintenant des frameworks. Nos besoins sont assez communs et connus, lors de la création d’une application Web. Si nous acceptons que les langages dynamiques peuvent nous faire gagner du temps, il est logique d’accepter que des frameworks nous aident à améliorer notre productivité.
Un exemple de site : Wired.com 12 millions de lecteur cité sur le site de SpringSource utilise Grails. Aegon est une autre compagnie citée.
Adrian montre ensuite un écran 3270 avec 2 couleurs. Il rappelle qu’il y a peu nous avions des applications développées en mode texte, avec des touches de fonctions pour naviguer. En 2009 nous sommes aujourd’hui complètement dans un autre univers, avec la présence du réseau.
Il lance ensuite une charge sur la lourdeur des applications J2EE classiques, trop lourdes. Le déploiement d’une application écrite avec de vieilles technologies comme J2EE 1.4 est difficile. Alors vient OSGI et les modules.
L’objectif est de livrer une application modulaire, afin de ne déployer qu’une partie, et donc de faciliter le déploiement.
SpringSource cherche avec Spring dm Server à proposer une autre approche. Tout d’abord il rappelle que le cycle de vie de déploiement ne s’arrête pas à la construction de votre War. Le déploiement et l’administration sont aussi très importants. D’où le besoin de rendre facilement administrable une application.
We live in an Interesting times… s’affiche sur le slide suivant… C’est la fin de sa présentation, qui aura le mérite de lancer le débat sur l’avenir de Java et de la plateforme.
La présentation s’est axée autour de la prise de conscience que les choses sont entrain de changer. Le Cloud Computing, les langages dynamiques, la modularité, on ne sait pas encore ce qu’il va se passer mais comme il le dit, nous vivons en ce moment des moments de changement intenses.
Le futur arrive, que l’on aime cette idée ou pas, le Futur arrive à nous.
Analyse et Réflexions
Quoiqu’un peu polémiste, sa présentation vise tout d’abord à faire prendre conscience des changements qui s’opèrent dans notre industrie. Le rachat de SUN Microsystems par Oracle est un événement, dont la portée est encore mal estimée selon les analystes. SpringSource s’engoufre certainement sur une pente un peu glissante en se présentant comme le chevalier blanc. Quoique le framework soit excellent, le temps nous dira si en effet tout change, et donc le choix d’une solution plus légère, modulaire, basée sur des langages dynamiques, constitue le bon choix ou non.
En tous les cas, il y a une guerre froide qui ne dit pas son nom, qui devra éclater pour que la communauté continue à diriger Java et son avenir. Je pense que la professionnalisation de l’open-source expose aujourd’hui les débats d’idées entre les grands contributeurs. Là où il y a quelques années, les guerres entre IBM et SUN Microsystems se déroulaient entre 2 commerciaux chez le client, négociant le cuir de leur Porsche de fonction, aujourd’hui un barbu de JBoss réglera son compte à un barbu de SpringSource autour d’une bière ou au board d’une JCR.
Avant de commencer une remarque : tu es un GRAND malade ! Tu as lançé un concours de celui qui écrit le plus d’articles par jour ? 🙂 Pour XPDay 2010, je te nomme scribe en chef !
Passons au sujet, qui me touche plus que les autres (bon, en même temps, je suis un poil incompétent sur tous les autres…). Déjà c’est intéressant que le discours provient de la boite la plus innovante (de ce que je comprends des soirées JUG) de l’écosysteme Java parte dans cette direction est un indicateur intéressant. Je crois comprendre que Goslin parle aussi des langages dynamiques (mais avec beaucoup moins d’envie).
De loin, j’ai l’impression que c’est un discours réçent dans le monde Java, alors que c’est un sujet récurrent dans le monde Python / Ruby (depuis bien 2 ans), que le slogan « Java Language Isn’t That Important – It’s The JVM That Matters » résume bien.
« Il continue ensuite: Java est peut-être trop compliqué. » Le langage pas trop (contraignant me semble le mot adéquat de mon point de vue), mais l’écosysteme oui. Les soirées JUG doivent étre les seules ou je ne comprends pratiquement rien :].
« Mais il passe aussi sous silence le changement de paradigme. » Tu semble préoccupé par ce changement, mais n’as tu pas changer radicalement ta façon de coder entre Java 1.0 et maintenant ?
(3 exemples dans 3 langages) On en revient à une discussion au JUG sur l’intérêt d’être polyglotte, dont l’intérêt n’est plus perçu car « Java sait tout faire, je ne vois pas l’intérêt de connaitre autre chose ». J’aime bcp ces exemples, dommage qu’ils soient triviaux, ils ne mettent pas l’accent sur une bein meilleure efficacité du dynamique / fonctionnel dans certains cas.
« Clairement Groovy se détache du lot. » Je suis d’accord avec ce que je ressens aux soirées. Groovy n’effraie pas. De plus il est né dans le giron de Java, ce qui fait moins passage a l’ennemi :).
« SpringSource recherche la meilleur technologie, le meilleur framework, afin d’aider à faire émerger de nouveaux arbres dans la forêt vierge. » Cette phrase contredit « Il ne nous demande pas le meilleur langage, question à laquelle il n’y a pas de réponses. »
Je me pose la question sur coexitence de 2 langages majeures sur JVM, les 2 survivront ? Le challengeur n’est il pas la pour tuer Java ? Est ce que les programmeurs Java vont switcher de langages selon les contextes. Je reste perplexe.
En tout cas, voila un débat intéressant.