Tant de JDK ... Lequel utiliser et ce qu'il menace?

D'un traducteur: La décision de traduire cet article n'est pas venue d'elle-même - c'est plutôt une mesure nécessaire :). En tant que fournisseurs du framework CUBA, nous sommes abordés avec ce problème avec une régularité enviable. Bien sûr, c'est également un sujet extrêmement important pour nous, et en réponse aux derniers changements, nous avons augmenté les bancs d'essai à la fois sur Oracle JDK et OpenJDK - cette mesure protège actuellement nos utilisateurs contre les dépenses de licence imprévues. Cependant, ce sujet n'est pas encore clos, et nous continuons à suivre de près le développement des événements, et, qui sait, nous devrons peut-être ajouter des stands pour d'autres assemblées JDK l'année prochaine ...


L'article sous le chat captive par le fait qu'il décrit succinctement les problèmes et les JDK les plus populaires avec leurs fonctionnalités.


Oracle a récemment annoncé que l'évolution de Java allait changer radicalement grâce au passage à «Release Train» - une nouvelle approche pour le déploiement des versions. Cette modification a également entraîné des modifications en termes de prise en charge des versions, qui seront désormais mises en œuvre non pas pour tout le monde, mais uniquement pour les versions LTS . La communauté Java Champions a clarifié les innovations introduites, un document détaillé est disponible en ligne .


Même avec cette nouvelle, des questions demeurent: quelles versions JDK sont actuellement disponibles? Seront-ils gratuits ou commerciaux? Avant de répondre à cette question, il est important de comprendre quelles sont les exigences pour JDK en tant que produit. En fait, il n'y a qu'un seul code source JDK principal. Il est . N'importe qui peut utiliser le code source pour créer son propre assembly et le placer quelque part sur le réseau. Cependant, une procédure de certification distincte doit être effectuée pour que l'assemblage JDK soit considéré comme valide. La certification est fournie par le Java Community Process (JCP), qui fournit le Kit de compatibilité technologique (TCK). Si une organisation crée un nouvel assembly OpenJDK qui répond au TCK, il est considéré comme "compatible Java SE".


Gardez à l'esprit qu'un assemblage ne peut pas être appelé "Java SE" à moins que la société d'assemblage n'ait acquis une licence commerciale d'Oracle. Par exemple, les builds AdoptOpenJDK qui passent le TCK ne sont pas "Java SE", mais sont "Java SE compliant". Vous devez également tenir compte du fait que la certification est désormais basée sur la libération conditionnelle - les résultats ne sont pas envoyés à JCP / Oracle pour vérification et sont des informations classifiées. En bref, chaque fournisseur qui prend le code source OpenJDK et crée la version génère une autre génération JDK distincte.


OpenJDKbilds


Donc, sans plus tarder, nous vous recommandons de vous familiariser avec les JDK prêts à l'emploi suivants:


Oracle JDK


Il s'agit du principal fournisseur de Java 11 (la sortie a déjà eu lieu). Il s'agit d'une version commerciale avec support payant. Il peut être téléchargé gratuitement et utilisé uniquement directement pour le développement. Vous ne pouvez pas l'utiliser en production sans payer Oracle (donc pour beaucoup qui ne sont pas intéressés par les licences, c'est un piège). Oracle prévoit de fournir une assistance payante jusqu'en 2026 et au-delà. Contrairement à ce qu'il était auparavant, l'assemblage Oracle JDK n'est en aucun cas «meilleur» qu'OpenJDK (tant que les deux sont au même niveau de correctif de sécurité).


Oracle OpenJDK Build


Il existe des versions gratuites sans marque d' OpenJDK distribuées sous la GPL avec l'extension Classpath (adaptées à une utilisation commerciale). Ces versions de build ne sont disponibles que 6 mois après leur sortie. Java 11 devrait publier Java version 11.0.0 et deux correctifs de sécurité, 11.0.1 et 11.0.2. Pour continuer à utiliser la version OpenJDK et ses correctifs d'Oracle, vous devez mettre à niveau vers Java 12 au plus tard un mois après le lancement. Veuillez noter que la procédure de fourniture des correctifs de sécurité est différente de la procédure de fourniture de support, qui comprend le paiement pour le traitement des rapports d'erreur.


AdoptOpenJDK


Ce sont également des versions OpenJDK gratuites et sans marque distribuées sous la GPL avec l'extension Classpath, uniquement contrairement aux versions OpenJDK d'Oracle, ces versions de construction dureront plus longtemps pour les versions majeures telles que Java 11. Les versions de Java 11 seront publiées pendant 4 ans, un an après la prochaine version majeure. AdoptOpenJDK est orienté vers la communauté. Alors que d'autres équipes créent et publient des correctifs de sécurité pour le référentiel OpenJDK d'origine, elles publieront des versions. IBM et Red Hat ont indiqué leur intention de publier de tels correctifs.


AdoptOpenJDK OpenJ9


En plus des versions OpenJDK standard, AdoptOpenJDK fournira également des versions avec OpenJ9 au lieu de HotSpot. OpenJ9 était à l'origine une IBM JVM, mais OpenJ9 est maintenant open source. Et, soit dit en passant, cette option est la plus digne d'étude.


Red Hat OpenJDK


Red Hat fournit des versions de build OpenJDK sur Red Hat Enterprise Linux (RHEL), un produit commercial avec support payant. Red Hat fait un assez bon travail de correctifs de sécurité dans OpenJDK. Dans le passé, Red Hat était responsable des mises à jour de sécurité Java 6 et 7. La version de Red Hat est plus intégrée au système d'exploitation, donc elle ne peut pas être appelée une version OpenJDK typique (il n'y a pas de JDK d'utilisateur final).


Azul zulu


Zulu est une version de marque d'OpenJDK avec un support commercial payant. De plus, bien qu'Azul fournisse gratuitement certains articles zoulous via la communauté zoulou, ils n'ont aucune obligation spéciale de rendre ces assemblages disponibles. Azul a un plan de support Zulu assez important, y compris un support pour Java 9, 13 et 15 , contrairement à d'autres fournisseurs.


Amazon corretto


Il s'agit de la plus récente de toutes les options décrites. Corretto est une version gratuite de la version OpenJDK avec un support à long terme passant par TCK. Il est distribué dans des conditions de licence standard pour toutes les versions d'OpenJDK: GPL + CE. Amazon créera ses propres correctifs et lancera Corretto sur AWS, il sera donc utilisé assez activement (et déjà ajouté à certains produits). La prise en charge de Java 8 est prévue au moins jusqu'en juin 2023.


Dans le processus de conversion de l'OpenJDK d'origine en différentes versions de l'assemblage, le fabricant peut ajouter divers utilitaires ou marquer le produit si cela n'empêche pas la certification (TCK). Par exemple, vous ne pouvez pas ajouter une nouvelle méthode publique à l'API ou de nouvelles ressources linguistiques.


Il existe d'autres implémentations JDK telles qu'IBM et SAPMachine. Cependant, ces versions de l'assembly ne sont pas utilisées aussi souvent, elles ne sont donc pas mentionnées dans cet article. Plus d'informations peuvent être trouvées ici et ici .


Conclusion


Personnellement, je ne vois pas de problème particulier avec plusieurs versions du JDK, car elles doivent toutes être certifiées (TCK). Ce qui vaut vraiment la peine de s'inquiéter, c'est l'utilisation de l'un des JDK propriétaires et d'une version gratuite de l'assemblage d'Oracle, pour éviter un mal de tête à l'avenir. Si vous n'utilisez que des fonctions de base (par exemple, votre entreprise ne dépend pas particulièrement des mises à jour de sécurité), les versions OpenJDK d'Oracle (PAS OracleJDK) vous conviennent mieux, car ils sont constamment mis à jour (dans les 6 mois après la sortie), et vous pouvez utiliser JDK en production sans aucun problème. Si votre entreprise utilise des services cloud (ou avec AWS), AWS Corretto, qui est déjà utilisable sur Amazon Linux et Docker , est un bon choix.

Source: https://habr.com/ru/post/fr434790/


All Articles