Retour sur la conférence « A la découverte de JavaFX« , par Nicolas Lorain, JavaFX product manager chez Oracle, et Jean-François Denise et Eric Le Ponner, développeurs de SceneBuilder, outil de design d’IHM pour JavaFX.
Nicolas Lorain a commencé sa présentation par une phrase simple qui lui tenait à coeur : « Oubliez tous vos préjugés, et tout ce que vous avez entendu sur JavaFX. Aujourd’hui, on reprend tout à zéro ». Bon, soit, c’est assez légitime vue la mauvaise presse de cette techno. Pour notre speaker du jour, JavaFX2 (parce que c’est bien de la version 2 qu’on parle) est différent de SWT, SWING ou même JavaFX 1.x.
Quels sont les objectifs ?
- Offrir une API Java
- Une solution de migration pour les UI Java existantes.
- Des outils de développement avancés
- Une solution cross-platform
Pour 2012, l’objectif est de rendre tout ça OpenSource à travers l’OpenJDK (projet OpenJFX), d’avoir une license commune avec Java SE et d’avoir JavaFX pour Java SE Embedded (ARM uniquement ?). Toutes les évolutions seront soumises à travers le JCP l’objectif étant d’avoir un vrai standard d’UI Java.
Du JAVA
Chez Oracle, ils pensent qu’un des problèmes de Java FX premier du nom était que les développeurs ne voulaient pas apprendre encore un nouveau langage de script… Donc JavaFX 2, c’est du Java, et de l’XML (FXML). Nicolas Lorain souligne que l’intégration à la JDK permet un portage et une utilisation de JavaFX dans tous les langages JVM compliant (ScalaFX, GroovyFX…).
L’IHM peut être écrite soit en Java (comme du swing), soit en FXML, langage markup… Un fichier FXML est rattaché à un contrôleur qui permettra d’attacher des handlers facilement, un système d’injection par anotation permettant de gérer les composants dessinés facilement dans le controleur. Pour ceux qui connaissent GWT et UIBinder, par exemple, c’est le même fonctionnement. J’aime bien ce principe, la logique métier est détachée de l’IHM, le code n’est que très peu pollué par les annotations. On pourra de plus intégrer des langages de scripts au sein des templates.
Du point des vues des « gadgets », le look & feel sera personnalisable via CSS (avec des CSS préfixés pour JavaFX). Il est d’ailleurs difficile de ne pas y voir un énorme clin d’oeil aux développeurs Web.
Il faut aussi noter qu’une intégration avec Swing est possible. Ajouter des composants JavaFX dans une application existante sera possible, pour une migration graduelle. C’est un bon point pour eux, qui pourrait empêcher la migration de vieilles applications vers d’autres technologies d’UI (genre HTML5).
Une autre fonction intéressante de JavaFX2 est l’intégration de WebView (basé sur Webkit) pour une interprétation de l’HTML et du Javascript. L’intéraction est complète avec un accès au DOM, et une communication Java <=> Javascript. Pratique pour intégrer des composants web, genre du Google Maps pourquoi pas…
D’un point de vue stack graphique, JavaFX 2 a un accès optimisé aux cartes graphiques pour tirer parti de l’accélération hardware grâce à Prism. Si ce n’est pas possible sur la machine, Java 2D prendra automatiquement le relai. Pour le côté multimédia, JavaFX2 supporte les différents encodages tels que VP6, H264, MP3, AAC, avec un affichage plein écran et une latence audio optimisée.
Des OUTILS
Notre speaker du jour a évoqué un point fondamental : pour qu’une technologie soit adoptée, il faut qu’elle soit bien outillée. Il précise donc que JavaFX est supporté par Netbeans 7.1, datant de Janvier 2012, la version 7.2 devant sortir en Mai avec quelques améliorations… Qu’en est-il d’Eclipse et d’IntelliJ ? Je soupçonne Oracle de compter un peu trop sur la communauté.
Et c’est maintenant que Jean-François Denise et Eric Le Ponner prennent la parole pour nous présenter JavaFX Scene Builder, un outil de génération de fichier FXML, dont la beta est sortie en Avril.
Cet éditeur wysiwyg permet de créer et tester très rapidement des IHM JavaFX, dont les fonctions principales sont la mise à disposition de la bibliothèque de composants, une mise en page immédiate et simplifiée (anchors, layouts, etc…), ou encore l’attachement à un controleur. Nous regretterons cependant que cet outil ne soit pas intégré à Netbeans (ou éclipse… mais ça…) et fonctionne carrément en stand-alone. Leur objectif est bien sûr qu’à terme il fasse partie intégrale de Netbeans, mais pour l’instant, c’est de la création d’écran, sauvegarde au format FXML, puis import sous netbeans… Eurk… L’outil parait dans son ensemble bien fait, même si extrêmement buggé pendant la démonstration.
Conclusion
En terme de démonstration, on a eu droit à une belle application dynamique, avec des évènements sur une map monde qui faisaient apparaitre des petits ronds de couleur. Les composants étaient vraiment jolis, et l’ensemble était réussi. Nicolas Lorain a aussi fait la démonstration de la théière en 3D (célèbre scène de base d’OpenGL) sur tablette, avec reconnaissance de mouvements pour changer l’angle de vue, juste pour dire : regardez, c’est possible… Mais avant de le voir sur une tablette Android ou iPad du marché, il va clairement couler de l’eau sous les ponts.
Sur le fond, JavaFX2 a des atouts. On pourra retenir surtout le fait qu’Oracle le destine clairement à être le standard en terme d’UI pour Java SE, et qu’on pourra ENFIN faire des choses jolies sans trop se casser la tête. Mais la plus value de JavaFX2 n’est pas que là: si je reprends les propos de Nicolas Lorain, JavaFX2 est complémentaire de HTML5. Pourquoi ? Tout simplement parce qu’il fournit une alternative viable au modèle actuel qui tend à s’imposer de client Web et d’échange JSON / XML. Que si on traite des flux de milliers de données à afficher de façon « responsive » et dynamique, le Web a ses limites, alors que JavaFX2 est pensé pour ça. Qui plus est, le full Java peut faciliter son intégration en entreprise, ça a un côté rassurant, une facilité de codage / debuggage moins exotique qu’avec de l’HTML5.
Cependant, la route est encore très longue ! la JDK7 n’a pas encore sa place en entreprise, JavaFX3 n’est prévu que pour 2013, et même si Oracle souhaite outiller son dernier né, c’est encore très loin d’être au point ! Scene Builder n’est qu’en beta et l’on sent bien qu’ils souhaitent juste montrer le chemin à la communauté… Qui plus est, pour un outil qui met si longtemps à sortir, il y a quand même un énorme manque de créativité. Après tout un éditeur tel que celui-là ne fait rien de plus qu’un Visual Studio 2005 en .NET. Combien de temps faudra-t-il à Oracle pour combler le gouffre qui sépare JavaFX2 d’une techno fiable et outillée de façon professionnelle ?
Je mettrais aussi un carton rouge à la présentation et au speaker. Pour une techno avec un tel déficit d’image, la moindre des choses est de faire des présentations attrayantes pour attirer la communauté !! La version présentée de SceneBuilder était honteusement buggée, le powerpoint n’était qu’une succession de Bulletpoint, avec des spécifications et des roadmaps (Oracle inside…), et même si le speaker a fait l’effort de parler Français, personne ne lui en aurait voulu si son Anglais natif avait ajouté un peu de dynamisme à son talk…
Si je résume, messieurs, bougez-vous pour nous en mettre enfin plein les yeux !
LB.
Il ne manque plus qu’à écrire une killer app en JavaFX, quelqu’un veut soumettre une idée ?
A noter que JavaFX s’intégre aussi dans un widget SWT et donc par extension dans une application eclipseRCP (grace à la contribution de Tom Schindl avec efxclipse).
Donc la communauté commence à prendre le relai mais attend avec impatience le support mobile pour débrider les canassons !
Si vous voulez plus de JavaFX Venez au breizhcamp 2012 !
Another JavaFX Zealot