SlideShare une entreprise Scribd logo
1  sur  48
Télécharger pour lire hors ligne
JavaFX et le JDK9
Construire son application
Thierry Wasylczenko
@twasyl
A propos
• Knowings groupe Everial
• Ingénieur R&D
• @twasyl
• SlideshowFX
2
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?
Sommaire
• Java 9
• JavaFX 9
• Construction continue
• Livraison continue
• Conclusion
4
Java 9
5
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
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
Qu'est ce qu'un module Java 9?
module com.twasyl.slideshowfx {
requires javafx.controls;
exports com.twasyl.slideshowfx.utils to java.utils;
}
8
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
Java 9 ce n'est pas
que ça
try-with-resources
Avant Java 9:
try(final ByteArrayOutputStream output = ...) {
// ...
}
// J'ai besoin de output!!
11
try-with-resources
Donc ...
ByteArrayOutputStream output = null;
try(output = ...) {
// ...
}
output.toByteArray();
12
try-with-resources
Avec Java 9:
final ByteArrayOutputStream output = new ...
try(output) {
// ...
}
output.toByteArray();
13
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
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
JavaFX 9
16
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
Cela vous parle?
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
@FXML - controller
Quel est le problème?
public class MonController implements Initializable {
@FXML private Button button;
}
20
@FXML - module-info.java
module com.twasyl.slideshowfx {
// ...
exports private com.twasyl.slideshowfx.controllers to javafx.fxml
}
21
Chargement des ressources
Est-ce que cela vous choque?
Ou?
ClassLoader.getResource(...);
scene.getStyleSheets().add("/com/twasyl/slideshowfx/css/Default
22
Chargement des ressources
Il faudra faire comme cela :
Class.getResource(...);
23
Feuilles de style
• Attention au @... dans les FXMLs
<BorderPane>
<stylesheets>
<URL value="@../css/default.css" />
</stylesheets>
</BorderPane>
24
25
Démonstration
Packaging
• Possible via:
• javapackager
• ant
• Support des applications modulaires
• Taille du package moins importante
• Temps de chargement plus rapides
26
27
Démonstration
Construction continue
28
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 changements
• partager son code
• résoudre efficacement les conflits de modification concurrente
30
31
git
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
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
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
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
Outils de construction
• gradle
• Support limité de Java 9 et Jigsaw
• Compilation sans Jigsaw possible
• maven
• Travail en cours
36
Livraison continue
37
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
Travis CI
• Construire un projet sur:
• Linux
• OS X
• .travis.yml
• Supporte git
39
AppVeyor
• Construire un projet sur Windows
• x86
• amd64
• appveyor.yml
• Supporte git
40
41
Démonstration
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
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
Conclusion
44
Conclusion
• Jigsaw (mais pas que)
• Axé performance
• Nouveaux composants
• Mise à jour
• des IDEs
• des outils
45
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
Sources de la démonstration
https://github.com/twasyl/SoftShake1647
48
FAQ

Contenu connexe

Tendances

Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Xavier Lacot
 
Alphorm.com Support de la formation JavaScript les fondamentaux
Alphorm.com Support de la formation JavaScript les fondamentauxAlphorm.com Support de la formation JavaScript les fondamentaux
Alphorm.com Support de la formation JavaScript les fondamentauxAlphorm
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSRenaud Dumont
 
Alphorm.com Formation TypeScript
Alphorm.com Formation TypeScriptAlphorm.com Formation TypeScript
Alphorm.com Formation TypeScriptAlphorm
 
Alphorm.com Formation NodeJS, les fondamentaux
Alphorm.com Formation NodeJS, les fondamentauxAlphorm.com Formation NodeJS, les fondamentaux
Alphorm.com Formation NodeJS, les fondamentauxAlphorm
 
Alphorm.com Support de la Formation Azure IAAS avancé 1
Alphorm.com Support de la Formation Azure IAAS avancé 1Alphorm.com Support de la Formation Azure IAAS avancé 1
Alphorm.com Support de la Formation Azure IAAS avancé 1Alphorm
 
ASP.NET from Zero to Hero
ASP.NET from Zero to HeroASP.NET from Zero to Hero
ASP.NET from Zero to HeroCellenza
 
Alphorm.com Formation VMware Workstation 11
Alphorm.com Formation VMware Workstation 11 Alphorm.com Formation VMware Workstation 11
Alphorm.com Formation VMware Workstation 11 Alphorm
 
Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Microsoft
 
Alphorm.com support de la formation Git avancé
Alphorm.com support de la formation Git avancé Alphorm.com support de la formation Git avancé
Alphorm.com support de la formation Git avancé Alphorm
 
Alphorm.com Formation Windev Mobile 20 iOS
Alphorm.com Formation Windev Mobile 20 iOSAlphorm.com Formation Windev Mobile 20 iOS
Alphorm.com Formation Windev Mobile 20 iOSAlphorm
 
Alphorm.com Formation Angular : Avancé
Alphorm.com Formation Angular : AvancéAlphorm.com Formation Angular : Avancé
Alphorm.com Formation Angular : AvancéAlphorm
 
Alphorm.com Formation Docker (2/2) - Administration Avancée
Alphorm.com Formation Docker (2/2) - Administration Avancée Alphorm.com Formation Docker (2/2) - Administration Avancée
Alphorm.com Formation Docker (2/2) - Administration Avancée Alphorm
 
Alphorm.com Formation Microsoft SQL Server 2016 Business Intelligence (SSIS)
Alphorm.com Formation Microsoft SQL Server 2016 Business Intelligence (SSIS)Alphorm.com Formation Microsoft SQL Server 2016 Business Intelligence (SSIS)
Alphorm.com Formation Microsoft SQL Server 2016 Business Intelligence (SSIS)Alphorm
 
Alphorm.com Formation Windev Mobile 19, Android
Alphorm.com Formation Windev Mobile 19, AndroidAlphorm.com Formation Windev Mobile 19, Android
Alphorm.com Formation Windev Mobile 19, AndroidAlphorm
 
Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL
Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL
Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL Microsoft
 
Alphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautésAlphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautésAlphorm
 
Alphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateurAlphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateurAlphorm
 
Alphorm.com Support de la formation Programmer en C# avec visual studio 2015
Alphorm.com Support de la formation Programmer en C# avec visual studio 2015Alphorm.com Support de la formation Programmer en C# avec visual studio 2015
Alphorm.com Support de la formation Programmer en C# avec visual studio 2015Alphorm
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Ippon
 

Tendances (20)

Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
 
Alphorm.com Support de la formation JavaScript les fondamentaux
Alphorm.com Support de la formation JavaScript les fondamentauxAlphorm.com Support de la formation JavaScript les fondamentaux
Alphorm.com Support de la formation JavaScript les fondamentaux
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJS
 
Alphorm.com Formation TypeScript
Alphorm.com Formation TypeScriptAlphorm.com Formation TypeScript
Alphorm.com Formation TypeScript
 
Alphorm.com Formation NodeJS, les fondamentaux
Alphorm.com Formation NodeJS, les fondamentauxAlphorm.com Formation NodeJS, les fondamentaux
Alphorm.com Formation NodeJS, les fondamentaux
 
Alphorm.com Support de la Formation Azure IAAS avancé 1
Alphorm.com Support de la Formation Azure IAAS avancé 1Alphorm.com Support de la Formation Azure IAAS avancé 1
Alphorm.com Support de la Formation Azure IAAS avancé 1
 
ASP.NET from Zero to Hero
ASP.NET from Zero to HeroASP.NET from Zero to Hero
ASP.NET from Zero to Hero
 
Alphorm.com Formation VMware Workstation 11
Alphorm.com Formation VMware Workstation 11 Alphorm.com Formation VMware Workstation 11
Alphorm.com Formation VMware Workstation 11
 
Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5
 
Alphorm.com support de la formation Git avancé
Alphorm.com support de la formation Git avancé Alphorm.com support de la formation Git avancé
Alphorm.com support de la formation Git avancé
 
Alphorm.com Formation Windev Mobile 20 iOS
Alphorm.com Formation Windev Mobile 20 iOSAlphorm.com Formation Windev Mobile 20 iOS
Alphorm.com Formation Windev Mobile 20 iOS
 
Alphorm.com Formation Angular : Avancé
Alphorm.com Formation Angular : AvancéAlphorm.com Formation Angular : Avancé
Alphorm.com Formation Angular : Avancé
 
Alphorm.com Formation Docker (2/2) - Administration Avancée
Alphorm.com Formation Docker (2/2) - Administration Avancée Alphorm.com Formation Docker (2/2) - Administration Avancée
Alphorm.com Formation Docker (2/2) - Administration Avancée
 
Alphorm.com Formation Microsoft SQL Server 2016 Business Intelligence (SSIS)
Alphorm.com Formation Microsoft SQL Server 2016 Business Intelligence (SSIS)Alphorm.com Formation Microsoft SQL Server 2016 Business Intelligence (SSIS)
Alphorm.com Formation Microsoft SQL Server 2016 Business Intelligence (SSIS)
 
Alphorm.com Formation Windev Mobile 19, Android
Alphorm.com Formation Windev Mobile 19, AndroidAlphorm.com Formation Windev Mobile 19, Android
Alphorm.com Formation Windev Mobile 19, Android
 
Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL
Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL
Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL
 
Alphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautésAlphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautés
 
Alphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateurAlphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateur
 
Alphorm.com Support de la formation Programmer en C# avec visual studio 2015
Alphorm.com Support de la formation Programmer en C# avec visual studio 2015Alphorm.com Support de la formation Programmer en C# avec visual studio 2015
Alphorm.com Support de la formation Programmer en C# avec visual studio 2015
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014
 

En vedette

Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017Jean-Michel Doudoux
 
Séminaire en ligne - Email Kinetic - 30 Mai 2017
Séminaire en ligne - Email Kinetic - 30 Mai 2017Séminaire en ligne - Email Kinetic - 30 Mai 2017
Séminaire en ligne - Email Kinetic - 30 Mai 2017Experian
 
WTF - What's The Fold - Bordeaux JUG 2013
WTF - What's The Fold - Bordeaux JUG 2013WTF - What's The Fold - Bordeaux JUG 2013
WTF - What's The Fold - Bordeaux JUG 2013Zenika
 
Better Product Definition with Lean UX and Design Thinking
Better Product Definition with Lean UX and Design ThinkingBetter Product Definition with Lean UX and Design Thinking
Better Product Definition with Lean UX and Design ThinkingJeff Gothelf
 
JAX RS and CDI bike the reactive bridge
JAX RS and CDI bike the reactive bridgeJAX RS and CDI bike the reactive bridge
JAX RS and CDI bike the reactive bridgeJosé Paumard
 
HTTP/2 Changes Everything
HTTP/2 Changes EverythingHTTP/2 Changes Everything
HTTP/2 Changes EverythingLori MacVittie
 
Open Data v0.3
Open Data v0.3Open Data v0.3
Open Data v0.3Luca Mauri
 
HTTP2 : ce qui va changer par Julien Landuré
HTTP2 : ce qui va changer par Julien LanduréHTTP2 : ce qui va changer par Julien Landuré
HTTP2 : ce qui va changer par Julien LanduréZenika
 
JAX-RS and CDI Bike the (Reactive) Bridge
JAX-RS and CDI Bike the (Reactive) BridgeJAX-RS and CDI Bike the (Reactive) Bridge
JAX-RS and CDI Bike the (Reactive) BridgeJosé Paumard
 
NightClazz Java 8 Decouverte
NightClazz Java 8 DecouverteNightClazz Java 8 Decouverte
NightClazz Java 8 DecouverteZenika
 
What HTTP/2.0 Will Do For You
What HTTP/2.0 Will Do For YouWhat HTTP/2.0 Will Do For You
What HTTP/2.0 Will Do For YouMark Nottingham
 
NightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery AvancéNightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery AvancéZenika
 
Introducing HTTP/2
Introducing HTTP/2Introducing HTTP/2
Introducing HTTP/2Ido Flatow
 
Going reactive in java
Going reactive in javaGoing reactive in java
Going reactive in javaJosé Paumard
 
Agile Wake Up #1 du 01/12/2015 : L'agilité à grande échelle
Agile Wake Up #1 du 01/12/2015 : L'agilité à grande échelleAgile Wake Up #1 du 01/12/2015 : L'agilité à grande échelle
Agile Wake Up #1 du 01/12/2015 : L'agilité à grande échelleZenika
 
Business intelligence v0.3
Business intelligence v0.3Business intelligence v0.3
Business intelligence v0.3Luca Mauri
 
The Case for HTTP/2
The Case for HTTP/2The Case for HTTP/2
The Case for HTTP/2Andy Davies
 
Optimisez la performance de votre service client tout en maîtrisant votre b...
Optimisez la performance  de votre service client  tout en maîtrisant votre b...Optimisez la performance  de votre service client  tout en maîtrisant votre b...
Optimisez la performance de votre service client tout en maîtrisant votre b...Experian
 
Microbox : Ma toolbox microservices - Julien Roy
Microbox : Ma toolbox microservices - Julien RoyMicrobox : Ma toolbox microservices - Julien Roy
Microbox : Ma toolbox microservices - Julien Royekino
 

En vedette (20)

Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017
 
Séminaire en ligne - Email Kinetic - 30 Mai 2017
Séminaire en ligne - Email Kinetic - 30 Mai 2017Séminaire en ligne - Email Kinetic - 30 Mai 2017
Séminaire en ligne - Email Kinetic - 30 Mai 2017
 
WTF - What's The Fold - Bordeaux JUG 2013
WTF - What's The Fold - Bordeaux JUG 2013WTF - What's The Fold - Bordeaux JUG 2013
WTF - What's The Fold - Bordeaux JUG 2013
 
Better Product Definition with Lean UX and Design Thinking
Better Product Definition with Lean UX and Design ThinkingBetter Product Definition with Lean UX and Design Thinking
Better Product Definition with Lean UX and Design Thinking
 
JAX RS and CDI bike the reactive bridge
JAX RS and CDI bike the reactive bridgeJAX RS and CDI bike the reactive bridge
JAX RS and CDI bike the reactive bridge
 
HTTP/2 Changes Everything
HTTP/2 Changes EverythingHTTP/2 Changes Everything
HTTP/2 Changes Everything
 
Open Data v0.3
Open Data v0.3Open Data v0.3
Open Data v0.3
 
How can your applications benefit from Java 9?
How can your applications benefit from Java 9?How can your applications benefit from Java 9?
How can your applications benefit from Java 9?
 
HTTP2 : ce qui va changer par Julien Landuré
HTTP2 : ce qui va changer par Julien LanduréHTTP2 : ce qui va changer par Julien Landuré
HTTP2 : ce qui va changer par Julien Landuré
 
JAX-RS and CDI Bike the (Reactive) Bridge
JAX-RS and CDI Bike the (Reactive) BridgeJAX-RS and CDI Bike the (Reactive) Bridge
JAX-RS and CDI Bike the (Reactive) Bridge
 
NightClazz Java 8 Decouverte
NightClazz Java 8 DecouverteNightClazz Java 8 Decouverte
NightClazz Java 8 Decouverte
 
What HTTP/2.0 Will Do For You
What HTTP/2.0 Will Do For YouWhat HTTP/2.0 Will Do For You
What HTTP/2.0 Will Do For You
 
NightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery AvancéNightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery Avancé
 
Introducing HTTP/2
Introducing HTTP/2Introducing HTTP/2
Introducing HTTP/2
 
Going reactive in java
Going reactive in javaGoing reactive in java
Going reactive in java
 
Agile Wake Up #1 du 01/12/2015 : L'agilité à grande échelle
Agile Wake Up #1 du 01/12/2015 : L'agilité à grande échelleAgile Wake Up #1 du 01/12/2015 : L'agilité à grande échelle
Agile Wake Up #1 du 01/12/2015 : L'agilité à grande échelle
 
Business intelligence v0.3
Business intelligence v0.3Business intelligence v0.3
Business intelligence v0.3
 
The Case for HTTP/2
The Case for HTTP/2The Case for HTTP/2
The Case for HTTP/2
 
Optimisez la performance de votre service client tout en maîtrisant votre b...
Optimisez la performance  de votre service client  tout en maîtrisant votre b...Optimisez la performance  de votre service client  tout en maîtrisant votre b...
Optimisez la performance de votre service client tout en maîtrisant votre b...
 
Microbox : Ma toolbox microservices - Julien Roy
Microbox : Ma toolbox microservices - Julien RoyMicrobox : Ma toolbox microservices - Julien Roy
Microbox : Ma toolbox microservices - Julien Roy
 

Similaire à JavaFX et le JDK9

Du Docker dans notre workflow de dev
Du Docker dans notre workflow de devDu Docker dans notre workflow de dev
Du Docker dans notre workflow de devKodo Kojo
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Antoine Rey
 
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...ALTER WAY
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & toolsSlim Soussi
 
Google Web Toolkit - GWT
Google Web Toolkit - GWTGoogle Web Toolkit - GWT
Google Web Toolkit - GWTmohamedmed1694
 
Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10Jean-Michel Doudoux
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...Jasmine Conseil
 
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...Publicis Sapient Engineering
 
Qualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidQualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidThibaud CAVIN
 
Kit de Developpement Synolia
Kit de Developpement SynoliaKit de Developpement Synolia
Kit de Developpement SynoliaRachid Zarouali
 
Apres java 8, java 9 et 10 - BreizhCamp 2018
Apres java 8, java 9 et 10 - BreizhCamp 2018Apres java 8, java 9 et 10 - BreizhCamp 2018
Apres java 8, java 9 et 10 - BreizhCamp 2018Jean-Michel Doudoux
 
Gwt oxiane-novae-lr
Gwt oxiane-novae-lrGwt oxiane-novae-lr
Gwt oxiane-novae-lroxmed
 
Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Paris Container Day 2016 : Cloudunit v2 (Treeptik)Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Paris Container Day 2016 : Cloudunit v2 (Treeptik)Publicis Sapient Engineering
 
01_Introduction_a_JEE.pdf
01_Introduction_a_JEE.pdf01_Introduction_a_JEE.pdf
01_Introduction_a_JEE.pdfJunior724645
 
Les nouveautés d'Unity 2018
Les nouveautés d'Unity 2018Les nouveautés d'Unity 2018
Les nouveautés d'Unity 2018Yannick Comte
 

Similaire à JavaFX et le JDK9 (20)

Du Docker dans notre workflow de dev
Du Docker dans notre workflow de devDu Docker dans notre workflow de dev
Du Docker dans notre workflow de dev
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?
 
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & tools
 
Google Web Toolkit - GWT
Google Web Toolkit - GWTGoogle Web Toolkit - GWT
Google Web Toolkit - GWT
 
Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
 
Qualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidQualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & Android
 
Java vs .Net
Java vs .NetJava vs .Net
Java vs .Net
 
Kit de Developpement Synolia
Kit de Developpement SynoliaKit de Developpement Synolia
Kit de Developpement Synolia
 
Java vs .Net
Java vs .NetJava vs .Net
Java vs .Net
 
Apres java 8, java 9 et 10 - BreizhCamp 2018
Apres java 8, java 9 et 10 - BreizhCamp 2018Apres java 8, java 9 et 10 - BreizhCamp 2018
Apres java 8, java 9 et 10 - BreizhCamp 2018
 
Gwt oxiane-novae-lr
Gwt oxiane-novae-lrGwt oxiane-novae-lr
Gwt oxiane-novae-lr
 
Universitélang scala tools
Universitélang scala toolsUniversitélang scala tools
Universitélang scala tools
 
Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Paris Container Day 2016 : Cloudunit v2 (Treeptik)Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Paris Container Day 2016 : Cloudunit v2 (Treeptik)
 
01_Introduction_a_JEE.pdf
01_Introduction_a_JEE.pdf01_Introduction_a_JEE.pdf
01_Introduction_a_JEE.pdf
 
Angular.pdf
Angular.pdfAngular.pdf
Angular.pdf
 
Les nouveautés d'Unity 2018
Les nouveautés d'Unity 2018Les nouveautés d'Unity 2018
Les nouveautés d'Unity 2018
 

Plus de Thierry Wasylczenko

Construire une application JavaFX 8 avec gradle
Construire une application JavaFX 8 avec gradleConstruire une application JavaFX 8 avec gradle
Construire une application JavaFX 8 avec gradleThierry Wasylczenko
 
#Polyglottisme, une autre manière de développer une application
#Polyglottisme, une autre manière de développer une application#Polyglottisme, une autre manière de développer une application
#Polyglottisme, une autre manière de développer une applicationThierry Wasylczenko
 

Plus de Thierry Wasylczenko (7)

#JavaFX.forReal() - ElsassJUG
#JavaFX.forReal() - ElsassJUG#JavaFX.forReal() - ElsassJUG
#JavaFX.forReal() - ElsassJUG
 
#JavaFX.forReal()
#JavaFX.forReal()#JavaFX.forReal()
#JavaFX.forReal()
 
Construire une application JavaFX 8 avec gradle
Construire une application JavaFX 8 avec gradleConstruire une application JavaFX 8 avec gradle
Construire une application JavaFX 8 avec gradle
 
#Polyglottisme, une autre manière de développer une application
#Polyglottisme, une autre manière de développer une application#Polyglottisme, une autre manière de développer une application
#Polyglottisme, une autre manière de développer une application
 
Java goes wild, lesson 1
Java goes wild, lesson 1Java goes wild, lesson 1
Java goes wild, lesson 1
 
JavaFX, because you're worth it
JavaFX, because you're worth itJavaFX, because you're worth it
JavaFX, because you're worth it
 
Introduction to JavaFX 2
Introduction to JavaFX 2Introduction to JavaFX 2
Introduction to JavaFX 2
 

JavaFX et le JDK9

  • 1. JavaFX et le JDK9 Construire son application Thierry Wasylczenko @twasyl
  • 2. A propos • Knowings groupe Everial • Ingénieur R&D • @twasyl • SlideshowFX 2
  • 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. Sommaire • Java 9 • JavaFX 9 • Construction continue • Livraison continue • Conclusion 4
  • 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. 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. 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. 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 Java 9 ce n'est pas que ça
  • 11. try-with-resources Avant Java 9: try(final ByteArrayOutputStream output = ...) { // ... } // J'ai besoin de output!! 11
  • 12. try-with-resources Donc ... ByteArrayOutputStream output = null; try(output = ...) { // ... } output.toByteArray(); 12
  • 13. try-with-resources Avec Java 9: final ByteArrayOutputStream output = new ... try(output) { // ... } output.toByteArray(); 13
  • 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. 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
  • 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
  • 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. @FXML - controller Quel est le problème? public class MonController implements Initializable { @FXML private Button button; } 20
  • 21. @FXML - module-info.java module com.twasyl.slideshowfx { // ... exports private com.twasyl.slideshowfx.controllers to javafx.fxml } 21
  • 22. Chargement des ressources Est-ce que cela vous choque? Ou? ClassLoader.getResource(...); scene.getStyleSheets().add("/com/twasyl/slideshowfx/css/Default 22
  • 23. Chargement des ressources Il faudra faire comme cela : Class.getResource(...); 23
  • 24. Feuilles de style • Attention au @... dans les FXMLs <BorderPane> <stylesheets> <URL value="@../css/default.css" /> </stylesheets> </BorderPane> 24
  • 26. Packaging • Possible via: • javapackager • ant • Support des applications modulaires • Taille du package moins importante • Temps de chargement plus rapides 26
  • 29. Ce qui est nécessaire? • Un gestionnaire de source • Un outil de construction
  • 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
  • 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. 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. 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. 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. Outils de construction • gradle • Support limité de Java 9 et Jigsaw • Compilation sans Jigsaw possible • maven • Travail en cours 36
  • 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. Travis CI • Construire un projet sur: • Linux • OS X • .travis.yml • Supporte git 39
  • 40. AppVeyor • Construire un projet sur Windows • x86 • amd64 • appveyor.yml • Supporte git 40
  • 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. 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
  • 45. Conclusion • Jigsaw (mais pas que) • Axé performance • Nouveaux composants • Mise à jour • des IDEs • des outils 45
  • 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. Sources de la démonstration https://github.com/twasyl/SoftShake1647