JavaFX 2.0 compte rendu

Compte rendu de la présentation d’Éamonn McManus : JavaFX 2.0

Abandon de Java FX Script pour la version 2.0 : la raison ? Adoption trop faible du premier. L’API est devenue full-Java. Notez que le projet Visage reprend le flambeau “ the original code base for the Visage compiler is from Oracle’s JavaFX Compiler project which has numerous contributors”

Une beta pour la fin Q2 2O11. Une finale pour le Q3 et les conférence associées.

Petite démo pour commencer : un cube 3D jouant de la vidéo sur toutes les faces. Question : y a-t-il du code natif pour faire tourner cette démo ? oui à travers la plate-forme et OpenGL mais la démo est codée en Java.

Intérêts de JavaFX :

  • accélération graphique
  • un showcase pour les animations
  • API AWT et SWING vieillissantes

Les outils: Éamonn McManus a présenté un outil de création graphique permettant de définir l’interface. Cet outil écrit en JavaFX est indépendant des IDE. Il crée juste la structure graphique. Ensuite les IDE (Eclipse, Netbeans, IDEA) permettent de coder les évènements, les bindings. Enfin le style est géré par un fichier CSS.
Oracle a délibérément choisis de ne pas partir sur un plugin Netbeans pour se prémunir d’un rejet de la communauté Eclipse.
On est aussi très proche d’une philosophie WEB / HTML avec un découpage: Structure / Code / Style.

Il n’y a pas de blocage technique à la création de plugins Netbeans. JavaFX peut fonctionner dans un fenêtre Swing et inversement. Éamonn McManus previent d’une éventuelle perte de performance.

Un composant particulièrement intéressant: un navigateur basée sur WebKit peut être intégré dans une fenêtre Java FX. Il est de plus possible d’interagir avec le contenu HTML de la fenêtre. Cela ouvre des perspectives très intéressante. On se demande aussi, si il est possible de faire une applet qui ouvrirait un navigateur qui …

Mise en place d’API CSS pour styler les applications avec un comportement proche du WEB.

Property binding

Possibilité de lier la valeur d’une propriété d’un objet à celle d’un autre de manière dynamique (exemple du slider qui permet de modifier la taille d’un rectangle qui est “bindé” à la valeur du slider).

Éamonn McManus aborde les problème de “bind-storm” mise àjour des bind en cascade qui casse la fluidité de l’interface graphique.
Solution : gestion plus fine d’invalidité des tailles calculées, elles ne sont calculées qu’à la demande (une fois par frame affichée).

Déploiement : application / applet / Java web start (réaction du public à l’évocation de ce dernier : a-t-il pris un coup de jeune ou bien ?) De plus la plateforme JavaME n’est plus supportée. Windows est la cible principale, MacOS viens ensuite et Linux peut être.

Évènements :Gestion assez traditionnelle à base de Handlers, Event Filter et EventDisptacher semblable à d’autres modèles actuels : Hiérarchie de classe entre évènement, désactivation d’evènement avant re-throwing.

Threading
Le système est mono-threadé au niveau des API graphiques (évènement et traitement de ces derniers dans un seul Thread).