Compte-rendu Devoxx France 2012
Introduction : Devoxx France, the place to be !
Comme annoncé précédemment, nous étions présents à la première édition du Devoxx France à Paris. Malgré sa jeunesse, cet évènement s'est déjà imposé comme étant incontournable pour tous les acteurs du monde java. Merci aux organisateurs pour tout le travail accompli !
Nous étions près de 1200 personnes rassemblées dans un luxueux hôtel parisien pour assister aux 133 sessions proposées par près de 200 intervenants.
Autant dire qu'à 3 personnes, nous n'avons pas pu assister à toutes les conférences. Je ne détaillerai d'ailleurs que les plus marquantes ici, l'intégralité étant (bientôt) disponible sur Parleys et certaines sont déjà disponibles sur les pages des conférences du Devoxx.
Les conférences s'articulaient autour des thèmes :
Le futur de Java (7, 8 et 9)
Alors que certaines entreprises se targuent encore d'être compatible Java 1.4 (2002 !), Java ne cesse de continuer à évoluer. En effet, on peut regretter que Java 7, pourtant sorti en 2011, tarde à s'imposer comme le standard et que Java 8 ne trouve pas encore assez de testeurs. Je pense que la jeunesse fait peur, pourtant il y a des choses intéressantes que de nombreuses conférences tentaient de présenter. Jean-Michel Doudoux nous a détaillé (presque exhaustivement !) les évolutions concernant les entrées sorties (io) proposées par Java 7, soit par exemple :
- Le mv et le cp sont inclus dans la JVM, adieu les innombrables FileUtils (non récursif !).
- La liste des fichiers est maintenant Iterable (améliorant considérablement les performances).
- On peut facilement étendre et créer un filesystem (comme pour un zip par exemple).
- Ils ont ajouté un visitor pour parcourir les fichiers (à utiliser pour le mv et le cp récursif).
- Présence d'une API pour écouter les modifications sur les fichiers (qui écoute les évènements systèmes).
- Meilleure gestion des droits UNIX.
Une autre conférence traitait des fonctionnalités que personne ne connaît de Java 7.
Les personnes de chez Oracle responsables de JavaFX tenaient un stand sur le salon et ont présenté leurs produits à maintes reprises lors de conférences ainsi qu'en off. Pour rappel, la librairie Swing étant vieillissante, il était grand temps de tout repenser pour retrouver un framework d'UI lourde dans l'air du temps. JavaFX sera inclu dans Java 8 (2013) et plusieurs versions sont déjà disponibles ainsi qu'un plugin pour netbeans.
JavaFX sépare l'IHM (vue) écrite en XML (FXML) du code Java pour le contrôle de l'IHM (contrôleur).
Oracle développe aussi un éditeur (développé en JavaFX
) JavaFX Scene Builder qui permet de générer le FXML.
JavaFX contient aussi un Web Engine, les applications peuvent donc être “skinnées” via du CSS. Autant dire que Jaxx vit ses dernières heures
.
On peut interagir avec les éléments en JavaScript ou lancer des méthodes du contrôleur :
<fx:script> function handleSubmitButtonAction() { buttonStatusText.setText("Calling the JavaScript"); } </fx:script> <Label fx:id="buttonStatusText"/> <Button fx:id="submitButton" text="%submit" onAction="handleSubmitButtonAction(event);"/> <!-- onAction="#handleSubmitButtonAction" appel du controleur -->
Le contrôleur, lui, accède aux différents éléments par annotation :
@FXML Label buttonStatusText; @FXML protected void handleSubmitButtonAction(ActionEvent event) { buttonStatusText.setText("Submit button pressed"); }
La mobilité
Pour commencer, une très bonne application Android était disponible pour suivre et se repérer sur le site. Les gens de Xebia avaient eux aussi développé la leur (http://devoxx.xebia.fr/), le code source étant disponible ici.
Il y avait seulement 3 conférences sur Android présentées entre autres par Google (Romain Guy, Nicolas Roard) qui nous a par exemple appris comment fonctionnait l'accélération graphique dans le navigateur et quelles étaient les techniques pouvant l'aider à aller plus vite. La principale est d'utiliser des “layers” qui permettent au navigateur de ne re-dessiner que certaines parties de la page lorsqu'elles changent. Les layers sont créées par la navigateur quand il rencontre une balise video, canvas, etc. Ainsi que quelques trucs et astuces pour la fluidité des applications Android, notamment l'utilisation des threads séparés de celui de l'UI si on a du traitement à faire sans retour visuel.
Je pense que ce manque d'engouement pour Android vient de la grande problématique de la mobilité de notre décennie : comment rendre accessible nos sites et applications sur mobile sans devoir s'adapter à la plateforme matérielle, comment les rendre accessibles au plus grand nombre ?
Sur ce sujet, par contre, il y avait du monde !
Que ce soit en HTML5, Dojo, Cordova (suite de Phonegap), JQuery Mobile ou encore en Grails, tous les sites web doivent avoir leur version mobile.
Le cloud
Le cloud était incontestablement à l'honneur. Aujourd'hui, tout développement se doit de finir sur un cloud. J'ai été impréssionné par le nombre de conférences qui se finissaient par un déploiement par Heroku ! C'est du PaaS qui fonctionne avec de nombreux langages (Python, Java, Scala…), utilise Git pour déployer n'importe quoi dans le cloud (en l'occurence Amazon Web Services). C'est l'incontournable pour être dans le coup en ce moment, et c'est vrai que la simplicité est plutôt déconcertante, petit exemple pour déployer une application versionnée avec Git :
heroku create appname git push heroku master
Quelques instants plus tard, l'application disponible sur le cloud à l'adresse : appname.herokuapp.com
Heroku déploie les applications sur le cloud d'Amazon (AWS), qui a aussi fait l'objet d'une conférence malheureusement très commerciale. AWS c'est au final d'immenses clusters sur lesquels des machines Xen sont créées à la volée et louées à l'heure. Ils vendaient donc la scalabilité du produit, la possibilité de démarrer des machines (clonées pour l'occasion) lorsque les serveurs sont trop sollicités. On a la possibilité de créer des parcs de serveurs hautement scalables, sans trop d'effort, en piochant dans les services (machines) disponibles, le tout étant tarifé à l'heure/machine. Ils fournissent une interface web mais aussi diverses API (REST, Java, .net, python…) permettant de démarrer et d'interagir avec des machines à tout moment. L'offre semble plutôt s'inscrire dans l'air du temps, c'est donc un cloud à tout faire sans les brides imposées le plus souvent (vrai compte root, vrai accès SSH sur les machines, distribution de son choix…).
Un exemple sympa tout de même : un grand groupe de la VOD aux Etats-Unis s'est amusé à créer un stress test, un petit programme qui arrêtait aléatoirement des serveurs, des bases de données, voir même des fermes entières pour vérifier que l'infrastructure tenait la route.
Il y a eut la juste réplique de Google, une présentation de leur cloud par Mr Champenois : Google App Engine. Tarifé aussi à la machine/heure, gratuit pour les développeurs (hors production), l'argument est de proposer l'accès aux API Google :
- serveur d'application google
- le nosql de google
- du sql sur le nosql
- indexation google
- forge google
- scalabilité google
- visibilité google
- tous les outils google (map, doc, cal….) qui vont bien.
Le problème est que l'on ne peux faire QUE du google sur leur serveur d'application.
Le big data
Le big data est une autre problématique récurrente, qui ne va pas aller en s'améliorant. Il s'agit du traitement de données en masse. Comme le disait Antonio Goncalves lors de sa keynote du Jug Summer camp 2011 : “Nous créons chaque jour un volume important de données, bien plus qu’il y a 10 ans et bien plus que nous n’avons jamais créé dans l’histoire de l’humanité.”
(Citation trouvée ici : http://www.touilleur-express.fr/2012/05/26/bigdata-de-nouvelles-opportunites)
Du coup, tout le monde y va de sa solution, soit du noSql :
… (Je ne cite que ceux présent au Devoxx)
Mais aussi sémantique :
Sur le sujet, Alexandre Bertails, développeur au W3C nous a montré ce que tend à devenir le Web version data. Il a utilisé comme exemple dbpedia qui sera le wikipédia accessible autant à la machine qu'à l'humain. Le but est de mettre en relation les données via des métadonnées, on appelle cela le web sémantique voire même Web 3.0. Pas de base de données, tout est inclus dans le html, le RDFa semble être le futur standard privilégié par le W3C.
Nouveaux languages
Outre les inévitables Groovy et Scala qui sont largement adoptés et qui ont donc fait l'objet de grand nombre de conférences, de nouveaux langages se plaçant au dessus de la JVM semblent émerger :
Ce dernier a tout particulièrement attiré mon attention. Le projet vient de la volonté d'imaginer ce que serait un langage “parfait” s'il fallait en réinventer un. Ceylon est langage ressemblant beaucoup au Java, mais uniformément structuré permettant ainsi de décrire des données (tout comme JSON par exemple). Il est très orienté “defensive programming” :
- tout est private par défaut
- le seul modifier existant est shared qui est l'équivalent de package
- tout est final sauf si c'est explicitement déclaré avec le mot clé “variable”
- L'héritage multiple est prévu.
Il y a un gros effort sur le typage, il gère nativement les not null, les casts sont inutiles… Voici un exemple de code :
//union type void printName(String|Named name) { // switch sur le type switch (name) case (is String) { println(name); } case (is Named) { // pas besoin de cast println(name.first " " name.last); } }
De plus, la conférance était très sympa, Stéphane Epardaud et Emmanuel Bernard se sont livrés à un incroyable show que je vous invite à découvrir !
Les machines à tout faire incontournables du moment
Plusieurs noms sont revenus très souvent sur la table, j'ai déjà parlé du phénomène Heroku mais il était souvent question de Git, ElasticSearch, Guava et autres frameworks javascript (NodeJS, CoffeeScript, JQuery…) mais surtout et partout : Play Framework 2.0.
ElasticSearch est basé sur Lucene et lui apporte quelques fonctionnalités supplémentaires comme la facetisation et la scalabilité. Aspect intéressant d'ElasticSearch est qu'il suffit de le télécharger et de le lancer pour l'utiliser, il n'y a rien à configurer. Dès qu'une nouvelle instance d'ElasticSearch est détectée sur le réseau, elle est utilisée pour faire de la réplication. Un mécanisme de Rivière pour alimenter ElasticSearch soit MongoDB, ActiveMQ, Cassandra, Twitter, RSS et plus globalement tous les systèmes où l'on peut détecter une modification de données (ce n'est pas possible par exemple pour les bases SQL). Il offre de plus une API REST permettant de faire des recherches et de récupérer les résultats en JSON.
Play Framework 2.0 était très souvent utilisé dans les conférences pour présenter d'autres sujets et pour cause, il permet de créer une application complète en un minimum de temps. Play est un full stack framework (il contient JBoss Netty), permet le rechargement à chaud de la page après n'importe quelle modification, l'API est assez simple pour débuter rapidement, les pages d'erreurs par défaut sont générées avec les morceaux de code concernés. Il se base sur le protocole HTTP et ne pas le cacher, contrairement à GWT ou à l'API Servlet.
Je vous invite vivement à regarder la conférence de James Ward, il parvient vraiment à partager son enthousiasme et obtient un résultat from scratch en 1/2h sans nous perdre !
Étonnamment, il n'y a eu que très peu de Spring, la mode est-elle passée ?
Conclusion
Personnellement, j'ai été très surpris par l'ambiance qui régnait, je m’attendais à un rassemblement de geeks appâtés par une grosse machine commerciale, mais (si on exclut les stands et conférences de Google, Amazon et IBM) c'était un vrai espace d'échange autour du Java et de tout son écosystème dans une ambiance bon enfant.
Tout cela nous à donné envie de participer plus activement aux JUG et autres événements autour du Java, qui a finalement, une belle communauté en France.
Je finirais par un moment inoubliable : l'enregistrement du podcast des CastCodeurs enregistré en live. Merci à atlassian pour nous avoir distribué de la bière ! C'était excellent pour conclure le Devoxx France 2012 !
— Letellier Sylvain 2012/06/08 16:07
