Notes de mises à jour de JavaFX 24
par
, 16/03/2025 à 23h51 (3325 Affichages)
Alors que la sortie du JDK 24 est attendue pour demain 18 mars 2025 (heure américaine) et que JavaFX 24 suivra dans la foulée, les notes de mises à jour de l'OpenJFX 24 sont désormais disponibles sur GitHub.
Parmi les nouveautés importantes à signaler :
JDK 22 requis
JavaFX 24 requiert au minimum le JDK 22 pour pouvoir être utilisé.
Confirmation d’accès natif
Suite à des changements de sécurité dans le JDK 24, les méthodes qui font des accès natifs provoqueront désormais l'affichage de l'avertissement suivant dans la console :
Cela impactera l'utilisation pas mal de bibliothèques tierces faisant des appels natifs, dont JavaFX. Pour se prémunir d'un blocage de ces accès dans des versions futures du JDK, il faudra donc rajouter le flag suivant à l’interpréteur Java lors l’exécution : --enable-native-access=<list-of-modules>. Pour JavaFX, la liste de ces modules inclut javafx.graphics qui fait partie des modules de base et, optionnellement, javafx.media et javafx.web si vous les utilisez.
Code : Sélectionner tout - Visualiser dans une fenêtre à part WARNING: Restricted methods will be blocked in a future release unless native access is enabled
Ce qui donne, par exemple :
Liaison avec navigateur web intégré
Code : Sélectionner tout - Visualiser dans une fenêtre à part java --enable-native-access=javafx.graphics,javafx.media,javafx.web
Le module jdk.jsobject qui est utilisé pour fournir un pont entre le navigateur web WebView et le code Java est déprécié dans le JDK 24 et sera retiré dans une version future de Java. JavaFX 24 fournira désormais sa propre version de ce module qui devra donc être utilisé en lieu et place de la version du JDK.
Lors du développement avec le JDK 24, le flag --upgrade-module-path devra être utilisé avec javac et java pour permettre la compilation et l’exécution avec la nouvelle version du module :
Cette méthode ne fonctionnera pas avec les JDK 22 ou 23. Pour ces JDK, il faudra alternativement utiliser le flag --module-path.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 javac --upgrade-module-path=/path/to/javafx-sdk-24/lib java --upgrade-module-path=/path/to/javafx-sdk-24/lib
Lors de la création d'applications natives avec jlink, l'ordre dans lequel le chemin vers les fichiers jmods est liste est désormais important et, quand le JDK 24 est utilisé, le chemin d’accès des fichiers jmods de JavaFX doit être placés avant celui des fichiers du JDK :
Cette méthode ne fonctionnera pas avec les JDK 22 ou 23. Pour ces JDK, il faudra mettre le chemin d’accès des fichiers jmods de JavaFX après celui des fichiers du JDK.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 jlink --output jdk-with-javafx \ --module-path /path/to/javafx-jmods-24:/path/to/jdk-24/jmods \ --add-modules ALL-MODULE-PATH
Extension des formats d'images pris en charge
Le chargement des images dans JavaFX 24 repose sur le module javax.imageio. L'API de module permet d'utiliser des bibliothèques et pilotes tiers pour prendre en charge des formats d'images supplémentaires, par exemple des formats à densité variable tels que SVG. Lors du chargement d'image à densité variable, JavaFX générera une version rastérisée de l'image adaptée à la configuration de l'écran.
Il est donc possible d'utiliser des bibliothèques et pilotes tiers fournis en tant qu’extension Image I/O ou en tant que services enregistrés auprès de IIORegistry. Voir la documentation de Image I/O pour plus d'information.
Conclusion
Le JDK 24 force l’arrivée de quelques changements qui vont modifier un peules habitudes et la configuration des projets JavaFX qui était sensiblement les mêmes depuis la sortie du JDK 9 et le passage aux modules. L’arrivée du support de nouveaux formats d'image est toujours un plus bienvenu. Le reste du document détaille le lot habituel de correctifs ou de soucis connus.
Sources : GitHub OpenJDK-OpenJFX