3. Qui?
• Fait du déploiement (continu) d'application web?
• Fait du déploiement (continu) d'application lourde?
• Sait ce qu'apporte le JDK9?
• A déjà testé le JDK9?
6. Modularisation
Java 9 introduit Jigsaw, la mécanique de modularisation du JDK.
Jigsaw est similaire sur bien des concepts à OSGi:
• Notion de modules et non de bundles
• Export de packages
• Utilisation de packages
6
7. Qu'est ce qu'un module?
Un module est une collection de packages
• utilisés
• exportés
Un module est décrit à l'aide du fichier module-info.java.
7
8. Qu'est ce qu'un module Java 9?
module com.twasyl.slideshowfx {
requires javafx.controls;
exports com.twasyl.slideshowfx.utils to java.utils;
}
8
9. Qu'est ce qu'un bundle OSGi?
Bundle-Name: My bundle
Bundle-Activator: com.twasyl.slideshowfx.utils.UtilsActivator
Export-Package: com.twasyl.slideshowfx.utils
Import-Package: org.osgi.framework, javafx.controls
9
14. Mais aussi
• Méthodes privées pour les interfaces
• Garbage collector G1 activé par défaut
• Nouvelle API pour @Deprecated
• Nouvelles méthodes utilitaires pour les collections :
• {List | Set | Map }.of(...)
14
15. Ou encore
• Une meilleure gestion des chaînes de caractères
• La Javadoc se dote d'un champ de recherche !
• JShell est un REPL (Real Eval Print Loop) permettant d'exécuter du code
Java sans avoir à écrire toute la syntaxe du langage.
15
17. Généralités
Les nouveautés de JavaFX 9 se situent surtout sous le chapeau :
• Modularisation complète pour s'accorder avec Jigsaw
• API publique pour les skins des contrôles
• Support du HDPI pour Linux
• GTK 3 pour Linux
• Mise à jour de WebKit
17
19. Jigsaw (encore)
Jigsaw apporte une encapsulation forte:
• Comment accéder aux champs privés annotés @FXML ?
• Comment charger les ressources de son application:
• Les *.fxml ?
• Les images?
• Les feuilles de style
• …
19
20. @FXML - controller
Quel est le problème?
public class MonController implements Initializable {
@FXML private Button button;
}
20
24. Feuilles de style
• Attention au @... dans les FXMLs
<BorderPane>
<stylesheets>
<URL value="@../css/default.css" />
</stylesheets>
</BorderPane>
24
26. Packaging
• Possible via:
• javapackager
• ant
• Support des applications modulaires
• Taille du package moins importante
• Temps de chargement plus rapides
26
29. Ce qui est nécessaire?
• Un gestionnaire de source
• Un outil de construction
30. Gestionnaire de sources
Toujours utiliser un gestionnaire de version des sources (VCS) pour:
• garder une trace des changements
• partager son code
• résoudre efficacement les conflits de modification concurrente
30
32. git
• Tirer parti du mécanisme de branches
• Maîtriser les commandes essentielles :
• git commit --amend
• git merge
• git rebase
• git pull
• git push
32
33. git-flow
• Une branche master pour les releases
• Une branche development pour les développements des versions futures
• Des branches feature pour chacune des fonctionnalités
• Des branches bugfix pour les bugs
33
34. GitHub
• Tirer parti de la fonctionnalité de releases
• Gestionnaires de ticket
• Wiki
• Intégrés avec beaucoup de services de construction et de livraison continue
34
35. Outil de construction
Intéressant et utile pour :
• exécuter les tests unitaire et d'intégration
• gérer les dépendances du projet
• construire de manière aisée le livrable du projet
• gérer les modules Jigsaw
Ne sont pas prets
35
36. Outils de construction
• gradle
• Support limité de Java 9 et Jigsaw
• Compilation sans Jigsaw possible
• maven
• Travail en cours
36
38. Enjeux
Livraison continue Déploiement continu
JAR JavaFX 1 WAR + n JARs
n plateformes clientes cibles 1 plateforme serveur cible
Hébergement des binaires pour téléchargement Serveur cible
38
42. Inconvénients
• La version de Java peut être dépendante du service utilisé
• La sauvegarde des artefacts produits n'est pas toujours possible
• Temps de construction limité
42
43. bintray
• Permet pour les binaires de
• les héberger par version
• les télécharger
• S'intègre avec gradle
• l'étape de construction permet donc l'upload
43