Thierry Wasylczenko
@twasyl
DU DÉVELOPPEMENT
À LA LIVRAISON
avec JavaFX et le JDK 9
A PROPOS
groupe Everial
Ingénieur R&D
Knowings
@twasyl
SlideshowFX
JStackFX
QUI?
Fait du déploiement (continu) d'application web?
Fait du déploiement (continu) d'application lourde?
Sait ce qu'appor...
SOMMAIRE
Java 9
JavaFX 9
Construction continue
Livraison continue
Conclusion
JAVA 9
MODULARISATION
Java 9 introduit Jigsaw, la mécanique de modularisation du
JDK.
Jigsaw est similaire sur bien des concepts ...
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 d...
QU'EST CE QU'UN MODULE JAVA 9?
module com.twasyl.slideshowfx {
requires javafx.controls;
exports com.twasyl.slideshowfx.ut...
QU'EST CE QU'UN BUNDLE OSGI?
Bundle-Name: My bundle
Bundle-Activator: com.twasyl.slideshowfx.utils.UtilsActivator
Export-P...
Java 9 ce n'est pas que ça
TRY-WITH-RESOURCES
Avant Java 9:
try(final ByteArrayOutputStream output = ...) {
// ...
}
// J'ai besoin de output!!
TRY-WITH-RESOURCES
Donc ...
ByteArrayOutputStream output = null;
try(output = ...) {
// ...
}
output.toByteArray();
TRY-WITH-RESOURCES
Avec Java 9:
final ByteArrayOutputStream output = new ...
try(output) {
// ...
}
output.toByteArray();
MAIS AUSSI
Méthodes privées pour les interfaces
Garbage collector G1 activé par défaut
Nouvelle API pour @Deprecated
Nouve...
OU ENCORE
Une nouvelle API pour parcourir les stacktraces
Support d'Unicode 8.0
La généricité des enum
OU ENCORE
Une meilleure gestion des chaînes de caractères
La Javadoc se dote d'un champ de recherche !
JShell est un REPL ...
JAVAFX 9
GÉNÉRALITÉS
Les nouveautés de JavaFX 9 se situent surtout sous le
chapeau :
Modularisation complète pour s'accorder avec J...
Cela vous parle?
JIGSAW (ENCORE)
Jigsaw apporte une encapsulation forte:
Comment accéder aux champs privés annotés @FXML?
Comment charger l...
@FXML - CONTROLLER
Quel est le problème?
public class MonController implements Initializable {
@FXML private Button button...
@FXML - MODULE-INFO.JAVA
module com.twasyl.slideshowfx {
// ...
opens com.twasyl.slideshowfx.controllers to javafx.fxml;
}
CHARGEMENT DES RESSOURCES
Est-ce que cela vous choque?
Ou?
ClassLoader.getResource(...);
scene.getStyleSheets().add("/com/...
CHARGEMENT DES RESSOURCES
Il faudra faire comme cela :
Class.getResource(...);
FEUILLES DE STYLE
Attention au @... dans les FXMLs
<BorderPane>
<stylesheets>
<URL value="@../css/default.css" />
</styles...
Démonstration
PACKAGING
Possible via:
javapackager
ant
Support des applications modulaires
Taille du package moins importante
Temps de c...
Démonstration
CONSTRUCTION CONTINUE
CE QUI EST NÉCESSAIRE?
Un gestionnaire de source
Un outil de construction
GESTIONNAIRE DE SOURCES
Toujours utiliser un gestionnaire de version des sources
(VCS) pour:
garder une trace des changeme...
git
GIT
Tirer parti du mécanisme de branches
Maîtriser les commandes essentielles :
git commit --amend
git merge
git rebase
gi...
GIT-FLOW
Une branche master pour les releases
Une branche development pour les développements
des versions futures
Des bra...
GITHUB
Tirer parti de la fonctionnalité de releases
Gestionnaires de ticket
Wiki
Intégrés avec beaucoup de services de con...
Construction
OUTIL DE CONSTRUCTION
Intéressant et utile pour :
exécuter les tests unitaire et d'intégration
gérer les dépendances du pr...
OUTILS DE CONSTRUCTION
gradle
Support limité de Java 9 et Jigsaw
Compilation sans Jigsaw possible
maven
Travail en cours
LIVRAISON CONTINUE
ENJEUX
Livraison continue Déploiement
continu
JAR JavaFX 1 WAR + n JARs
n plateformes clientes cibles 1 plateforme
serveur...
TRAVIS CI
Construire un projet sur:
Linux
OS X
.travis.yml
Supporte git
APPVEYOR
Construire un projet sur Windows
x86
amd64
appveyor.yml
Supporte git
Démonstration
INCONVÉNIENTS
La version de Java peut être dépendante du service utilisé
La sauvegarde des artefacts produits n'est pas to...
BINTRAY
Permet pour les binaires de
les héberger par version
les télécharger
S'intègre avec gradle
l'étape de construction...
CONCLUSION
CONCLUSION
Jigsaw (mais pas que)
Axé performance
Nouveaux composants
Mise à jour
des IDEs
des outils
RESSOURCES
, Jonathan Giles, Kevin
Rushforth - JavaOne 2016
, Chris Bensen - JavaOne 2016
, Joe Darcy -
JavaOne 2016
, Kat...
SOURCES DE LA DÉMONSTRATION
https://github.com/twasyl/So Shake16
FAQ
Prochain SlideShare
Chargement dans…5
×

Du développement à la livraison avec JavaFX et le JDK9

103 vues

Publié le

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.

Publié dans : Ingénierie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
103
Sur SlideShare
0
Issues des intégrations
0
Intégrations
17
Actions
Partages
0
Téléchargements
3
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Du développement à la livraison avec JavaFX et le JDK9

  1. 1. Thierry Wasylczenko @twasyl DU DÉVELOPPEMENT À LA LIVRAISON avec JavaFX et le JDK 9
  2. 2. A PROPOS groupe Everial Ingénieur R&D Knowings @twasyl SlideshowFX JStackFX
  3. 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?
  4. 4. SOMMAIRE Java 9 JavaFX 9 Construction continue Livraison continue Conclusion
  5. 5. JAVA 9
  6. 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. 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. 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. 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
  10. 10. Java 9 ce n'est pas que ça
  11. 11. TRY-WITH-RESOURCES Avant Java 9: try(final ByteArrayOutputStream output = ...) { // ... } // J'ai besoin de output!!
  12. 12. TRY-WITH-RESOURCES Donc ... ByteArrayOutputStream output = null; try(output = ...) { // ... } output.toByteArray();
  13. 13. TRY-WITH-RESOURCES Avec Java 9: final ByteArrayOutputStream output = new ... try(output) { // ... } output.toByteArray();
  14. 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. 15. OU ENCORE Une nouvelle API pour parcourir les stacktraces Support d'Unicode 8.0 La généricité des enum
  16. 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.
  17. 17. JAVAFX 9
  18. 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
  19. 19. Cela vous parle?
  20. 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. 21. @FXML - CONTROLLER Quel est le problème? public class MonController implements Initializable { @FXML private Button button; }
  22. 22. @FXML - MODULE-INFO.JAVA module com.twasyl.slideshowfx { // ... opens com.twasyl.slideshowfx.controllers to javafx.fxml; }
  23. 23. CHARGEMENT DES RESSOURCES Est-ce que cela vous choque? Ou? ClassLoader.getResource(...); scene.getStyleSheets().add("/com/twasyl/slideshowfx/css/Default.css");
  24. 24. CHARGEMENT DES RESSOURCES Il faudra faire comme cela : Class.getResource(...);
  25. 25. FEUILLES DE STYLE Attention au @... dans les FXMLs <BorderPane> <stylesheets> <URL value="@../css/default.css" /> </stylesheets> </BorderPane>
  26. 26. Démonstration
  27. 27. PACKAGING Possible via: javapackager ant Support des applications modulaires Taille du package moins importante Temps de chargement plus rapides
  28. 28. Démonstration
  29. 29. CONSTRUCTION CONTINUE
  30. 30. CE QUI EST NÉCESSAIRE? Un gestionnaire de source Un outil de construction
  31. 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
  32. 32. git
  33. 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. 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. 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
  36. 36. Construction
  37. 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
  38. 38. OUTILS DE CONSTRUCTION gradle Support limité de Java 9 et Jigsaw Compilation sans Jigsaw possible maven Travail en cours
  39. 39. LIVRAISON CONTINUE
  40. 40. 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
  41. 41. TRAVIS CI Construire un projet sur: Linux OS X .travis.yml Supporte git
  42. 42. APPVEYOR Construire un projet sur Windows x86 amd64 appveyor.yml Supporte git
  43. 43. Démonstration
  44. 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. 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
  46. 46. CONCLUSION
  47. 47. CONCLUSION Jigsaw (mais pas que) Axé performance Nouveaux composants Mise à jour des IDEs des outils
  48. 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. 49. SOURCES DE LA DÉMONSTRATION https://github.com/twasyl/So Shake16
  50. 50. FAQ

×