- Java>Java 11 -
- Publié le : | Modifié le :
Java sdk11 & JavaFX 11, Installation et Configuration.
Sommaire:
- 1. Installation du SDK 11
- 2. Installation de JavaFX 11
- 3. Configuration des variables d'environnement, partie 1
- 4. Création d'une "Runtime image" personnalisée, pour les jar
- 5. Configuration des variables d'environnement, partie 2
- 6. Configuration de "NETBEANS 10" IDE
- 7. Création des .Bat et .EXE pour lancer le .jar
- 8. Retour d'expérience
- Conclusion
Why do it easy when you can do it painfull.
Cet article s'attachera à produire un pense-bête pour une migration de Java 8 vers Java 11. Et comme on le verra, ce n'est pas une mince affaire. Puisque depuis le passage à la version 9, il y a eu une modification structurelle de Java surtout dans sa partie déploiement et installation. Même s'il y a des modifications dans le langage de programmation, elles sont somme toute mineures par rapport à la partie installation et déploiement. Globalement le plus dur est l'installation du "Runtime image" et si vous y tenez transformer le jar en .exe, il y a des petites finesses qui peuvent vite pousser au renoncement. Grosso modo si vos classes sont récentes, genre Java 8 et JavaFX, il n'y aura pas trop de difficultés pour le portage de vos applications. Pour ma part, la seule limitation vient de NetBeans 10, pas moyen de réussir à lancer le jar avec un projet déclaré dès le départ en JavaFX, par contre si je lui fait un run
sur la classe principale il l'affiche, il y a certainement quelque chose que j'ai omis...
Installation du SDK 11
JavaFX 11: Install Java 11
Télécharger le jdk qui vous convient Oracle Jdk 11 où OpenJDK, puis installez le. La différence est sur les licences, il faut savoir que l'OpenJDK est le JDK de référence de toutes les autres solutions.
Puis ajoutez deux variables d'environnement pointant vers:
JAVA_HOME
le dossier d'installation de Java.
Et dans PATH
le répertoire lib du JDK.
Installation de JavaFX 11
Téléchargez un JavaFX runtime approprié, GLUON JavaFX. Préférez javafx-jmods

Deux options s'offrent à vous, soit le SDK, soit le jmods. Il est préférable de choisir le jmods car vous n'aurez pas à tout reconfigurer, si vous décidez de faire une application modulaire et/ou de créer une image runtime
. Décompressez l'archive à l'endroit désiré, évitez un dossier protégé en écriture sinon vous aurez un petit problème d'accès aux fichiers et autres paramètres de configuration,Si si testé et approuvé ;(.
Puis ajoutez un variable d'environnement, PATH_TO_FX
pointant vers le répertoire lib du runtime.
Configuration des variables d'environnement, partie 1
clique droit sur le menu, recherche, tapez: "panneau de configuration". Une fois le panneau ouvert, "Système et sécurité", "Système". Puis appuyez sur "Paramètres système avancés". Le panneau "Propriétés système" s'ouvre, cliquez sur "Variables d'environnement"

Puis dans l'onglet "Variables système", cliquez sur nouvelle et faites comme sur l'image suivante en répétant cela pour les trois nouvelles variables.

Ici Vous trouverez l'ossature des variables à installer et à adapter selon vos dossiers de destination.
- JAVA_HOME="path\to\Java\jdk-11.0.2
- PATH="path\to\Java\jdk-11.0.2\lib"
- PATH_TO_FX="path\to\javafx-sdk-11.0.2\lib
- ou / et (Préférez javafx-jmods)
- PATH_TO_FX_MODS="path\to\javafx-jmods-11.0.2
Création d'une "Runtime image" personnalisée, pour les jar.
Tout d'abord cette image permet de joindre le Java SDK 11 et le JavaFX SDK 11, en une seule entité, ce qui est plus pratique, pour les IDE et la configuration des librairies. Bref on réinvente la roue puisque oracle a laissé tomber le développement d'interface graphique depuis quelques années (SWING et AWT), au profit de JavaFX qui est désolidarisé depuis le SDK 9. Mais si vous développez des applications pour PC, vous devez obligatoirement la réintégrer. Cela en dit long sur le développement d'applications sur PC au passage, chez oracle. Sans compter le procès avec Google et son système Android qui utilise Java à fond pour les applications, sans payer de royalties à Oracle, ceci expliquant cela certainement. Enfin bref...
Autre considération le choix des armes pour JavaFX 11, "javafx-sdk" ou "javafx-jmods". Si vous partez dans une création d'image c'est "javafx-jmods".
- Rappel, Variable d'environnement: PATH_TO_FX_MODS="path\to\javafx-jmods-11.0.2"
- ATTENTION pour "--output \path\to\jdkfx-11.0.2" ne doit pas exister.
- %JAVA_HOME%\bin\jlink --module-path %PATH_TO_FX_MODS% --add-modules=java.se,javafx.controls,javafx.fxml --bind-services --output \path\to\jdkfx-11.0.2
- EN CAS D'ERREUR. (+ tous les modules)
- jlink --module-path %PATH_TO_FX_MODS% --add-modules=java.se,javafx.controls,javafx.fxml,javafx.graphics,javafx.web,javafx.base,javafx.media --bind-services --output \path\to\jdkfx-11.0.2
Voilà l'image est créée, mais n'est pas fonctionnelle il faut encore modifier les variables d'environnement.
Configuration des variables d'environnement, partie 2
Il y a 2 variables à modifier, JAVA_HOME
sinon on ne s'adressera pas au bon jDK et PATH
sinon quand on lance la commande java cela ne fonctionne plus avec des contrôles JavaFX.
Le nouveau chemin et celui d'ouput dans la création de la runtime image --output \path\to\jdkfx-11.0.2
- JAVA_HOME="path\to\Java\jdk-11.0.2" devient "\path\to\jdkfx-11.0.2"
- PATH="path\to\Java\jdk-11.0.2\lib" devient "\path\to\jdkfx-11.0.2\lib"
Voilà l'image est opérationnelle, vous pouvez l'intégrer dans votre IDE favori.
Configuration de "NETBEANS 10" IDE.
Première étape intégrer votre "Runtime image" dans votre IDE:
Dans le menu "Tools" cliquez sur "Java Platforms". Sur le panneau "Java Platform Manager", cliquez sur "Add Platform...", suivez les étapes. vous devez choisir le dossier qui correspond à votre nouveau JAVA_HOME="\path\to\jdkfx-11.0.2"
et lui donner un nom sans ambigüité par exemple JDKFX11
Si vous scrollez dans l'onglet "Classes" et que la "Runtime image" est correctement installée, vous devez voir apparaitre les modules JavaFX, comme sur l'image ci-dessous.

Deuxième étape intégrer votre image dans votre projet:
ATTENTION! Pour une raison que je n'ai pas encore trouvée ne créer pas de projet JavFX, on peut compiler une classe en manuel, mais le projet ne se lance pas, il ne trouve pas les classes. !?!
Vous devez cliquer droit sur le projet et sur "Properties". Dans le panneau ouvert cliquez sur "Libraries" et sélectionnez votre "Runtime image" dans le sélecteur juste avant le bouton "Manage Platforms..."

Voilà vous pouvez commencez à coder ...
Création des .Bat et .EXE pour lancer le .jar
Le .bat
Une fois votre projet en place et bien avancé, vous voudrez certainement créer un jar
et le tester. Or dorénavant on ne peut plus lancer son jar en auto exécutable. Quel est l'intérêt de cette restriction? Donc il vous faudra créer un fichier .bat pour lancer le jar
- REM java --module-path %PATH_TO_FX% --add-modules=javafx.base,javafx.controls,javafx.graphics -jar %~dp0JARNAME.jar%*
- java --module-path mods -jar %~dp0JARNAME.jar%*
- @pause où exit
- Sans "runtime image" avec un sdkFX
- Avec "runtime image" et les jmods
- À noter: %~dp0JARNAME.jar%* permet de localiser le jar en chemin relatif.
- @pause si il y a des erreurs, toujours pratique de les voir dans la console.
Le .exe avec "Advanced Bat to EXE Converter v4.11"
Télécharger Advanced Bat to EXE Converter v4.11, c'est un programme qui permet de convertir un .bat en
.exe. Avec des options très intéressantes choix d'un fichier icône, démarrage invisible(la console n'apparait pas), intégration de fichier(dont le jar
) dans l'exécutable.
À noter: la variable %MYFILES% propre à "Advanced Bat to EXE Converter v4.11", permet de désigner le fichier embarqué, c'est son chemin dans le .exe
Exemple avec le jar embarqué:
- @echo off
- java --module-path mods -jar %MYFILES%\JARNAME.jar
- EXIT
Retour d'expérience du 02-02-2019
Bon après avoir repassé mes programmes à la version SDK 11, globalement je suis très agréablement surpris. temps estimé entre 10 et 20 minutes pour recopier les classes, puis changer les entêtes et certaines variables de la classe principale MAIN.lavar
, en faisant une recherche et tout remplacer dans le dossier. Compilation et tout roule. J'ai perdu plus de temps avec "Advanced Bat to EXE Converter v4.11", et mon logiciel de malware qui lui fait les gros yeux.
Cela est en contradiction avec la conclusion, mais je reste convaincu que pour déployer une application, ce ne sera pas réservé au tout venant.