JavaFX et le JDK9

225 vues

Publié le

Présentation de JavaFX et du JDK9 dispensée à Softshake 2016

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
225
Sur SlideShare
0
Issues des intégrations
0
Intégrations
8
Actions
Partages
0
Téléchargements
8
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

JavaFX et le JDK9

  1. 1. JavaFX et le JDK9 Construire son application Thierry Wasylczenko @twasyl
  2. 2. A propos • Knowings groupe Everial • Ingénieur R&D • @twasyl • SlideshowFX 2
  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 4
  5. 5. Java 9 5
  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 6
  7. 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. 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. 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
  10. 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!! 11
  12. 12. try-with-resources Donc ... ByteArrayOutputStream output = null; try(output = ...) { // ... } output.toByteArray(); 12
  13. 13. try-with-resources Avec Java 9: final ByteArrayOutputStream output = new ... try(output) { // ... } output.toByteArray(); 13
  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(...) 14
  15. 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
  16. 16. JavaFX 9 16
  17. 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
  18. 18. 18 Cela vous parle?
  19. 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. 20. @FXML - controller Quel est le problème? public class MonController implements Initializable { @FXML private Button button; } 20
  21. 21. @FXML - module-info.java module com.twasyl.slideshowfx { // ... exports private com.twasyl.slideshowfx.controllers to javafx.fxml } 21
  22. 22. Chargement des ressources Est-ce que cela vous choque? Ou? ClassLoader.getResource(...); scene.getStyleSheets().add("/com/twasyl/slideshowfx/css/Default 22
  23. 23. Chargement des ressources Il faudra faire comme cela : Class.getResource(...); 23
  24. 24. Feuilles de style • Attention au @... dans les FXMLs <BorderPane> <stylesheets> <URL value="@../css/default.css" /> </stylesheets> </BorderPane> 24
  25. 25. 25 Démonstration
  26. 26. Packaging • Possible via: • javapackager • ant • Support des applications modulaires • Taille du package moins importante • Temps de chargement plus rapides 26
  27. 27. 27 Démonstration
  28. 28. Construction continue 28
  29. 29. Ce qui est nécessaire? • Un gestionnaire de source • Un outil de construction
  30. 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
  31. 31. 31 git
  32. 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. 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. 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. 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. 36. Outils de construction • gradle • Support limité de Java 9 et Jigsaw • Compilation sans Jigsaw possible • maven • Travail en cours 36
  37. 37. Livraison continue 37
  38. 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
  39. 39. Travis CI • Construire un projet sur: • Linux • OS X • .travis.yml • Supporte git 39
  40. 40. AppVeyor • Construire un projet sur Windows • x86 • amd64 • appveyor.yml • Supporte git 40
  41. 41. 41 Démonstration
  42. 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. 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
  44. 44. Conclusion 44
  45. 45. Conclusion • Jigsaw (mais pas que) • Axé performance • Nouveaux composants • Mise à jour • des IDEs • des outils 45
  46. 46. Ressources • JavaFX: New and Noteworthy, Jonathan Giles, Kevin Rushforth - JavaOne 2016 • Packaging Java Applications, Chris Bensen - JavaOne 2016 • JDK 9 Language, Tooling, and Library Features, Joe Darcy - JavaOne 2016 46
  47. 47. Sources de la démonstration https://github.com/twasyl/SoftShake1647
  48. 48. 48 FAQ

×