Intéressons-nous maintenant à l'aspect interface graphique. Si AWT, Swing ou encore Java2D n'ont pas subi de grosses évolutions en dehors de correctifs de bug, JavaFX dispose de nombreuses nouveautés. La première concerne un alignement des versions : adieu JavaFX 2.x, place à JavaFX 8.
Voici quelques autres nouveautés plus en détails :
Les nouveautés de l'API
- Texte riche : possibilité d'ajouter des styles et des effets aux textes via la classe TextFlow
Chaque mot, espace compris, est affiché via une instance de Text, chacune avec son style CSS propre. Le contrôle parent TextFlow fait automatiquement la mise en page correcte. Ici, le contrôle est configuré pour afficher un paragraphe justifié.
- Support de Swing : cette fonctionnalité disponible dans JavaFX 1.x et qui permet d'inclure des composants Swing dans une interface à base de contrôles JavaFX, n'avait pas été retenue dans la version 2
- Skin : son API est désormais totalement publique
- Gestion de l'impression : plus besoin de passer par AWT ou Swing pour gérer l'impression, ceci causait des problèmes sur MacOS, car JavaFX provoquait le plantage de Swing.
- Les améliorations WebView : support de WebWockets et WebWorker
- Retraits des builders de l'API : ils sont dépréciés et seront supprimés dans Java 9
- Communication AWT/Swing et JavaFX : il devient possible via la ligne de commande de faire que l'EDT (Thread d'affichage et de propagation des événements) de AWT/Swing et le JavaFX Application Thread de JavaFX se fondent en un seul thread. Cette fonctionnalité rend ainsi les dialogues entre les différents composants plus aisés à développer (plus besoin alors de SwingUtilities.invokeLater() et Platform.runLater()).
Les nouveautés concernant le CSS
- Nouvelle API : celle-ci permet de définir des propriétés directement dans votre code Java
- Thème Modena : le CSS de base Caspian est remplacé par Modena
Caspian à gauche remplacé par Modena à droite.
Les nouveautés graphiques
- Des nouveaux composants graphiques : ajout d'un DatePicker (calendrier) et d'un TreeTableView (tableau dont la première colonne contient un arbre). Nous regretterons le manque d'un Spinner et d'un FormattedTextField.
Composant TreeTableView permettant d'afficher une table dont la première colonne est un arbre.
- Gestion de la 3D : avec l'arrivée des primitives 3D, le support des meshes (pour importer des fichiers créés dans des applications externes), les textures, la gestion de l'éclairage la possibilité de rendre des sous-parties d'une scène ou encore de déplacer la caméra, l'on peut donc dire que la 3D est vraiment utilisable au sein de JavaFX.
Box avec rendu fil de fer, Sphere avec rendu ambiant, Cylinder avec rendu spéculaire. Les contrôles 2D peuvent également être positionnés et transformés dans l'espace 3D. Le support de l’anticrénelage a été activé sur la scène.
En complément, le JAR de runtime de JavaFX est désormais dans le répertoire lib/ext du JRE (mécanisme des extensions) et donc toujours sur le ClassPath. Nous pouvons également préciser que JavaFX fait partie du profil embedded (sans WebView ou le support Media). Cette fonctionnalité sera donc disponible dans les JVM pour les Raspberry Pi et autres. Prévu pour cette release, le support de l'enregistrement des Media devrait venir dans une mise à jour ultérieure.
Rappelons également que le passage à l'OpenSource est terminé depuis la fin de l'année 2013.
Comme vous pouvez le voir, JavaFX présente de nombreuses nouveautés. Pour plus de détails, n'hésitez pas à aller sur :
Et vous ?
- Que pensez vous des nouveautés de JavaFX 8 ?
- Utilisez-vous JavaFX ? Si oui, pensez-vous migrer vers cette nouvelle version ?
- Pensez-vous qu'une nouvelle boîte à outils sur Desktop a encore sa place ?
L'équipe Java