SlideShare une entreprise Scribd logo
1  sur  38
Télécharger pour lire hors ligne
RETOUR D’EXPERIENCE
STRATÉGIE ET ÉVOLUTION DE
L’OPENJDK
Ou comment se passer de l’Oracle JDK 8 ?
3 septembre 2019
Michel-Marie MAUDET
Directeur Général
mmaudet@linagora.com - +33660469852
NOUS SOMMES UN DES
LEADERS DE L’OPEN
SOURCE
1
4 continents - 200 employés
LOGICIELS FREE-FREE ASSURANT L’INDÉPENDANCE
TECHNOLOGIQUE
Avec ses logiciels et services, LINAGORA permet
aux grandes organisations publiques et privées
de développer leur indépendance technologique
Partage de
fichiers
sécurisés
Plateforme
Collaborative
ESB
Signature
électronique
Gestion et
fédération
d’identité
VOTRE PARTENAIRE INDUSTRIEL POUR SECURISER
VOTRE USAGE DE L’OPEN SOURCE
PLATEFORMISATION
Schéma
Directeur OSS
Assurance
Logicielle
SaaS & Cloud
privé
Conseil
juridique OSS
Digital
Agency
Implementation
& Training
SDOS
L’ASSURANCE LOGICIELLE AU COEUR DU
DEVELOPPEMENT DE LA SOCIETE
1. EVOLUTION RECENTE DE L’ÉCOSYSTÈME JAVA
2. QUE FAIRE SI VOUS ETES EN OPENJDK 8 ?
3. QUE FAIRE SI VOUS ETES EN ORACLE JDK 8 ?
4. CONCLUSIONS
5. ANNEXE 1 : DETAIL DES DISTRIBUTIONS OPENJDK
6. ANNEXE 2 : CHECK LIST NON EXHAUSTIF POUR VOS
MIGRATIONS
5/38
CONTEXTE ET BESOINS DE NOS CLIENTS
DE NOMBREUX PROJETS S’APPUIENT SUR JAVA
●
Essentiellement sur Oracle JDK 8 et/ou OpenJDK 8
NÉCESSITÉ D’UNE SYNTHÈSE DES ÉVOLUTIONS TECHNIQUES DEPUIS JAVA 8
●
À destination des équipes projets et pour le suivi des patch de sécurité
●
Anticipation des nouveautés de Java 11
HISTORIQUE ET PERSPECTIVES D'ÉVOLUTIONS DE OPENJDK
●
Communauté, Support, Gouvernance
●
Plusieurs distributions, laquelle choisir ?
REBONDIR ET DEFINIR STRATEGIE A LONG TERME SUITE AU CHANGEMENT
DE POLITIQUE DE SUPPORT DE ORACLE
6/38
PARTIE 1
EVOLUTION RECENTE
DE L’ÉCOSYSTÈME JAVA
7/38
HISTORIQUE DE OPENJDK
2006 2007 2010 2011 2012 2014 2017 2018 2019
Sun lance
le projet
OpenJDK
(javac et
Hotspot
décembre
2016)
Oracle rachète
Sun
-
OpenJDK
devient la
solution standard
du Java SE
-
IBM rejoint le
projet
Red Hat
rejoint le
projet
Apple
rejoint le
projet
SAP rejoint le
projet
2013
Azul Systems
et Microsoft
lancent
Zulu JDK
(adapté aux
plateformes
cloud)
Sortie de
Java 8
Sortie
de Java
9
Sortie
de
Java
10
Sortie de Java 11
-
Amazon annonce
Corretto
Sortie
de
Java
12
8/38
AUGMENTATION DU RYTHME DES LIVRAISONS
Avant Java 9 
Après Java 9 
Au moins 2 ans
Tous les six mois
(version LTS tous
les 3 ans)
●
Ajout de nouvelles librairies
●
Modifications de la JVM
●
Améliorations du langage
Intégration plus
simple
9/38
COMPARAISON ENTRE OPENJDK 11 ET ORACLE JDK 11
& Oracle JDK
CONVERGENCE HISTORIQUE VERS OPENJDK
●
Mouvement débuté avec Sun, prolongé avec Oracle
●
Réécriture de composants au fil des versions (Red Hat, Apple…)
●
Bascule atteinte avec Java 11 : Oracle JDK est désormais une extension de OpenJDK
DIFFÉRENCES DE LICENCES
●
OpenJDK 11 : GNU General Public License v2 avec Classpath Exception (GPLv2+CPE)
●
Oracle JDK 11 : Oracle Technology Network (OTN)
Oracle JDK 11 n'est pas utilisable en production sans souscription !
DIFFÉRENCES TECHNIQUES MINEURES
●
Gestion des polices et des couleurs, rendu 2D, cryptographie, commandes et options de la
JVM
10/38
CHANGEMENT DE POLITIQUE DE SUPPORT PAR ORACLE
OPENJDK 8 – FIN DES MISES À JOUR PUBLIQUES ET GRATUITES
●
Depuis janvier 2019...
●
...mais des mises à jour communautaires (donc, sans l'intervention de Oracle)
APRÈS JAVA 8 : VERSIONS NON LTS (9, 10, 12, 13…)
●
Durée de vie : 6 mois
●
Support gratuit : 6 mois
APRÈS JAVA 8 : VERSIONS LTS (11, 17, 23…)
●
Support gratuit par Oracle les 6 premiers mois, payant au-delà
CONFUSION SAVAMMENT ENTRETENUE (HTTPS://OPENJDK.JAVA.NET/)
●
Oracle OpenJDK et « OpenJDK » sur la même page de téléchargement
●
La même page promeut Oracle JDK, ce qui prête à confusion
●
=> Émergence de plusieurs distributions alternatives
11/38
L’ÉCOSYSTÈME AUTOUR DE OPENJDK
12/38
L’ÉCOSYSTÈME AUTOUR DE OPENJDK
Oracle JDK Red Hat Amazon AdoptOpenJDK
Origine / Code Source OpenJDK OpenJDK + patchs Amazon OpenJDK
Licence LICENCE Propriétaire
Support payant (O/N)
OpenJDK
(mainteneur officiel
Depuis avril 2019)
GNU GPL V2 + CPE
(Class Path Exception)
GNU GPL V2 + CPE
(Class Path Exception)
GNU GPL V2 + CPE
(Class Path Exception)
OUI
Oracle JDK
OUI
Via les souscription RHEL
NON
Tout est gratuit !!!
OUI
Via IBM + jClarity
Support
communautaire sans
engagements ou SLA
OUI pour les 6 premiers mois après
la sortie d’une nouvelle version
OUI
Via la communauté OpenJDK
Pas de SLA
OUI
Via la communauté OpenJDK
Pas de SLA
OUI
Uniquement pour les scripts de
packaging
Politique gestion des
versions / Fréquences
des patchs
Tous les 3 mois une nouvelle
version suivant le projet OpenJDK
Tous les 3 mois une nouvelle
version suivant le projet OpenJDK
Tous les 3 mois une nouvelle
version suivant le projet OpenJDK
+ patch urgent fourni par Amazon
Tous les 3 mois une nouvelle
version suivant le projet OpenJDK
Stratégie / Feuille de
route
Version 11 LTS
Une LTS tous les 3 ans
Mainteneur officiel jusqu’en 2025
Une version tous les 3 trois
Support en production via la
souscription RHEL
Corretto 11 disponible depuis avril
2019 et support jusqu’en août 2024
Suivant le rythme du projet
OpenJDK
AdoptJDK = uniquement packaing
OpenJDK
Synthèse générale
évaluation de la
distribution OpenJDK
13/38
TARIFS DU SUPPORT ORACLE JDK
POUR UNE GRANDE ORGANISATION OU MINISTÈRE, ON ARRIVE RAPIDEMENT A 3000 ET 5000
PROCESSEURS QUI EXECUTENT DES ENVIRONNEMENTS JAVA : SERVEURS APPLICATIFS, PLATEFORME
CI/CD…
COÛT ANNUEL ESTIME : ENVIRON 650 K€
14/38
PARTIE 2
SCENARIO DE MIGRATION
15/38
QUE FAIRE SI VOUS ETES EN OPENJDK 8 ? (1/2)
EXÉCUTION D’APPLICATIONS SOUS JAVA 11
●
Applications compilées sous Java 8 compatibles avec Java 11
●
Ne doivent pas utiliser d’éléments supprimés (attention aux dépréciations)
●
Pas nécessaire de modulariser les applications pour le moment
JIGSAW => IMPACT FORT
●
Middleware et librairies qui manipulent le bytecode
MISE À JOUR DES ENVIRONNEMENTS A VERIFIER ET METTRE A JOUR
●
Développement : Eclipse 4.10
●
Outils de compilation (Maven 3.5.4+, plug-ins Maven)
●
Tomcat 7.0.85+, Sonar 5.8+
MISE À JOUR DES DÉPENDANCES
●
Dépendances directes/indirectes manipulant du bytecode (ASM, Byte Buddy, cglib, Javassist)
Prendre garde aux
projets abandonnés et
non maintenus
●
SpotBugs plutôt que FindBugs
●
Log4j v2 plutôt que Log4j v1
●
JaCoco plutôt que Cobertura
16/38
QUE FAIRE SI VOUS ETES EN OPENJDK 8 ? (2/2)
PRISE EN COMPTE DES ÉLÉMENTS SUPPRIMÉS
Porter une attention toute particulière aux points suivants :
●
Modules JEE
●
Corba
●
Applets et Java Web Start
●
Java FX
●
Classes et paquets supprimés
●
URL Class Loader
●
APIs internes
●
Endorsed Standards
Outil d’analyse des
dépendances en ligne de
commande
[... truncated split package warnings ...]
[... truncated some module/JAR dependencies...]
$project -> libs/commons-codec-1.6.jar
$project -> libs/commons-io-2.4.jar
$project -> libs/dom4j-1.6.1.jar
$project -> libs/exp4j-0.1.38.jar
$project -> libs/guava-18.0.jar
$project -> libs/heaps-2.0.jar
$project -> libs/hibernate-core-4.3.6.Final.jar
$project -> java.base
$project -> java.datatransfer
$project -> java.desktop
$project -> java.sql
$project -> java.xml
[... truncated more module/JAR dependencies...]
edu.udo.sh -> com.beust.jcommander jcommander-1.35.jar
edu.udo.sh -> edu.udo.sh.data $project
edu.udo.sh -> edu.udo.sh.gui $project
edu.udo.sh -> edu.udo.sh.gui.util $project
edu.udo.sh -> edu.udo.sh.util $project
edu.udo.sh -> java.io java.base
edu.udo.sh -> java.lang java.base
edu.udo.sh -> javax.swing java.desktop
edu.udo.sh -> org.slf4j slf4j-api-1.7.5.jar
[... truncated many, many more package dependencies ...]
jdeps --jdk-internals -R
--class-path 'libs/*' $project
●
Fichiers .class et les JAR
●
Dépendances statiques
entre les classes
●
Possibilité de
filtrer/regrouper les résultats
●
Librairies internes utilisées
JDEPS
17/38
QUE FAIRE SI VOUS ETES EN ORACLE JDK 8 ?
LES DIFFÉRENCES ENTRE ORACLE JDK 11 ET OPENJDK 11 SONT MINCES
GESTION DES POLICES ET COULEURS
●
Polices avec licence commerciale (exemple Lucida)
●
Moteur T2K pour Oracle, FreeType pour OpenJDK
●
Correspondance des couleurs :
Oracle Kodac Color Matching System (KCMS)
OpenJDK Little Color Matching System (LCMS)
RENDU 2D
●
Ductus pour Oracle (propriétaire) VS. Marlin pour OpenJDK
●
Raison : volonté d’unification des technologies web entre les différents supports physiques
MÉTHODES DE CONFIGURATION DES CLÉS DE CHIFFREMENT
Une migration de Oracle JDK 8 vers OpenJDK 11
est très proche d’une migration OpenJDK 8 à OpenJDK 11.
18/38
PARTIE 3
CONCLUSIONS / RECOMMANDATIONS
19/38
A RETENIR EN SYNTHESE
DEPUIS JAVA 9
●
Livraisons plus fréquentes, notion de versions LTS, à privilégier
●
Nouvelle politique de Oracle
Support gratuit pendant 6 mois et uniquement sur OpenJDK versions LTS
Licence commerciale pour Oracle JDK en environnements de production
JAVA 11 EST LA PREMIÈRE VERSION LTS
●
Oracle JDK 11 est une extension de OpenJDK 11 (plus de 99 % de code commun)
●
Passage facilité d'une distribution à l'autre
OPENJDK 11
●
Communauté solide et pérenne (supportée par de grandes sociétés)
●
Support Oracle terminé en mars 2019
●
Plusieurs distributions de la version 11 LTS (support gratuit et durable)
●
Amazon Corretto est une bonne option
(même si des questions se posent sur le long terme)
●
Oracle
●
SAP
●
IBM
●
Red Hat
●
Microsoft
●
Azul Sytems
●
Amazon
●
…
20/38
RECOMMANDATIONS & STRATEGIE
JE SUIS EN JAVA 8
●
Avec Oracle JDK 8 → migration vers OpenJDK 11 à privilégier avec nécessité de migration du code application et
dépendances
●
Avec OpenJDK 8 → plus de support commercial depuis janvier mais possibilité de rester en OpenJDK 8 avec assurance
logiciel libre
BÉNÉFICES DU PASSAGE DE JAVA 8 À JAVA 11
●
Nouveaux ramasse-miettes plus performants
●
Améliorations pour les conteneurs Docker
●
Des évolutions du langage dans la continuité des précédentes versions
●
JLink et le système de modules permettent de créer des JDK personnalisés et minimalistes
Pratique pour les applications autonomes, pas pour les serveurs d'applications
Attention à la gouvernance ensuite !
DIFFICULTÉS DE MIGRATION
●
Jigsaw, le système de modules, implique une MAJ des environnements
(Eclipse, Tomcat, Maven, etc)
●
Sortie de nombreux modules et paquets du JDK
(besoin de recourir à des projets externes, avec des impacts plus ou moins forts)
●
Pas de migration possible pour les applications utilisant Java Web Start (aucune alternative)
●
Pas de migration possible pour CORBA, pour le moment
21/38
RECOMMANDATIONS & STRATEGIE
CHOIX D'UNE DISTRIBUTION
Corretto est une bonne
option
●
Multi-plate-formes
●
Patchs OpenJDK
●
Patchs Amazon + réversion
●
Support long (2024) mais
pas de garantie de
résultats
Red Hat OpenJDK
●
Via gestionnaire de paquets
●
Patchs OpenJDK
●
Patchs Red Hat + réversion
●
Support long (2024)
Red Hat est le fournisseur officiel de l’OpenJDK depuis avril 2019.
22/38
OFFRE D’ACCOMPAGNEMENT DE LINAGORA
AFIN DE BENEFICIER DE L’APPROCHE « FREE FREE » (LIBRE & GRATUIT) MAIS AVEC UNE
GARANTIE DE RÉSULTATS ET DES SLA SUR LE PRODUCTION EN PRODUCTION
ACCOMPAGNEMENT AU POSITIONNEMENT SUR OPENJDK ET MIGRATION
●
Conseil personnalisé en fonction de la version du JDK et du contexte de migration
●
Préconisations en terme de versions et de gestion des évolutions applicatives
●
Portage de code applicatif / Aide à la mise à jour des environnements
SUPPORT EN PRODUCTION OSSA AVEC GARANTIE DE RESULTATS ET SLA
●
Offre industrielle de support avec 18 ans d’expérience et plus de 40 grands clients
internationationaux
●
Basé sur OpenJDK (paquets communautaires)
●
Possibilité de personnalisation (Jlink, intégration DOCKER,….)
●
SLA production avec possibilité 7/24 en langue française
●
Veille sur l’écosystème permanente / Veille sécurité / Gouvernance des versions
●
Le support OpenJDK avec des environnements de développement, d’intégration, CI/CD packagé
dans une offre de support Open Source pouvant être étendue aux autres logiciels libres utilisés
par l’entreprise
www.LINAGORA.com
Facebook : LINAGORA - Twitter : @linagora
Tour Franklin 31ème étage
100 Terrasse Boieldieu
92042 PARIS LA DÉFENSE FRANCE
Tél. : +33 (0)1 46 96 63 63 - Fax : +33 (0)1 46 96 63 64
MERCI DE VOTRE ATTENTION
24/38
ANNEXE
DETAIL DES DISTRIBUTIONS
OPENJDK DISPONIBLES
25/38
ORACLE OPENJDK
●
Binaire fournit par Oracle / communauté OpenJDK (projet historique)
●
Fonctionnellement équivalent à Oracle JDK
●
Utilisable en production sans licence commerciale
LICENCE : GPLV2 + CPE
GOUVERNANCE
●
Projet OpenJDK
(communauté OpenJDK, Oracle, IBM, Red Hat, Eclipse, Université Oswego)
SUPPORT GRATUIT
●
Assuré par Oracle les six premiers mois
●
Ensuite, par la communauté et dirigé par Red Hat jusqu’en 2025
PAS DE SUPPORT PAYANT => ORACLE JDK
FRÉQUENCE DE SORTIE DES PATCHS
●
Tous les trois mois
FEUILLE DE ROUTE
●
Support dirigé jusqu’en 2025 par Red Hat
●
Java 12 disponible
26/38
RED HAT OPENJDK : SUPPORT OFFICIEL
OPENJDK DEPUIS AVRIL 2019
●
Binaire fournit par Red Hat et identique à Oracle OpenJDK
●
Utilisable en production sans licence commerciale (y compris pour Windows)
●
Accès aux binaires Linux facilité avec souscription RHEL
OBJECTIFS
●
Fournir un cadre clair à l’utilisation de OpenJDK
●
Proposer un support communautaire plus long
PLATE-FORMES : RHEL 7.6 ET WINDOWS SERVER
SUPPORT GRATUIT
●
Les six premiers mois, assuré par Oracle, ensuite par la communauté et dirigé par
Red Hat jusqu’en 2025
SUPPORT PAYANT
●
Pour la version en production – comprend une assistance personnelle
FRÉQUENCE DE SORTIE DES PATCHS
●
Fréquence projet OpenJDK (tous les trois mois)
●
Tous les six mois, patch développé par Red Hat
FEUILLE DE ROUTE
●
Support dirigé jusqu’en 2025 par Red Hat
27/38
IBM JDK
●
Ne se base pas sur le projet OpenJDK
●
Implémente le Java SE
●
Destiné aux développeurs travaillant avec les technologies IBM
●
Utilise la JVM OpenJ9
LICENCE : GPLV2 + CPE
GOUVERNANCE : IBM ET JAVA SE POUR LES SPÉCIFICATIONS
SUPPORT GRATUIT
●
Assuré par IBM en livrant des corrections (nouvelles versions de son JDK)
SUPPORT PAYANT
●
Via l’offre générale « IBM Runtimes for Business » (assistance personnelle
24h/24 et 7j/7
FRÉQUENCE DE SORTIE DES PATCHS
●
Tous les mois
FEUILLE DE ROUTE
●
Sortie de la version 11 en 2019
28/38
ADOPT OPENJDK
●
Fournit des binaires OpenJDK à jour et pré-construits des versions LTS (8 et 11) à
partir des codes source de la communauté OpenJDK managée par Red Hat
●
Projet Open Source soutenu par de nombreuses sociétés
●
Possible de choisir un binaire adapté à notre machine virtuelle (HotSpot ou OpenJ9)
LICENCE
●
Projet : Apache version 2.0
●
Binaires : GPL2 + CPE
GOUVERNANCE
●
Comité de pilotage technique : Red Hat, GoDaddy, IBM, Packet, jClarity
SUPPORT GRATUIT
●
Communauté de développeurs open source (pour les scripts de construction)
SUPPORT PAYANT
●
Assuré par IBM et jClarity – Inclut le support de OpenJDK
FRÉQUENCE DE SORTIE DES PATCHS
●
Au fur et à mesure de l’arrivée des tickets – Fréquence OpenJDK (tous les 3 mois)
pour les binaires
FEUILLE DE ROUTE
●
Binaires version 11 à jour jusqu’en 2022
29/38
ZULU
●
Adapté aux plate-formes cloud et aux produits embarqués mobiles et l’IoT
●
Dispose de sa propre machine virtuelle : Zing
LICENCE : GPLV2 + CPE
GOUVERNANCE
●
Projet OpenJDK et Azul Systems
SUPPORT GRATUIT
●
Assuré par la communauté OpenJDK
SUPPORT PAYANT
●
Support dédié au JDK – Assistance 24h/24 et 7j/7 – aide pour la migration
durant 2 ans
FRÉQUENCE DE SORTIE DES PATCHS
●
Fréquence OpenJDK (tous les 3 mois)
FEUILLE DE ROUTE
●
Support payant pour la version 11 jusqu’en 2027
●
Support gratuit jusqu’en 2025 (identique OpenJDK)
30/38
CORRETTO
●
Solution prête à l’emploi, utilisable en production sans licence commerciale
●
Multi-plate-formes dont les environnements cloud
●
Utilise la machine virtuelle HotSpot
LICENCE : GPLV2 + CPE
GOUVERNANCE
●
Projet OpenJDK et Amazon Web Services
SUPPORT GRATUIT
●
Assuré par la communauté OpenJDK et Amazon
●
Amélioration des performances, RETEX Amazon
●
Corretto 8 supporté jusqu’en août 2023 (scénario à privilégier pour ceux qui
sur OpenJDK 8)
PAS DE SUPPORT PAYANT
FRÉQUENCE DE SORTIE DES PATCHS
●
Fréquence OpenJDK (tous les 3 mois) + patchs d'urgence
FEUILLE DE ROUTE
●
Corretto 11 disponible depuis avril 2019 et support jusqu’en août 2024
31/38
SAP MACHINE
●
Développé par SAP pionnière du projet OpenJDK
●
Second contributeur derrière Oracle
●
Destiné à leurs clients et partenaires pour faire fonctionner les produits SAP
LICENCE
●
GPLv2+CPE
GOUVERNANCE
●
Projet OpenJDK et SAP
SUPPORT GRATUIT
●
Assuré par la communauté OpenJDK et SAP
SUPPORT PAYANT
●
Offre générale de SAP à destination de leurs clients
FRÉQUENCE DE SORTIE DES PATCHS
●
Fréquence OpenJDK (tous les 3 mois)
FEUILLE DE ROUTE
●
Même feuille de route que Oracle
●
Versions LTS disponibles et supportées pendant 4 ans
32/38
ANNEXE [TECHNIQUE]
QUELQUES EXEMPLES A ETUDIER/EVALUER
DANS LE CADRE DE VOS MIGRATIONS
33/38
NOUVEAUTÉ : JIGSAW, LE SYSTÈME DE MODULES
Depuis Java 9
Modules
Paquets
module exemple.fichier.module {
// liste des paquets,ressources*, services et
// modules compris ou requis par ce module
}
Nouveau niveau
d’abstraction
Fichier module
Nom du module
Mot-clé
* Plus besoin du dossier « ressources » à la racine
4 types de modules
Modules système
-
incluent modules
Java SE et JDK
Modules sans nom
-
Ressources
chargées dans le
classpath
Modules automatiques
-
intégrés via des
fichiers JAR
(module path)
Modules applicatifs
-
Les modules de
notre application
34/38
NOUVEAUTÉ : JRE PERSONNALISÉ
JAVA 11
●
Plus de JRE proposé de base, juste un JDK
JIGSAW A PERMIS L'APPARITION DE JLINK
●
Outil pour la création d’un JRE personnalisé
●
Réduction taille JDK (286 Mo pour l'ancien JRE)
●
Contient seulement les éléments dont on a besoin
class Test {
public static void main(String[]args) {
System.out.prinltn("Hello World");
}
}
javac –module-source-path src -d out -m demoModule
jlink –module-path out –add-modules 
demoModule,<chemin_vers_le_dossier_jmods>/java.base –output myjre
java -m demoModule/Test
Fonctionne seulement
avec le système de
modules (tutoriel pour
applications non-modulaires)
35/38
AU RAYON DES NOUVEAUTÉS DEPUIS JAVA 9
(NON EXHAUTIF)
API FLOW
AMÉLIORATIONS DE L'API DE GESTION DES PROCESSUS
NOUVELLE INTERFACE « PROCESSHANDLE »
NOUVEAU CLIENT HTTP
COMPILATION MULTI-VERSIONS
JAVA 9 - G1 NOUVEAU RAMASSE-MIETTES PAR DÉFAUT
JAVA 11 – GARBAGE COLLECTORS EPSILON ET ZGC (EXPÉRIMENTAUX)
AMÉLIORATION FONCTIONNEMENT A L’INTERIEUR D’UN CONTENEUR
CORRECTION DU MÉCANISME D’ATTACHE D’UN PROCESSUS HÔTE À UN PROCESSUS
JAVA EXÉCUTÉ DANS UN CONTENEUR
THREAD-LOCAL HANDSHAKES
CONSTANTES DYNAMIQUES
NOUVELLES MÉTHODES DANS LES INTERFACES LIST, SET ET MAP
36/38
ÉLÉMENTS DÉPRÉCIÉS DEPUIS JAVA 8 (NON EXHAUSTIF)
PAQUETS ET APIS DE SÉCURITÉ
●
java.security.{acl, cert, Certificate, Identity, IdentityScope, Signer, auth.Policy}
●
com.sunjarsigner
CONSTRUCTEURS DE CLASSES PRIMITIVES
●
Boolean, Byte, Short, Character, Integer, Long, Float, Double
●
Autoboxing / Méthodes valueOf
MÉTHODE FINALIZE CLASSE OBJECT
●
Problèmes de performances et des blocages
●
Préférer java.lang.ref.Cleaner et java.lang.ref.PhantomReference
MÉTHODES GSSCONTEXT BASÉES SUR LES FLUX
●
Problèmes de conception (définition du protocole filaire et supposition)
●
Implémentation correcte impossible quand on manque d’informations sur le jeton
MOTEUR NASHORN
●
Paquets javax.script, jrunscript, outil jjs, jdk.nashorn.api.{ tree, scripting }
OUTILS ET API PACK200
●
API Pack200 dans java.util.jat, pack200 et unpack200
37/38
ÉLÉMENTS DÉFINITIVEMENT SUPPRIMÉS
(NON EXHAUSTIF)
Modules CORBA
●
idlj
●
orbd
●
servertool
●
tnamesrv
Classes et paquets
●
sun.nio.ch.PollSelectorProvider
●
Références vers java.awt.peer et
java.awt.dnd.peer
●
Moteur AppleScript
●
Classes dans com.sun.security.auth
●
Fichier management-agent.jar
Common DOM APIs
●
com.sun.java.browser.plugin2.DOM
●
Sun.plugin.dom.DOMObject
Support de monitoring
SNMP
Les propriétés suivantes de
com.sun.management.snmp
ne fonctionnent plus :
●
port
●
trap
●
interface
●
acl
●
acl.file
Mises à jour automatiques sous
Windows et macOS
Java Mission Control
Version indépendante
disponible
JRE
Disponible en
téléchargement
indépendant
NOTRE FUTUR
EST OUVERT
For more information:
Michel-Marie MAUDET
Directeur Général
mmaudet@linagora.com Tel : +33 6 60 46 98 52
www.linagora.com
Facebook : LINAGORA - Twitter : @linagora

Contenu connexe

Similaire à Stratégie OpenJDK

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
 
20131210 - Rex Bouygues Telecom - Integration et inspection continue avec RTC...
20131210 - Rex Bouygues Telecom - Integration et inspection continue avec RTC...20131210 - Rex Bouygues Telecom - Integration et inspection continue avec RTC...
20131210 - Rex Bouygues Telecom - Integration et inspection continue avec RTC...LeClubQualiteLogicielle
 
Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances Firas Kouẞàa
 
Presentation du SGBD Oracle DATABASE.pptx
Presentation du SGBD Oracle DATABASE.pptxPresentation du SGBD Oracle DATABASE.pptx
Presentation du SGBD Oracle DATABASE.pptxPriscilleGANKIA
 
OpenStack & DevOps, l'Open Source au service du Cloud
OpenStack & DevOps, l'Open Source au service du CloudOpenStack & DevOps, l'Open Source au service du Cloud
OpenStack & DevOps, l'Open Source au service du CloudMichel-Marie Maudet
 
Graphotec granit opensource
Graphotec granit opensourceGraphotec granit opensource
Graphotec granit opensourcepjoulaud
 
Présentation de la roadmap OBM, 28 août 2012
Présentation de la roadmap OBM, 28 août 2012Présentation de la roadmap OBM, 28 août 2012
Présentation de la roadmap OBM, 28 août 2012LINAGORA
 
Du développement à la livraison avec JavaFX et le JDK9
Du développement à la livraison avec JavaFX et le JDK9Du développement à la livraison avec JavaFX et le JDK9
Du développement à la livraison avec JavaFX et le JDK9Thierry Wasylczenko
 
Openshift 3 & Kubernetes
Openshift 3 & KubernetesOpenshift 3 & Kubernetes
Openshift 3 & KubernetesPerfect Memory
 
OpenStack - open source au service du Cloud
OpenStack - open source au service du CloudOpenStack - open source au service du Cloud
OpenStack - open source au service du CloudLINAGORA
 
Séminaire Linagora : poste de travail Libre, décembre 2009
Séminaire Linagora : poste de travail Libre, décembre 2009Séminaire Linagora : poste de travail Libre, décembre 2009
Séminaire Linagora : poste de travail Libre, décembre 2009LINAGORA
 
De l’open source à l’open cloud
De l’open source à l’open cloudDe l’open source à l’open cloud
De l’open source à l’open cloudRobert Viseur
 
Performances Java et OpenDJ - LyonJUG Janv. 2012
Performances Java et OpenDJ - LyonJUG Janv. 2012Performances Java et OpenDJ - LyonJUG Janv. 2012
Performances Java et OpenDJ - LyonJUG Janv. 2012Ludovic Poitou
 
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)Publicis Sapient Engineering
 

Similaire à Stratégie OpenJDK (20)

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
 
20131210 - Rex Bouygues Telecom - Integration et inspection continue avec RTC...
20131210 - Rex Bouygues Telecom - Integration et inspection continue avec RTC...20131210 - Rex Bouygues Telecom - Integration et inspection continue avec RTC...
20131210 - Rex Bouygues Telecom - Integration et inspection continue avec RTC...
 
Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances
 
Rapport tp1 j2ee
Rapport tp1 j2eeRapport tp1 j2ee
Rapport tp1 j2ee
 
Chap 02 poo en java
Chap 02 poo en javaChap 02 poo en java
Chap 02 poo en java
 
Presentation du SGBD Oracle DATABASE.pptx
Presentation du SGBD Oracle DATABASE.pptxPresentation du SGBD Oracle DATABASE.pptx
Presentation du SGBD Oracle DATABASE.pptx
 
OpenStack & DevOps, l'Open Source au service du Cloud
OpenStack & DevOps, l'Open Source au service du CloudOpenStack & DevOps, l'Open Source au service du Cloud
OpenStack & DevOps, l'Open Source au service du Cloud
 
Graphotec granit opensource
Graphotec granit opensourceGraphotec granit opensource
Graphotec granit opensource
 
Lagom, reactive framework
Lagom, reactive frameworkLagom, reactive framework
Lagom, reactive framework
 
Présentation de la roadmap OBM, 28 août 2012
Présentation de la roadmap OBM, 28 août 2012Présentation de la roadmap OBM, 28 août 2012
Présentation de la roadmap OBM, 28 août 2012
 
Javaoop
JavaoopJavaoop
Javaoop
 
Du développement à la livraison avec JavaFX et le JDK9
Du développement à la livraison avec JavaFX et le JDK9Du développement à la livraison avec JavaFX et le JDK9
Du développement à la livraison avec JavaFX et le JDK9
 
Openshift 3 & Kubernetes
Openshift 3 & KubernetesOpenshift 3 & Kubernetes
Openshift 3 & Kubernetes
 
OpenStack - open source au service du Cloud
OpenStack - open source au service du CloudOpenStack - open source au service du Cloud
OpenStack - open source au service du Cloud
 
Séminaire Linagora : poste de travail Libre, décembre 2009
Séminaire Linagora : poste de travail Libre, décembre 2009Séminaire Linagora : poste de travail Libre, décembre 2009
Séminaire Linagora : poste de travail Libre, décembre 2009
 
android.pdf
android.pdfandroid.pdf
android.pdf
 
J2EE vs .NET
J2EE vs .NETJ2EE vs .NET
J2EE vs .NET
 
De l’open source à l’open cloud
De l’open source à l’open cloudDe l’open source à l’open cloud
De l’open source à l’open cloud
 
Performances Java et OpenDJ - LyonJUG Janv. 2012
Performances Java et OpenDJ - LyonJUG Janv. 2012Performances Java et OpenDJ - LyonJUG Janv. 2012
Performances Java et OpenDJ - LyonJUG Janv. 2012
 
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
 

Plus de Michel-Marie Maudet

Open Source PRO - The future is OPEN !
Open Source PRO - The future is OPEN !Open Source PRO - The future is OPEN !
Open Source PRO - The future is OPEN !Michel-Marie Maudet
 
Agilité / DevOps / Continuous Integration / Continuous Delivery - Présentatio...
Agilité / DevOps / Continuous Integration / Continuous Delivery - Présentatio...Agilité / DevOps / Continuous Integration / Continuous Delivery - Présentatio...
Agilité / DevOps / Continuous Integration / Continuous Delivery - Présentatio...Michel-Marie Maudet
 
Présentation de l'offre IAM de LINAGORA LinID
Présentation de l'offre IAM de LINAGORA LinIDPrésentation de l'offre IAM de LINAGORA LinID
Présentation de l'offre IAM de LINAGORA LinIDMichel-Marie Maudet
 
Présentation Schéma Directeur Open Source au S2LQ 2015
Présentation Schéma Directeur Open Source au S2LQ 2015Présentation Schéma Directeur Open Source au S2LQ 2015
Présentation Schéma Directeur Open Source au S2LQ 2015Michel-Marie Maudet
 
Présentation Outils Collaboratifs Open Source au S2LQ 2015
Présentation Outils Collaboratifs Open Source au S2LQ 2015Présentation Outils Collaboratifs Open Source au S2LQ 2015
Présentation Outils Collaboratifs Open Source au S2LQ 2015Michel-Marie Maudet
 
Présentation LINAGORA - LinShare au @S2LQ
Présentation LINAGORA - LinShare au @S2LQPrésentation LINAGORA - LinShare au @S2LQ
Présentation LINAGORA - LinShare au @S2LQMichel-Marie Maudet
 
Présentation LINAGORA - OBM au @S2LQ
Présentation LINAGORA - OBM au @S2LQPrésentation LINAGORA - OBM au @S2LQ
Présentation LINAGORA - OBM au @S2LQMichel-Marie Maudet
 
Présentation OBM 3.0 - Sortie juin 2014
Présentation OBM 3.0 - Sortie juin 2014Présentation OBM 3.0 - Sortie juin 2014
Présentation OBM 3.0 - Sortie juin 2014Michel-Marie Maudet
 
Place et impact de l'Open Source sur les 10 tendances IT de 2014
Place et impact de l'Open Source sur les 10 tendances IT de 2014Place et impact de l'Open Source sur les 10 tendances IT de 2014
Place et impact de l'Open Source sur les 10 tendances IT de 2014Michel-Marie Maudet
 
Cohabitation Logiciels Libres et propriétaires
Cohabitation Logiciels Libres et propriétairesCohabitation Logiciels Libres et propriétaires
Cohabitation Logiciels Libres et propriétairesMichel-Marie Maudet
 
Présentation Gouvernance Open Source
Présentation Gouvernance Open SourcePrésentation Gouvernance Open Source
Présentation Gouvernance Open SourceMichel-Marie Maudet
 

Plus de Michel-Marie Maudet (16)

Introduction au web3.pdf
Introduction au web3.pdfIntroduction au web3.pdf
Introduction au web3.pdf
 
Open Source PRO - The future is OPEN !
Open Source PRO - The future is OPEN !Open Source PRO - The future is OPEN !
Open Source PRO - The future is OPEN !
 
Agilité / DevOps / Continuous Integration / Continuous Delivery - Présentatio...
Agilité / DevOps / Continuous Integration / Continuous Delivery - Présentatio...Agilité / DevOps / Continuous Integration / Continuous Delivery - Présentatio...
Agilité / DevOps / Continuous Integration / Continuous Delivery - Présentatio...
 
Présentation lin today-juin
Présentation lin today-juinPrésentation lin today-juin
Présentation lin today-juin
 
Présentation de l'offre IAM de LINAGORA LinID
Présentation de l'offre IAM de LINAGORA LinIDPrésentation de l'offre IAM de LINAGORA LinID
Présentation de l'offre IAM de LINAGORA LinID
 
Présentation Schéma Directeur Open Source au S2LQ 2015
Présentation Schéma Directeur Open Source au S2LQ 2015Présentation Schéma Directeur Open Source au S2LQ 2015
Présentation Schéma Directeur Open Source au S2LQ 2015
 
Présentation Outils Collaboratifs Open Source au S2LQ 2015
Présentation Outils Collaboratifs Open Source au S2LQ 2015Présentation Outils Collaboratifs Open Source au S2LQ 2015
Présentation Outils Collaboratifs Open Source au S2LQ 2015
 
Présentation LINAGORA - LinShare au @S2LQ
Présentation LINAGORA - LinShare au @S2LQPrésentation LINAGORA - LinShare au @S2LQ
Présentation LINAGORA - LinShare au @S2LQ
 
Présentation LINAGORA - OBM au @S2LQ
Présentation LINAGORA - OBM au @S2LQPrésentation LINAGORA - OBM au @S2LQ
Présentation LINAGORA - OBM au @S2LQ
 
Présentation OBM 3.0 - Sortie juin 2014
Présentation OBM 3.0 - Sortie juin 2014Présentation OBM 3.0 - Sortie juin 2014
Présentation OBM 3.0 - Sortie juin 2014
 
Place et impact de l'Open Source sur les 10 tendances IT de 2014
Place et impact de l'Open Source sur les 10 tendances IT de 2014Place et impact de l'Open Source sur les 10 tendances IT de 2014
Place et impact de l'Open Source sur les 10 tendances IT de 2014
 
10 ans de l'Adullact
10 ans de l'Adullact10 ans de l'Adullact
10 ans de l'Adullact
 
Cohabitation Logiciels Libres et propriétaires
Cohabitation Logiciels Libres et propriétairesCohabitation Logiciels Libres et propriétaires
Cohabitation Logiciels Libres et propriétaires
 
Présentation Gouvernance Open Source
Présentation Gouvernance Open SourcePrésentation Gouvernance Open Source
Présentation Gouvernance Open Source
 
Pre metic univ_montp2_20111029
Pre metic univ_montp2_20111029Pre metic univ_montp2_20111029
Pre metic univ_montp2_20111029
 
Drupagora linagora-20111110
Drupagora linagora-20111110Drupagora linagora-20111110
Drupagora linagora-20111110
 

Stratégie OpenJDK

  • 1. RETOUR D’EXPERIENCE STRATÉGIE ET ÉVOLUTION DE L’OPENJDK Ou comment se passer de l’Oracle JDK 8 ? 3 septembre 2019 Michel-Marie MAUDET Directeur Général mmaudet@linagora.com - +33660469852
  • 2. NOUS SOMMES UN DES LEADERS DE L’OPEN SOURCE 1 4 continents - 200 employés LOGICIELS FREE-FREE ASSURANT L’INDÉPENDANCE TECHNOLOGIQUE Avec ses logiciels et services, LINAGORA permet aux grandes organisations publiques et privées de développer leur indépendance technologique Partage de fichiers sécurisés Plateforme Collaborative ESB Signature électronique Gestion et fédération d’identité VOTRE PARTENAIRE INDUSTRIEL POUR SECURISER VOTRE USAGE DE L’OPEN SOURCE PLATEFORMISATION Schéma Directeur OSS Assurance Logicielle SaaS & Cloud privé Conseil juridique OSS Digital Agency Implementation & Training SDOS
  • 3. L’ASSURANCE LOGICIELLE AU COEUR DU DEVELOPPEMENT DE LA SOCIETE
  • 4. 1. EVOLUTION RECENTE DE L’ÉCOSYSTÈME JAVA 2. QUE FAIRE SI VOUS ETES EN OPENJDK 8 ? 3. QUE FAIRE SI VOUS ETES EN ORACLE JDK 8 ? 4. CONCLUSIONS 5. ANNEXE 1 : DETAIL DES DISTRIBUTIONS OPENJDK 6. ANNEXE 2 : CHECK LIST NON EXHAUSTIF POUR VOS MIGRATIONS
  • 5. 5/38 CONTEXTE ET BESOINS DE NOS CLIENTS DE NOMBREUX PROJETS S’APPUIENT SUR JAVA ● Essentiellement sur Oracle JDK 8 et/ou OpenJDK 8 NÉCESSITÉ D’UNE SYNTHÈSE DES ÉVOLUTIONS TECHNIQUES DEPUIS JAVA 8 ● À destination des équipes projets et pour le suivi des patch de sécurité ● Anticipation des nouveautés de Java 11 HISTORIQUE ET PERSPECTIVES D'ÉVOLUTIONS DE OPENJDK ● Communauté, Support, Gouvernance ● Plusieurs distributions, laquelle choisir ? REBONDIR ET DEFINIR STRATEGIE A LONG TERME SUITE AU CHANGEMENT DE POLITIQUE DE SUPPORT DE ORACLE
  • 6. 6/38 PARTIE 1 EVOLUTION RECENTE DE L’ÉCOSYSTÈME JAVA
  • 7. 7/38 HISTORIQUE DE OPENJDK 2006 2007 2010 2011 2012 2014 2017 2018 2019 Sun lance le projet OpenJDK (javac et Hotspot décembre 2016) Oracle rachète Sun - OpenJDK devient la solution standard du Java SE - IBM rejoint le projet Red Hat rejoint le projet Apple rejoint le projet SAP rejoint le projet 2013 Azul Systems et Microsoft lancent Zulu JDK (adapté aux plateformes cloud) Sortie de Java 8 Sortie de Java 9 Sortie de Java 10 Sortie de Java 11 - Amazon annonce Corretto Sortie de Java 12
  • 8. 8/38 AUGMENTATION DU RYTHME DES LIVRAISONS Avant Java 9  Après Java 9  Au moins 2 ans Tous les six mois (version LTS tous les 3 ans) ● Ajout de nouvelles librairies ● Modifications de la JVM ● Améliorations du langage Intégration plus simple
  • 9. 9/38 COMPARAISON ENTRE OPENJDK 11 ET ORACLE JDK 11 & Oracle JDK CONVERGENCE HISTORIQUE VERS OPENJDK ● Mouvement débuté avec Sun, prolongé avec Oracle ● Réécriture de composants au fil des versions (Red Hat, Apple…) ● Bascule atteinte avec Java 11 : Oracle JDK est désormais une extension de OpenJDK DIFFÉRENCES DE LICENCES ● OpenJDK 11 : GNU General Public License v2 avec Classpath Exception (GPLv2+CPE) ● Oracle JDK 11 : Oracle Technology Network (OTN) Oracle JDK 11 n'est pas utilisable en production sans souscription ! DIFFÉRENCES TECHNIQUES MINEURES ● Gestion des polices et des couleurs, rendu 2D, cryptographie, commandes et options de la JVM
  • 10. 10/38 CHANGEMENT DE POLITIQUE DE SUPPORT PAR ORACLE OPENJDK 8 – FIN DES MISES À JOUR PUBLIQUES ET GRATUITES ● Depuis janvier 2019... ● ...mais des mises à jour communautaires (donc, sans l'intervention de Oracle) APRÈS JAVA 8 : VERSIONS NON LTS (9, 10, 12, 13…) ● Durée de vie : 6 mois ● Support gratuit : 6 mois APRÈS JAVA 8 : VERSIONS LTS (11, 17, 23…) ● Support gratuit par Oracle les 6 premiers mois, payant au-delà CONFUSION SAVAMMENT ENTRETENUE (HTTPS://OPENJDK.JAVA.NET/) ● Oracle OpenJDK et « OpenJDK » sur la même page de téléchargement ● La même page promeut Oracle JDK, ce qui prête à confusion ● => Émergence de plusieurs distributions alternatives
  • 12. 12/38 L’ÉCOSYSTÈME AUTOUR DE OPENJDK Oracle JDK Red Hat Amazon AdoptOpenJDK Origine / Code Source OpenJDK OpenJDK + patchs Amazon OpenJDK Licence LICENCE Propriétaire Support payant (O/N) OpenJDK (mainteneur officiel Depuis avril 2019) GNU GPL V2 + CPE (Class Path Exception) GNU GPL V2 + CPE (Class Path Exception) GNU GPL V2 + CPE (Class Path Exception) OUI Oracle JDK OUI Via les souscription RHEL NON Tout est gratuit !!! OUI Via IBM + jClarity Support communautaire sans engagements ou SLA OUI pour les 6 premiers mois après la sortie d’une nouvelle version OUI Via la communauté OpenJDK Pas de SLA OUI Via la communauté OpenJDK Pas de SLA OUI Uniquement pour les scripts de packaging Politique gestion des versions / Fréquences des patchs Tous les 3 mois une nouvelle version suivant le projet OpenJDK Tous les 3 mois une nouvelle version suivant le projet OpenJDK Tous les 3 mois une nouvelle version suivant le projet OpenJDK + patch urgent fourni par Amazon Tous les 3 mois une nouvelle version suivant le projet OpenJDK Stratégie / Feuille de route Version 11 LTS Une LTS tous les 3 ans Mainteneur officiel jusqu’en 2025 Une version tous les 3 trois Support en production via la souscription RHEL Corretto 11 disponible depuis avril 2019 et support jusqu’en août 2024 Suivant le rythme du projet OpenJDK AdoptJDK = uniquement packaing OpenJDK Synthèse générale évaluation de la distribution OpenJDK
  • 13. 13/38 TARIFS DU SUPPORT ORACLE JDK POUR UNE GRANDE ORGANISATION OU MINISTÈRE, ON ARRIVE RAPIDEMENT A 3000 ET 5000 PROCESSEURS QUI EXECUTENT DES ENVIRONNEMENTS JAVA : SERVEURS APPLICATIFS, PLATEFORME CI/CD… COÛT ANNUEL ESTIME : ENVIRON 650 K€
  • 15. 15/38 QUE FAIRE SI VOUS ETES EN OPENJDK 8 ? (1/2) EXÉCUTION D’APPLICATIONS SOUS JAVA 11 ● Applications compilées sous Java 8 compatibles avec Java 11 ● Ne doivent pas utiliser d’éléments supprimés (attention aux dépréciations) ● Pas nécessaire de modulariser les applications pour le moment JIGSAW => IMPACT FORT ● Middleware et librairies qui manipulent le bytecode MISE À JOUR DES ENVIRONNEMENTS A VERIFIER ET METTRE A JOUR ● Développement : Eclipse 4.10 ● Outils de compilation (Maven 3.5.4+, plug-ins Maven) ● Tomcat 7.0.85+, Sonar 5.8+ MISE À JOUR DES DÉPENDANCES ● Dépendances directes/indirectes manipulant du bytecode (ASM, Byte Buddy, cglib, Javassist) Prendre garde aux projets abandonnés et non maintenus ● SpotBugs plutôt que FindBugs ● Log4j v2 plutôt que Log4j v1 ● JaCoco plutôt que Cobertura
  • 16. 16/38 QUE FAIRE SI VOUS ETES EN OPENJDK 8 ? (2/2) PRISE EN COMPTE DES ÉLÉMENTS SUPPRIMÉS Porter une attention toute particulière aux points suivants : ● Modules JEE ● Corba ● Applets et Java Web Start ● Java FX ● Classes et paquets supprimés ● URL Class Loader ● APIs internes ● Endorsed Standards Outil d’analyse des dépendances en ligne de commande [... truncated split package warnings ...] [... truncated some module/JAR dependencies...] $project -> libs/commons-codec-1.6.jar $project -> libs/commons-io-2.4.jar $project -> libs/dom4j-1.6.1.jar $project -> libs/exp4j-0.1.38.jar $project -> libs/guava-18.0.jar $project -> libs/heaps-2.0.jar $project -> libs/hibernate-core-4.3.6.Final.jar $project -> java.base $project -> java.datatransfer $project -> java.desktop $project -> java.sql $project -> java.xml [... truncated more module/JAR dependencies...] edu.udo.sh -> com.beust.jcommander jcommander-1.35.jar edu.udo.sh -> edu.udo.sh.data $project edu.udo.sh -> edu.udo.sh.gui $project edu.udo.sh -> edu.udo.sh.gui.util $project edu.udo.sh -> edu.udo.sh.util $project edu.udo.sh -> java.io java.base edu.udo.sh -> java.lang java.base edu.udo.sh -> javax.swing java.desktop edu.udo.sh -> org.slf4j slf4j-api-1.7.5.jar [... truncated many, many more package dependencies ...] jdeps --jdk-internals -R --class-path 'libs/*' $project ● Fichiers .class et les JAR ● Dépendances statiques entre les classes ● Possibilité de filtrer/regrouper les résultats ● Librairies internes utilisées JDEPS
  • 17. 17/38 QUE FAIRE SI VOUS ETES EN ORACLE JDK 8 ? LES DIFFÉRENCES ENTRE ORACLE JDK 11 ET OPENJDK 11 SONT MINCES GESTION DES POLICES ET COULEURS ● Polices avec licence commerciale (exemple Lucida) ● Moteur T2K pour Oracle, FreeType pour OpenJDK ● Correspondance des couleurs : Oracle Kodac Color Matching System (KCMS) OpenJDK Little Color Matching System (LCMS) RENDU 2D ● Ductus pour Oracle (propriétaire) VS. Marlin pour OpenJDK ● Raison : volonté d’unification des technologies web entre les différents supports physiques MÉTHODES DE CONFIGURATION DES CLÉS DE CHIFFREMENT Une migration de Oracle JDK 8 vers OpenJDK 11 est très proche d’une migration OpenJDK 8 à OpenJDK 11.
  • 18. 18/38 PARTIE 3 CONCLUSIONS / RECOMMANDATIONS
  • 19. 19/38 A RETENIR EN SYNTHESE DEPUIS JAVA 9 ● Livraisons plus fréquentes, notion de versions LTS, à privilégier ● Nouvelle politique de Oracle Support gratuit pendant 6 mois et uniquement sur OpenJDK versions LTS Licence commerciale pour Oracle JDK en environnements de production JAVA 11 EST LA PREMIÈRE VERSION LTS ● Oracle JDK 11 est une extension de OpenJDK 11 (plus de 99 % de code commun) ● Passage facilité d'une distribution à l'autre OPENJDK 11 ● Communauté solide et pérenne (supportée par de grandes sociétés) ● Support Oracle terminé en mars 2019 ● Plusieurs distributions de la version 11 LTS (support gratuit et durable) ● Amazon Corretto est une bonne option (même si des questions se posent sur le long terme) ● Oracle ● SAP ● IBM ● Red Hat ● Microsoft ● Azul Sytems ● Amazon ● …
  • 20. 20/38 RECOMMANDATIONS & STRATEGIE JE SUIS EN JAVA 8 ● Avec Oracle JDK 8 → migration vers OpenJDK 11 à privilégier avec nécessité de migration du code application et dépendances ● Avec OpenJDK 8 → plus de support commercial depuis janvier mais possibilité de rester en OpenJDK 8 avec assurance logiciel libre BÉNÉFICES DU PASSAGE DE JAVA 8 À JAVA 11 ● Nouveaux ramasse-miettes plus performants ● Améliorations pour les conteneurs Docker ● Des évolutions du langage dans la continuité des précédentes versions ● JLink et le système de modules permettent de créer des JDK personnalisés et minimalistes Pratique pour les applications autonomes, pas pour les serveurs d'applications Attention à la gouvernance ensuite ! DIFFICULTÉS DE MIGRATION ● Jigsaw, le système de modules, implique une MAJ des environnements (Eclipse, Tomcat, Maven, etc) ● Sortie de nombreux modules et paquets du JDK (besoin de recourir à des projets externes, avec des impacts plus ou moins forts) ● Pas de migration possible pour les applications utilisant Java Web Start (aucune alternative) ● Pas de migration possible pour CORBA, pour le moment
  • 21. 21/38 RECOMMANDATIONS & STRATEGIE CHOIX D'UNE DISTRIBUTION Corretto est une bonne option ● Multi-plate-formes ● Patchs OpenJDK ● Patchs Amazon + réversion ● Support long (2024) mais pas de garantie de résultats Red Hat OpenJDK ● Via gestionnaire de paquets ● Patchs OpenJDK ● Patchs Red Hat + réversion ● Support long (2024) Red Hat est le fournisseur officiel de l’OpenJDK depuis avril 2019.
  • 22. 22/38 OFFRE D’ACCOMPAGNEMENT DE LINAGORA AFIN DE BENEFICIER DE L’APPROCHE « FREE FREE » (LIBRE & GRATUIT) MAIS AVEC UNE GARANTIE DE RÉSULTATS ET DES SLA SUR LE PRODUCTION EN PRODUCTION ACCOMPAGNEMENT AU POSITIONNEMENT SUR OPENJDK ET MIGRATION ● Conseil personnalisé en fonction de la version du JDK et du contexte de migration ● Préconisations en terme de versions et de gestion des évolutions applicatives ● Portage de code applicatif / Aide à la mise à jour des environnements SUPPORT EN PRODUCTION OSSA AVEC GARANTIE DE RESULTATS ET SLA ● Offre industrielle de support avec 18 ans d’expérience et plus de 40 grands clients internationationaux ● Basé sur OpenJDK (paquets communautaires) ● Possibilité de personnalisation (Jlink, intégration DOCKER,….) ● SLA production avec possibilité 7/24 en langue française ● Veille sur l’écosystème permanente / Veille sécurité / Gouvernance des versions ● Le support OpenJDK avec des environnements de développement, d’intégration, CI/CD packagé dans une offre de support Open Source pouvant être étendue aux autres logiciels libres utilisés par l’entreprise
  • 23. www.LINAGORA.com Facebook : LINAGORA - Twitter : @linagora Tour Franklin 31ème étage 100 Terrasse Boieldieu 92042 PARIS LA DÉFENSE FRANCE Tél. : +33 (0)1 46 96 63 63 - Fax : +33 (0)1 46 96 63 64 MERCI DE VOTRE ATTENTION
  • 25. 25/38 ORACLE OPENJDK ● Binaire fournit par Oracle / communauté OpenJDK (projet historique) ● Fonctionnellement équivalent à Oracle JDK ● Utilisable en production sans licence commerciale LICENCE : GPLV2 + CPE GOUVERNANCE ● Projet OpenJDK (communauté OpenJDK, Oracle, IBM, Red Hat, Eclipse, Université Oswego) SUPPORT GRATUIT ● Assuré par Oracle les six premiers mois ● Ensuite, par la communauté et dirigé par Red Hat jusqu’en 2025 PAS DE SUPPORT PAYANT => ORACLE JDK FRÉQUENCE DE SORTIE DES PATCHS ● Tous les trois mois FEUILLE DE ROUTE ● Support dirigé jusqu’en 2025 par Red Hat ● Java 12 disponible
  • 26. 26/38 RED HAT OPENJDK : SUPPORT OFFICIEL OPENJDK DEPUIS AVRIL 2019 ● Binaire fournit par Red Hat et identique à Oracle OpenJDK ● Utilisable en production sans licence commerciale (y compris pour Windows) ● Accès aux binaires Linux facilité avec souscription RHEL OBJECTIFS ● Fournir un cadre clair à l’utilisation de OpenJDK ● Proposer un support communautaire plus long PLATE-FORMES : RHEL 7.6 ET WINDOWS SERVER SUPPORT GRATUIT ● Les six premiers mois, assuré par Oracle, ensuite par la communauté et dirigé par Red Hat jusqu’en 2025 SUPPORT PAYANT ● Pour la version en production – comprend une assistance personnelle FRÉQUENCE DE SORTIE DES PATCHS ● Fréquence projet OpenJDK (tous les trois mois) ● Tous les six mois, patch développé par Red Hat FEUILLE DE ROUTE ● Support dirigé jusqu’en 2025 par Red Hat
  • 27. 27/38 IBM JDK ● Ne se base pas sur le projet OpenJDK ● Implémente le Java SE ● Destiné aux développeurs travaillant avec les technologies IBM ● Utilise la JVM OpenJ9 LICENCE : GPLV2 + CPE GOUVERNANCE : IBM ET JAVA SE POUR LES SPÉCIFICATIONS SUPPORT GRATUIT ● Assuré par IBM en livrant des corrections (nouvelles versions de son JDK) SUPPORT PAYANT ● Via l’offre générale « IBM Runtimes for Business » (assistance personnelle 24h/24 et 7j/7 FRÉQUENCE DE SORTIE DES PATCHS ● Tous les mois FEUILLE DE ROUTE ● Sortie de la version 11 en 2019
  • 28. 28/38 ADOPT OPENJDK ● Fournit des binaires OpenJDK à jour et pré-construits des versions LTS (8 et 11) à partir des codes source de la communauté OpenJDK managée par Red Hat ● Projet Open Source soutenu par de nombreuses sociétés ● Possible de choisir un binaire adapté à notre machine virtuelle (HotSpot ou OpenJ9) LICENCE ● Projet : Apache version 2.0 ● Binaires : GPL2 + CPE GOUVERNANCE ● Comité de pilotage technique : Red Hat, GoDaddy, IBM, Packet, jClarity SUPPORT GRATUIT ● Communauté de développeurs open source (pour les scripts de construction) SUPPORT PAYANT ● Assuré par IBM et jClarity – Inclut le support de OpenJDK FRÉQUENCE DE SORTIE DES PATCHS ● Au fur et à mesure de l’arrivée des tickets – Fréquence OpenJDK (tous les 3 mois) pour les binaires FEUILLE DE ROUTE ● Binaires version 11 à jour jusqu’en 2022
  • 29. 29/38 ZULU ● Adapté aux plate-formes cloud et aux produits embarqués mobiles et l’IoT ● Dispose de sa propre machine virtuelle : Zing LICENCE : GPLV2 + CPE GOUVERNANCE ● Projet OpenJDK et Azul Systems SUPPORT GRATUIT ● Assuré par la communauté OpenJDK SUPPORT PAYANT ● Support dédié au JDK – Assistance 24h/24 et 7j/7 – aide pour la migration durant 2 ans FRÉQUENCE DE SORTIE DES PATCHS ● Fréquence OpenJDK (tous les 3 mois) FEUILLE DE ROUTE ● Support payant pour la version 11 jusqu’en 2027 ● Support gratuit jusqu’en 2025 (identique OpenJDK)
  • 30. 30/38 CORRETTO ● Solution prête à l’emploi, utilisable en production sans licence commerciale ● Multi-plate-formes dont les environnements cloud ● Utilise la machine virtuelle HotSpot LICENCE : GPLV2 + CPE GOUVERNANCE ● Projet OpenJDK et Amazon Web Services SUPPORT GRATUIT ● Assuré par la communauté OpenJDK et Amazon ● Amélioration des performances, RETEX Amazon ● Corretto 8 supporté jusqu’en août 2023 (scénario à privilégier pour ceux qui sur OpenJDK 8) PAS DE SUPPORT PAYANT FRÉQUENCE DE SORTIE DES PATCHS ● Fréquence OpenJDK (tous les 3 mois) + patchs d'urgence FEUILLE DE ROUTE ● Corretto 11 disponible depuis avril 2019 et support jusqu’en août 2024
  • 31. 31/38 SAP MACHINE ● Développé par SAP pionnière du projet OpenJDK ● Second contributeur derrière Oracle ● Destiné à leurs clients et partenaires pour faire fonctionner les produits SAP LICENCE ● GPLv2+CPE GOUVERNANCE ● Projet OpenJDK et SAP SUPPORT GRATUIT ● Assuré par la communauté OpenJDK et SAP SUPPORT PAYANT ● Offre générale de SAP à destination de leurs clients FRÉQUENCE DE SORTIE DES PATCHS ● Fréquence OpenJDK (tous les 3 mois) FEUILLE DE ROUTE ● Même feuille de route que Oracle ● Versions LTS disponibles et supportées pendant 4 ans
  • 32. 32/38 ANNEXE [TECHNIQUE] QUELQUES EXEMPLES A ETUDIER/EVALUER DANS LE CADRE DE VOS MIGRATIONS
  • 33. 33/38 NOUVEAUTÉ : JIGSAW, LE SYSTÈME DE MODULES Depuis Java 9 Modules Paquets module exemple.fichier.module { // liste des paquets,ressources*, services et // modules compris ou requis par ce module } Nouveau niveau d’abstraction Fichier module Nom du module Mot-clé * Plus besoin du dossier « ressources » à la racine 4 types de modules Modules système - incluent modules Java SE et JDK Modules sans nom - Ressources chargées dans le classpath Modules automatiques - intégrés via des fichiers JAR (module path) Modules applicatifs - Les modules de notre application
  • 34. 34/38 NOUVEAUTÉ : JRE PERSONNALISÉ JAVA 11 ● Plus de JRE proposé de base, juste un JDK JIGSAW A PERMIS L'APPARITION DE JLINK ● Outil pour la création d’un JRE personnalisé ● Réduction taille JDK (286 Mo pour l'ancien JRE) ● Contient seulement les éléments dont on a besoin class Test { public static void main(String[]args) { System.out.prinltn("Hello World"); } } javac –module-source-path src -d out -m demoModule jlink –module-path out –add-modules demoModule,<chemin_vers_le_dossier_jmods>/java.base –output myjre java -m demoModule/Test Fonctionne seulement avec le système de modules (tutoriel pour applications non-modulaires)
  • 35. 35/38 AU RAYON DES NOUVEAUTÉS DEPUIS JAVA 9 (NON EXHAUTIF) API FLOW AMÉLIORATIONS DE L'API DE GESTION DES PROCESSUS NOUVELLE INTERFACE « PROCESSHANDLE » NOUVEAU CLIENT HTTP COMPILATION MULTI-VERSIONS JAVA 9 - G1 NOUVEAU RAMASSE-MIETTES PAR DÉFAUT JAVA 11 – GARBAGE COLLECTORS EPSILON ET ZGC (EXPÉRIMENTAUX) AMÉLIORATION FONCTIONNEMENT A L’INTERIEUR D’UN CONTENEUR CORRECTION DU MÉCANISME D’ATTACHE D’UN PROCESSUS HÔTE À UN PROCESSUS JAVA EXÉCUTÉ DANS UN CONTENEUR THREAD-LOCAL HANDSHAKES CONSTANTES DYNAMIQUES NOUVELLES MÉTHODES DANS LES INTERFACES LIST, SET ET MAP
  • 36. 36/38 ÉLÉMENTS DÉPRÉCIÉS DEPUIS JAVA 8 (NON EXHAUSTIF) PAQUETS ET APIS DE SÉCURITÉ ● java.security.{acl, cert, Certificate, Identity, IdentityScope, Signer, auth.Policy} ● com.sunjarsigner CONSTRUCTEURS DE CLASSES PRIMITIVES ● Boolean, Byte, Short, Character, Integer, Long, Float, Double ● Autoboxing / Méthodes valueOf MÉTHODE FINALIZE CLASSE OBJECT ● Problèmes de performances et des blocages ● Préférer java.lang.ref.Cleaner et java.lang.ref.PhantomReference MÉTHODES GSSCONTEXT BASÉES SUR LES FLUX ● Problèmes de conception (définition du protocole filaire et supposition) ● Implémentation correcte impossible quand on manque d’informations sur le jeton MOTEUR NASHORN ● Paquets javax.script, jrunscript, outil jjs, jdk.nashorn.api.{ tree, scripting } OUTILS ET API PACK200 ● API Pack200 dans java.util.jat, pack200 et unpack200
  • 37. 37/38 ÉLÉMENTS DÉFINITIVEMENT SUPPRIMÉS (NON EXHAUSTIF) Modules CORBA ● idlj ● orbd ● servertool ● tnamesrv Classes et paquets ● sun.nio.ch.PollSelectorProvider ● Références vers java.awt.peer et java.awt.dnd.peer ● Moteur AppleScript ● Classes dans com.sun.security.auth ● Fichier management-agent.jar Common DOM APIs ● com.sun.java.browser.plugin2.DOM ● Sun.plugin.dom.DOMObject Support de monitoring SNMP Les propriétés suivantes de com.sun.management.snmp ne fonctionnent plus : ● port ● trap ● interface ● acl ● acl.file Mises à jour automatiques sous Windows et macOS Java Mission Control Version indépendante disponible JRE Disponible en téléchargement indépendant
  • 38. NOTRE FUTUR EST OUVERT For more information: Michel-Marie MAUDET Directeur Général mmaudet@linagora.com Tel : +33 6 60 46 98 52 www.linagora.com Facebook : LINAGORA - Twitter : @linagora