Avr 21

Passer tout de suite à Java 8

Après avoir lu un court article sur la sortie de Java 8, vantant ses nouvelles fonctionnalités (ses lambda, ses API de programmation fonctionnelle ou que sais-je encore), vous vous dites qu’il serait passionnant de convertir quelques heures de sommeil en heures de bidouille, afin de pouvoir ensuite déclarer à qui veut l’entendre « Java 8 ? Ouais, je connais .. ».

J’en ai fait l’expérience, et voilà un petit retour vous permettant, si vous décider de vous lancer à corps perdu dedans, d’éviter les quelques déconvenues que j’ai pu vivre lors de ce passage douloureux.

Dur de coder sans IDE

Première action, premier écueil : demander gentiment à son IDE de comprendre les nouvelles subtilités du langage, qu’il n’a aucune raison d’avoir appris tout seul lors d’une nuit précédente.

J’utilise Eclipse pour développer à la maison, pour une très bonne raison : il est gratuit. Mais du fait qu’il soit gratuit, il évolue un peu moins vite que ses concurrents payant, notamment IntelliJ. J’ai donc dû attendre quelques jours, que sorte un patch à Eclipse Kepler pour le support du Java 8 (vous pourrez le trouver ici). Une fois sortie, et couplé à une installation flambant neuve d’un JDK8, je pouvais enfin copier/coller les exemples de code glanés sur le web et m’émerveiller des nouvelles mechaniques à l’oeuvre.

Eclipse supporte java 8, tout baigne ! Non ?

Je profite de la nouvelle API de stream pour modifier du code fonctionnel qui était géré jusqu’à présent par LambdaJ. Pour ça, je modifie la configuration Maven de mon projet pour supporter les sources en 1.8. Je régénère la configuration, et je vois apparaître une jolie rosace rouge à côté du nom de mon projet. Pourquoi donc, me direz-vous ? Tout simplement parce que quand Eclipse dit supporter le code en 1.8, cela ne veut pas dire que tous les plugins acquiescent en applaudissant. Ici, nous avons tout simplement WTP (Web Tool Plateform) qui dit ne pas connaître les sources en 1.8.

Et là …. C’est moins évident. Je vais sur internet et je commence à regarder au delà de la première page de résultat de Google, ce qui n’est jamais bon signe.

Je tombe sur des discussions qui suggèrent de récupérer du code sur GitHub, de le recompiler et de l’installer. Un petit sourire narquois se dessine sur mon visage, et je continue mes recherches en me disant qu’il faut tomber bien bas pour en arriver là.

Quelques heures plus tard, je recherche dans mon historique internet la page de ce même article, parce que mes recherches infructueuses ont fini par me faire tomber bien bas, trop bas. L’article est disponible ici.

Je récupère les sources du plugin WTP sur GitHub, j’exécute pas à pas ce qui est décrit dans l’article (je ne voudrais pas couplé tout ça avec des erreurs dues à la paresse ou l’exaspération), je redémarre une poignée de fois Eclipse et, oh miracle, tout se compile très bien et est prêt à être lancé.

Les outils aussi doivent passer à Java 8 !

Avant de lancer mon nouveau code sur Tomcat, je vérifie que celui-ci est compatible avec Java 8. J’ai un Tomcat 7, qui est compatible avec Java 8 mais pas depuis la première révision. Plutôt que de me lancer stupidement à tester la beta de Tomcat 8, je décide de simplement mettre à jour avec la dernière révision de Tomcat 7, autant par couardise que par respect pour mon sommeil (j’ai facilement dépassé les 2h du matin déjà !). Je reconfigure, je le lance avec mon appli, tout marche. Certes, j’aurais toutes les raisons de sauter de joie, mais la rétrospective de la soirée (10 minutes de code, 4 heures de Google) et mon manque d’énergie m’en empêchent.

Il faut savoir raison garder

Le lendemain, l’enthousiasme arrive tout de même : j’ai installé Java 8 avec succès sur ma machine, il est venu le temps de le remplacer partout ! Je décide donc par masochisme de remplacer mes installations de JDK7 en JDK8.

Afin d’éviter des descriptions trop longue des douleurs que j’ai pu endurer, voilà un résumé des différents essais que j’ai pu faire un peu partout:

  • Confluence : KO
  • JIRA : KO
  • Tomcat 8 : OK
  • Jenkins : OK
  • Sonar : PMD & checkstyle KO

Conclusion

Concrètement, Java 8 n’est pas prêt à être déployé largement, mais pas de par sa nature (je n’ai pas encore réussi à faire planter le JDK) mais du fait que les outils environnants n’aient pas encore fait le grand saut.

Si vous ne voulez pas bricoler comme j’ai pu le faire, Eclipse Luna devrait sortir en juin, avec le support de Java 8 intégré et, espérons-le, les versions des plugins également compatible.

 

 

Tweet Thu Apr 17 12:25:58 +0000 2014

Statut

Tweet depuis Paris, France :
« Presentation des chrome apps a #devoxxfr : comment profiter de ses connaissances html5 pour faire des apps deconnectes. #VGT »
Bertrand Tissot

Tweet Thu Apr 17 08:27:55 +0000 2014

Statut

Tweet depuis Paris, France :
« RT @DevoxxFR: La vie c’est aussi de belles rencontres #Merci “@almorelle: Merci @Audrey_Neveu @Devoxx4Kids et @ASKNAOteam http://t.co/Djuxb… »
Bertrand Tissot

Tweet Mon Apr 07 11:18:01 +0000 2014

Statut

Tweet depuis Paris, France :
« I scored 37108 points at 2048, a game where you join numbers to score high! #2048game http://t.co/5ZDW7LHSQC via @gabrielecirulli »
Bertrand Tissot