JavaFX est un framework et une bibliothèque d'interface utilisateur issue du projet OpenJFX, qui permet aux développeurs Java de créer une interface graphique pour des applications de bureau, des applications internet riches et des applications smartphones et tablettes tactiles.

Créé à l'origine par Sun MicroSystems, puis développé par Oracle après son rachat et ce, jusqu'à la version 11 du JDK, c'est depuis lors à la communauté OpenJFX que revient la poursuite de son développement.

Cette bibliothèque a été conçue pour remplacer Swing et AWT, qui ont été développés à partir de la fin des années 90, pour pallier les défauts de ces derniers et fournir de nouvelles fonctionnalités (dont le support des écrans tactiles).

Le cycle de sortie d'une nouvelle version de JavaFX correspond à celui de Java, soit tous les 6 mois.

Historique À ses débuts, les développeurs devaient utiliser le langage de script JavaFX Script pour pouvoir décrire une interface utilisateur et la bibliothèque ne permettait de concevoir que des applications internet riches.

Depuis la version 2.0, il s'agit d'une véritable API qui est proposé sous la forme d'une bibliothèque tierce et qui plus est, devient open source.

Avec l'apparition de la version 8 de Java (en ), JavaFX devient la bibliothèque de création d'interface graphique officielle du langage Java, le développement de son prédécesseur Swing (avec AWT) étant abandonné, excepté pour les corrections de bogues.

Depuis la version 11 de Java, le projet est dissocié du JDK, pour suivre son propre processus de développement. Toutefois, le numéro de version de JavaFX concorde avec celui du JDK pour indiquer sa compatibilité (car toute application JavaFX est basée sur le JDK).

Composants thumb|Exemple de scène 3D simple utilisant JavaFX. JavaFX est composé des 7 modules suivants:

javafx.base: Définit l'API de base javafx.controls: Définit la majorité des composants graphiques de l'API javafx.fxml: Définit l'API relative au langage FXML qui permet de décrire une interface utilisateur d'une manière alternative à l'écriture de lignes de code javafx.graphics: Définit l'API relative aux conteneurs, animations, effets visuels, formes 2D et 3D, images, impression, fenêtres, événements, robots, au support du CSS et à l'application javafx.media: Définit l'API dédié à la lecture de contenu audio et vidéo javafx.swing: Définit l'API qui fournit le support d’interopérabilité entre JavaFX et Swing javafx.web: Définit l'API dédié à l'affichage de contenu web (notamment un éditeur HTML et un moteur de rendu de pages web basé sur WebKit)

Versions +Liste des versions de JavaFXNuméro de versionDate de sortieNote1.0JavaFX Script ; le code source est fermé1.11.21.3Intégration des diagrammes ; support du CSS1.3.12.0Il s'agit désormais d'une API et non d'un langage de script ; FXML2.1Support de MacOS2.2Support de Linux ; nouveaux composants graphiques8.0Intégration de JavaFX au JDK 89.0Modularisation de JavaFX10.011.0Devient un module à part entière du JDK12.013.014.013 mars 202015.0septembre 202016.0mars 202117.0septembre 2021Soutien à long terme jusqu'en septembre 202618.0mars 202219.0septembre 202220.0mars 202321.0septembre 2023Soutien à long terme

Exemple Ci-dessous, un exemple de programme affichant le message "Hello World":import javafx.application.Application; import javafx.scene.control.Label; import javafx.stage.Stage; import javafx.application.Platform; import javafx.scene.Scene;

public class Main extends Application {

// Point d'entrée du programme public static void main(String[] args) { launch(args); // Appel du point d'entrée de l'application JavaFx (voir ci-dessous)

// Point d'entrée de l'application JavaFX @Override public void start(Stage primaryStage) {

// Définition du titre de la fenêtre de l'application primaryStage.setTitle("Titre de la fenêtre");

// Appel d'une méthode permettant une fermeture propre de l'application primaryStage.setOnCloseRequest(e -> Platform.exit());

// Création de la scène (avec des dimensions correspondant à une résolution HD), composé uniquement d'une étiquette affichant du texte primaryStage.setScene(new Scene(new Label("Hello world !"), 1280, 720));

// Affichage de la fenêtre primaryStage.show();

Bibliothèques Des projets de bibliothèques viennent compléter les fonctionnalités de JavaFX. Parmi eux, on peut citer les projets suivants:

ControlsFX: ensemble de composants graphiques JFXtras: ensemble de composants graphiques JFoenix: fournit une interface dans le style Material design CalendarFX: permet de créer des calendriers FormsFX: permet de faciliter la création de formulaires TilesFX: ensemble de widgets pour le développement d'un tableau de bord

Scene Builder: l'outil de conception d'interfaces

vignette|Interface de Scene Builder Scene Builder est un outil interactif de conception d'interface graphique pour JavaFX. Il permet de créer des interfaces utilisateurs rapidement et sans avoir besoin de coder: il en résulte des fichiers au format FXML qui sont ensuite chargés par le programme pour afficher une interface graphique à ses utilisateurs.

Développé initialement par Oracle et sous le nom JavaFX Scene Builder, son code source a été publié en open source à partir de sa version 2.0.

Depuis, le logiciel est principalement développé et soutenu par la société Gluon.

Annexes

Articles connexes Java (langage) Plate-forme Java Machine virtuelle Java Swing Liste de bibliothèques d'interface utilisateur Scene Builder

Liens externes Wiki du projet OpenJFX Page de téléchargement de SceneBuilder Site internet de Scene Builder

Références

Catégorie:Java (langage) Catégorie:Interface utilisateur Catégorie:Framework de programmation Catégorie:Interface de programmation Catégorie:Plateforme Java Catégorie:Bibliothèque logicielle graphique Catégorie:Bibliothèque logicielle Java