Java 9 arrive et avec lui son mécanisme de modularisation Jigsaw. Notre manière de concevoir et livrer nos applications va évoluer de même que les outils que nous utilisons. Cette évolution n’aura pas les mêmes enjeux et contraintes en fonction du type de développement ciblé: une application serveur ou bien une application cliente. Une sensibilisation aux nouveautés de Java 9 ainsi qu’une application utilisant JavaFX seront réalisés au cours de cette présentation. Ces dernières permettront de mettre en lumière les impacts de Java 9 sur les phases de développement, de construction et de livraison d’une application cliente de même que nos pratiques au quotidien.
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
7. QU'EST CE QU'UN MODULE?
Un module est une collection de packages
utilisés
exportés
ouverts
Un module est décrit à l'aide du fichier module-info.java.
Un module peut être ouvert.
8. QU'EST CE QU'UN MODULE JAVA 9?
module com.twasyl.slideshowfx {
requires javafx.controls;
exports com.twasyl.slideshowfx.utils to java.utils;
}
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
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(...)
15. OU ENCORE
Une nouvelle API pour parcourir les stacktraces
Support d'Unicode 8.0
La généricité des enum
16. 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.
18. 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
20. 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
…
21. @FXML - CONTROLLER
Quel est le problème?
public class MonController implements Initializable {
@FXML private Button button;
}
30. CE QUI EST NÉCESSAIRE?
Un gestionnaire de source
Un outil de construction
31. 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
33. GIT
Tirer parti du mécanisme de branches
Maîtriser les commandes essentielles :
git commit --amend
git merge
git rebase
git pull
git push
34. 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
Pour en savoir plus
35. 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
37. 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
44. 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é
45. 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
48. RESSOURCES
, Jonathan Giles, Kevin
Rushforth - JavaOne 2016
, Chris Bensen - JavaOne 2016
, Joe Darcy -
JavaOne 2016
, Katharine
JavaFX: New and Noteworthy
Packaging Java Applications
JDK 9 Language, Tooling, and Library Features
How do you solve a problem like Java 9 modules and
reflective access?
JEPs
49. SOURCES DE LA DÉMONSTRATION
https://github.com/twasyl/So Shake16