Newsletter Developpez.com

Inscrivez-vous gratuitement au Club pour recevoir
la newsletter hebdomadaire des développeurs et IT pro

Java 8 apporte aussi des nouveautés du côté de Java FX,
Venez découvrir les améliorations de JavaFX 8

Le , par Mickael Baron, Responsable Java
Java 8 est sortie le 18 mars dernier. Avec cette nouvelle mouture, nous avons pu voir d'importantes nouveautés au sein de la discussion Java 8 est disponible, la plate-forme se met aux expressions lambdas, tour d'horizon des nouveautés. Celles-ci concernaient aussi bien le langage, son API ou encore la machine virtuelle.

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


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Caranille Caranille - Membre du Club https://www.developpez.com
le 14/04/2014 à 9:43
Bonjour,

Ayant programmé avec le C#.NET de Microsoft et ses WinForm et WPF je penses que JAVA FX apporte enfin ce dont ont reprochais longtemps à Java, à savoir des interfaces graphique agréable visuellement. Car le Swing et AWT ça pique les yeux avec ses couleurs à la limite du 8 bits.

Pour moi les applications lourde ont encore un avenir car bon les logiciels entièrement web c'est bien mais quand il y a une panne de réseau on peut rentrer chez soit

Cordialement, Jérémy
Avatar de behel behel - Membre à l'essai https://www.developpez.com
le 14/04/2014 à 10:54
Les image ne s'affiche pas si on n'est pas loguer !
Avatar de behel behel - Membre à l'essai https://www.developpez.com
le 14/04/2014 à 11:02
Peut'on avoir plus d'information sur :
-Retraits des builders de l'API Builder
Avatar de Mr_Exal Mr_Exal - Membre expert https://www.developpez.com
le 14/04/2014 à 11:04
Citation Envoyé par Caranille  Voir le message
Bonjour,

Ayant programmé avec le C#.NET de Microsoft et ses WinForm et WPF je penses que JAVA FX apporte enfin ce dont ont reprochais longtemps à Java, à savoir des interfaces graphique agréable visuellement. Car le Swing et AWT ça pique les yeux avec ses couleurs à la limite du 8 bits.

Pour moi les applications lourde ont encore un avenir car bon les logiciels entièrement web c'est bien mais quand il y a une panne de réseau on peut rentrer chez soit

Cordialement, Jérémy

Bonjour, on peut également faire des applications full web en JavaFX.

Que pensez vous des nouveautés de JavaFX 8 ?

Que du bon! L'impression qui se fait en 3 lignes de code c'est vraiment le pied.

Utilisez-vous JavaFX ? Si oui, pensez-vous migrer vers cette nouvelle version ?

Oui, pour un ERP/CRM maison, n'ayant pas trouvé ce qu'il nous fallait dans le commerce. Je pense qu'on migrera bientôt rien que pour l'impression par exemple.
D'ailleurs pour les personnes qui voudraient migrer : http://admedfx.blogspot.co.nz/

Pensez-vous qu'une nouvelle boîte à outils sur Desktop a encore sa place ?

Bien sûr que oui ! Il y aura toujours des applications lourdes et du SaaS ou de l'hybride.
Avatar de la.lune la.lune - Membre chevronné https://www.developpez.com
le 14/04/2014 à 14:51
C'est ce qui manquait sur Devp, la news sur les nouveautés, mais on a eu déjà à tester même la version beta de JavaFX8 avant même la sortie de java8.
Je tiens à souligner aussi que la rubrique JavaFX est supprimé sur le site d'Oracle pour montrer l’alignement de javaFx8 avec java8. Maintenant JavaFX est une partie intégrante du standard Java SE 8. Ce qui apporte un package de base de plus au JDK à côté des API java et javax, on a javafx
Swing et JavaFX sont au même pied d'égalité sous la rubrique "Client Technologies" de la documentation officielle de Java Standard Edition 8.

Citation Envoyé par Mickael Baron  Voir le message

  • Thème Modena : le CSS de base Caspian est remplacé par Modena

A noté que ce celui est intéressé par le bon vieux style Caspian, que ce style existe encore dans le jdk il suffit de faire son appel. Même SceneBuilder permet de basculer vers l'ancien style
Avatar de bouye bouye - Rédacteur/Modérateur https://www.developpez.com
le 15/04/2014 à 0:23
Citation Envoyé par behel  Voir le message
Peut'on avoir plus d'information sur :
-Retraits des builders de l'API Builder

Les builder sont deprecated dans le JDK 8 et ne devraient etre retires qu'a partir du JDK 9 :

Le code suivant qui compile sans soucis avec JavaFX 2.x sous JDK 6 ou 7 lancera donc un warning dans JDK 8 :

Code : Sélectionner tout
Button button = ButtonBuilder.create().text("Salut !").build();
Il faudra donc remplacer un tel code par :

Code : Sélectionner tout
1
2
Button button = new Button(); 
button.setText("Salut !")
Voir : Proposal: Deprecate Builders par Richard Bair.
Deux raisons sont invoquées pour un tel changement :

  • L'implementation JavaFX 2.x des builder reposent sur deux bugs dans la gestion des generics du JDK 6 et 7. Or ces bugs ont ete corriges dans le JDK 8 ce qui fait que les builders ne fonctionnent pas "correctement" (dans certains cas).
  • Les builders rajoutent beaucoup de classes et leur utilisation requiert un espace mémoire supplémentaires. Les retirer permet d'avoir des profils et des usages mémoires plus restreints sur les profil embeded et les JVM mobiles.


Ceci dit, tous les builders ne sont pas retirés pour autant, certains comme les divers adaptateurs qui permettent de mapper des propriétés Java Beans en propriété JavaFX restent. Les builders des nœuds graphiques sont tous deprecated par contre il me semble.

Perso ça me gène un peu car je trouvait la syntaxe plus concise et plus élégante, encore plus si on utilisait un langage fonctionnel. Mais bon, c'est comme ca.
Avatar de bouye bouye - Rédacteur/Modérateur https://www.developpez.com
le 15/04/2014 à 0:28
Citation Envoyé par la.lune  Voir le message
A noté que ce celui est intéressé par le bon vieux style Caspian, que ce style existe encore dans le jdk(comme vous savez que le SDK propre de javafx est mort) il suffit de faire son appel. Même SceneBuilder permet de basculer vers l'ancien style

Il est en effet possible de spécifier :

Code : Sélectionner tout
setUserAgentStylesheet(STYLESHEET_CASPIAN);
Dans le code de la classe héritant d'Application.

Je n'ai pas trop joue avec Caspian dans le JDK 8 donc je ne sais pas si les skins des contrôles sont les mêmes que celles sous JavaFX 2.2 ou si c'est juste des skins JDK 8 qui ont le look Caspian.

Pour rappel : les skins JDK 8 sous Modena peuvent avoir des agencement de parties internes différentes (notamment la skin de ScrollPane contient plus de nœuds interne, ce qui impacte du coup TextArea, etc...) et donc oblige a modifier les CSS des apps existantes.
Avatar de bouye bouye - Rédacteur/Modérateur https://www.developpez.com
le 18/04/2014 à 0:58
Le JDK 8 u5 est disponible depuis le 15 avril. Cette mise à jour ne contient que des correctifs liés à la sécurité.
Offres d'emploi IT
Architecte sécurité des systèmes d'information embarqués H/F
Safran - Ile de France - 100 rue de Paris 91300 MASSY
Data scientist senior H/F
Safran - Ile de France - Magny-les-Hameaux (Saclay)
Spécialiste systèmes informatiques qualité et référent procédure H/F
Safran - Ile de France - Colombes (92700)

Voir plus d'offres Voir la carte des offres IT
Responsables bénévoles de la rubrique Java : Mickael Baron - Robin56 -