du développement à la livraison avec javafx et le jdk9
TRANSCRIPT
![Page 1: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/1.jpg)
Thierry Wasylczenko
@twasyl
DU DÉVELOPPEMENTÀ LA LIVRAISON
avec JavaFX et le JDK 9
![Page 2: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/2.jpg)
A PROPOS groupe Everial
Ingénieur R&DKnowings
@twasylSlideshowFXJStackFX
![Page 3: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/3.jpg)
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?
![Page 4: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/4.jpg)
SOMMAIREJava 9JavaFX 9Construction continueLivraison continueConclusion
![Page 5: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/5.jpg)
JAVA 9
![Page 6: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/6.jpg)
MODULARISATIONJava 9 introduit Jigsaw, la mécanique de modularisation du
JDK.
Jigsaw est similaire sur bien des concepts à OSGi:
Notion de modules et non de bundlesExport de packagesUtilisation de packages
![Page 7: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/7.jpg)
QU'EST CE QU'UN MODULE?Un module est une collection de packages
utilisésexportésouverts
Un module est décrit à l'aide du fichier module-info.java.
Un module peut être ouvert.
![Page 8: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/8.jpg)
QU'EST CE QU'UN MODULE JAVA 9?module com.twasyl.slideshowfx {
requires javafx.controls;
exports com.twasyl.slideshowfx.utils to java.utils;
}
![Page 9: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/9.jpg)
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
![Page 10: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/10.jpg)
Java 9 ce n'est pas que ça
![Page 11: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/11.jpg)
TRY-WITH-RESOURCESAvant Java 9:
try(final ByteArrayOutputStream output = ...) { // ... } // J'ai besoin de output!!
![Page 12: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/12.jpg)
TRY-WITH-RESOURCESDonc ...
ByteArrayOutputStream output = null; try(output = ...) { // ... } output.toByteArray();
![Page 13: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/13.jpg)
TRY-WITH-RESOURCESAvec Java 9:
final ByteArrayOutputStream output = new ... try(output) { // ... } output.toByteArray();
![Page 14: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/14.jpg)
MAIS AUSSIMéthodes privées pour les interfacesGarbage collector G1 activé par défautNouvelle API pour @DeprecatedNouvelles méthodes utilitaires pour les collections :{List | Set | Map }.of(...)
![Page 15: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/15.jpg)
OU ENCOREUne nouvelle API pour parcourir les stacktracesSupport d'Unicode 8.0La généricité des enum
![Page 16: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/16.jpg)
OU ENCOREUne meilleure gestion des chaînes de caractèresLa Javadoc se dote d'un champ de recherche !JShell est un REPL (Real Eval Print Loop) permettantd'exécuter du code Java sans avoir à écrire toute lasyntaxe du langage.
![Page 17: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/17.jpg)
JAVAFX 9
![Page 18: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/18.jpg)
GÉNÉRALITÉSLes nouveautés de JavaFX 9 se situent surtout sous le
chapeau :
Modularisation complète pour s'accorder avec JigsawAPI publique pour les skins des contrôlesSupport du HDPI pour LinuxGTK 3 pour LinuxMise à jour de WebKit
![Page 19: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/19.jpg)
Cela vous parle?
![Page 20: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/20.jpg)
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…
![Page 21: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/21.jpg)
@FXML - CONTROLLER
Quel est le problème?
public class MonController implements Initializable { @FXML private Button button; }
![Page 22: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/22.jpg)
@FXML - MODULE-INFO.JAVAmodule com.twasyl.slideshowfx {
// ...
opens com.twasyl.slideshowfx.controllers to javafx.fxml;
}
![Page 23: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/23.jpg)
CHARGEMENT DES RESSOURCESEst-ce que cela vous choque?
Ou?
ClassLoader.getResource(...);
scene.getStyleSheets().add("/com/twasyl/slideshowfx/css/Default.css");
![Page 24: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/24.jpg)
CHARGEMENT DES RESSOURCESIl faudra faire comme cela :
Class.getResource(...);
![Page 25: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/25.jpg)
FEUILLES DE STYLEAttention au @... dans les FXMLs
<BorderPane> <stylesheets> <URL value="@../css/default.css" /> </stylesheets> </BorderPane>
![Page 26: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/26.jpg)
Démonstration
![Page 27: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/27.jpg)
PACKAGINGPossible via:
javapackagerant
Support des applications modulairesTaille du package moins importanteTemps de chargement plus rapides
![Page 28: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/28.jpg)
Démonstration
![Page 29: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/29.jpg)
CONSTRUCTION CONTINUE
![Page 30: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/30.jpg)
CE QUI EST NÉCESSAIRE?Un gestionnaire de sourceUn outil de construction
![Page 31: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/31.jpg)
GESTIONNAIRE DE SOURCESToujours utiliser un gestionnaire de version des sources
(VCS) pour:
garder une trace des changementspartager son coderésoudre efficacement les conflits de modificationconcurrente
![Page 32: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/32.jpg)
git
![Page 33: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/33.jpg)
GITTirer parti du mécanisme de branchesMaîtriser les commandes essentielles :git commit --amendgit mergegit rebasegit pullgit push
![Page 34: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/34.jpg)
GIT-FLOWUne branche master pour les releasesUne branche development pour les développementsdes versions futuresDes branches feature pour chacune des fonctionnalitésDes branches bugfix pour les bugsPour en savoir plus
![Page 35: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/35.jpg)
GITHUBTirer parti de la fonctionnalité de releasesGestionnaires de ticketWikiIntégrés avec beaucoup de services de construction et delivraison continue
![Page 36: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/36.jpg)
Construction
![Page 37: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/37.jpg)
OUTIL DE CONSTRUCTIONIntéressant et utile pour :
exécuter les tests unitaire et d'intégrationgérer les dépendances du projetconstruire de manière aisée le livrable du projetgérer les modules Jigsaw
Ne sont pas prets
![Page 38: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/38.jpg)
OUTILS DE CONSTRUCTIONgradle
Support limité de Java 9 et JigsawCompilation sans Jigsaw possible
mavenTravail en cours
![Page 39: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/39.jpg)
LIVRAISON CONTINUE
![Page 40: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/40.jpg)
ENJEUXLivraison continue Déploiement
continu
JAR JavaFX 1 WAR + n JARs
n plateformes clientes cibles 1 plateformeserveur cible
Hébergement des binaires pourtéléchargement
Serveur cible
![Page 41: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/41.jpg)
TRAVIS CIConstruire un projet sur:
LinuxOS X
.travis.ymlSupporte git
![Page 42: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/42.jpg)
APPVEYORConstruire un projet sur Windows
x86amd64
appveyor.ymlSupporte git
![Page 43: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/43.jpg)
Démonstration
![Page 44: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/44.jpg)
INCONVÉNIENTSLa version de Java peut être dépendante du service utiliséLa sauvegarde des artefacts produits n'est pas toujourspossibleTemps de construction limité
![Page 45: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/45.jpg)
BINTRAYPermet pour les binaires de
les héberger par versionles télécharger
S'intègre avec gradlel'étape de construction permet donc l'upload
![Page 46: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/46.jpg)
CONCLUSION
![Page 47: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/47.jpg)
CONCLUSIONJigsaw (mais pas que)Axé performanceNouveaux composantsMise à jour
des IDEsdes outils
![Page 48: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/48.jpg)
RESSOURCES, Jonathan Giles, Kevin
Rushforth - JavaOne 2016, Chris Bensen - JavaOne 2016
, Joe Darcy -JavaOne 2016
, Katharine
JavaFX: New and Noteworthy
Packaging Java ApplicationsJDK 9 Language, Tooling, and Library Features
How do you solve a problem like Java 9 modules andreflective access?JEPs
![Page 49: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/49.jpg)
SOURCES DE LA DÉMONSTRATION
https://github.com/twasyl/So�Shake16
![Page 50: Du développement à la livraison avec JavaFX et le JDK9](https://reader034.vdocuments.net/reader034/viewer/2022042517/58efca981a28ab80688b45b9/html5/thumbnails/50.jpg)
FAQ