du développement à la livraison avec javafx et le jdk9

50
Thierry Wasylczenko @twasyl DU DÉVELOPPEMENT À LA LIVRAISON avec JavaFX et le JDK 9

Upload: thierry-wasylczenko

Post on 14-Apr-2017

152 views

Category:

Engineering


5 download

TRANSCRIPT

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

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

A PROPOS groupe Everial

Ingénieur R&DKnowings

@twasylSlideshowFXJStackFX

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

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

SOMMAIREJava 9JavaFX 9Construction continueLivraison continueConclusion

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

JAVA 9

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

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

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

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

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

Java 9 ce n'est pas que ça

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

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

TRY-WITH-RESOURCESDonc ...

ByteArrayOutputStream output = null; try(output = ...) { // ... } output.toByteArray();

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

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

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

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

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

JAVAFX 9

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

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

Cela vous parle?

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

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

@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

@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

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

CHARGEMENT DES RESSOURCESIl faudra faire comme cela :

Class.getResource(...);

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

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

Démonstration

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

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

Démonstration

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

CONSTRUCTION CONTINUE

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

CE QUI EST NÉCESSAIRE?Un gestionnaire de sourceUn outil de construction

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

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

git

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

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

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

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

Construction

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

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

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

LIVRAISON CONTINUE

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

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

TRAVIS CIConstruire un projet sur:

LinuxOS X

.travis.ymlSupporte git

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

APPVEYORConstruire un projet sur Windows

x86amd64

appveyor.ymlSupporte git

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

Démonstration

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

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

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

CONCLUSION

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

CONCLUSIONJigsaw (mais pas que)Axé performanceNouveaux composantsMise à jour

des IDEsdes outils

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

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

SOURCES DE LA DÉMONSTRATION

https://github.com/twasyl/So�Shake16

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

FAQ