A l’heure des languages alternatifs sur la JVM : ceylon, scala, fantom et autres joyeusetés, pour l’instant j’assume ma fidélité à Java. Et oui, je le dis, "juste un café pour moi, ça ira merci"
Mais...
Pourtant j’avoue avoir hésité. La tentatrice Scala (Johanson) m’a un peu attirée l’année dernière (surtout avec le lobbying de Nicolas Martignole ;)) et j’ai même regardé du côté de C# récemment. Et puis non, Neal Gafter, et accessoirement
, m’ont fait revenir sur le droit chemin.Revenons sur la prez de Neal Gafter l’année dernière à What’s Next. Cette prez très sympa permettait aussi de comprendre l’essor des langages new generation sur la JVM.
Petit rappel :
- java 1.0 : 1996
- java 1.1 : 1997
- java 1.2 : 1998
- java 1.3 : 2000
- java 1.4 : 2002
- java 1.5 : 2004
- java 1.6 : 2006
- java 1.7 : 2011
- java 1.8 : annoncé pour 2012
- java 1.9 : 2013 ?
1 versions par an entre 96 et 98 puis 1 versions tout les 2 ans entre 98 et 2006 !
Et à partir de 2006... rien jusqu’à l’été dernier ou la 7 sort enfin.
En 5 ans, l'informatique a un peu évolué :
- C# utilise les Properties, les extensions de méthodes, les lambda expressions, Linq, les paramètres optionnels et bien d’autres choses...
- les machines ne voient plus évoluer leur fréquence d’horloge au même rythme qu’avant mais leur nombre de cœurs. Ce qui renforce la nécessité de savoir tirer parti de la programmation concurrente et les langages "fonctionnels" revendiquent des qualités dans ce domaine
Bref (copyright), Java souffre de manque d’évolutions du langage et d’une verbosité qui rebute si on veut faire de la programmation fonctionnelle.
Bref (copyright again), une palanquée de nouveaux langages apparaissent pour "corriger" les manques de Java : Groovy, Scala, Clojure, Fantom, Ceylon etc...
Heureusement tout ces langages restent sur la JVM. Au moins on est rassurés, on n’a pas capitalisé sur cette plateforme pour rien et qu'elle doit pas être si mal que ça.
Bon, mais justement, la situation a changé (ou va changer). Java 7 est sorti en 2011. Java 8 est prévu pour 2012. Java 9 était même évoqué dans les slides de Neal Gafter (mais ne cherchez pas sur la vidéo, le slide a été coupé au montage).
Quand à Oracle, on aime ou on aime pas, il semble vouloir revenir a un cycle annuel ou bi-annuel. Ca tombe bien parce que entre patienter 1 an pour avoir les lambda expressions en Java et devoir apprendre Clojure mon choix est vite fait...
On me souffle dans l’oreille... Oui... Ah... Mon discours ressemble à un vieux Coboliste ?!
Arf, message raté dans ce cas.
Alors clarifions un peu.
Le propos ici c’est surtout de souligner que une grande partie de ces langages (tous ?) sont nés d’une frustration par rapport au manque d’évolution de Java. Cette frustration selon moi devrait disparaître et la réputation de "nouveau Cobol" lié à Java devrait s’estomper. Je suis prêt à parier que la grande majorité des développeurs Java vont rester sur ce langage. Scala ou Clojure étant décidément trop élitiste.
Mais, si Java intègre des nouveautés, il ne ressemblera pas aux petits nouveaux qui font malgré tout preuve d’inventivité et qui n’ont pas l’obligation de rester compatible avec des précédentes versions. Java va évoluer, c’est sur, mais il doit respecter certaines contraintes pour continuer à faire tourner les vieilles applis en Java 1.1. C’est aussi sa force. Allez demander aux Pythoniens ce qu’ils pensent de Python 3.0 et de sa compatibilité par rapport à Python 2.6.
Pour ma part j’aime cependant qu’on utilise le langage adapté en fonction du problème (je suis quand même passé par C, C++, C# et Php entre autre) donc il y a de fortes chances qu’en réalité je finisse par jeter un œil, voire même plus qu’un œil aux petits nouveaux. Je ne resterais pas mono langage ^^
En reprenant la notion de programmation polyglotte de Neal Ford, en fait je dirais plutôt “Juste un café ça ira merci... Mais avec un nuage de lait et un sucre.”