BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Actualités Apprentissages De Fin D'année De La Migration De Minecraft Vers JDK 16 Et Q&R Avec L'équipe Mojang

Apprentissages De Fin D'année De La Migration De Minecraft Vers JDK 16 Et Q&R Avec L'équipe Mojang

Alors que l'année touche à sa fin, que cela nous plaise ou non, nous réfléchissons à 2021. L'une des choses qui mérite probablement d'être mentionnée, en particulier dans le monde Java, est la sortie du JDK 17, la version LTS intégrant des fonctionnalités telles que le pattern matching for switches, une nouvelle API vector ou les classes scellées. La version promet des performances améliorées prêtes à l'emploi, car l'Application and Class Data Sharing (AppCDS) fait partie des nouvelles fonctionnalités, ainsi que les performances améliorées du nouveau ramasse-miettes G1. Même si la date de sortie était clairement fixée, l'équipe de Minecraft a décidé de faire le pas plus tôt, en migrant vers le JDK 16. C'est encore plus intéressant, car Minecraft fait maintenant partie de Microsoft, donc il utilisera le JRE nouvellement développé. Compte tenu de leur longueur d'avance dans l'exécution avec Java 16 en production, InfoQ s'est entretenu avec l'équipe Mojang pour mieux comprendre leur expérience et leurs gains.

InfoQ : Quelle était la raison de migrer vers Java 16, alors que Java 17 était à nos portes ? Avez-vous migré vers Java 17 ou avez-vous l'intention de le faire ? De quelle version avez-vous migré ?

L'équipe Mojang :

Nous nous sommes tenus au courant de chaque version de Java au fur et à mesure de leur sortie (sur une branche distincte de notre branche principale). Java 16 nous a apporté des gains de performances out-of-the-box en ce qui concerne les temps de démarrage, la gestion de la mémoire et l'exécution du code. Cela a également donné à nos développeurs une augmentation de leur productivité avec de nouvelles fonctionnalités telles que var, switch expression, les blocs de texte et plus encore !

Nous évaluons actuellement Java 17 avec Microsoft, puisqu'il s'agit d'une version LTS, il est logique que nous la déployions dans le futur, mais nous ne nous engageons pas encore sur une date précise.

InfoQ : Pouvez-vous décrire le processus de migration ? À quel point était-ce facile ? Combien de temps a duré la migration ?

L'équipe Mojang :

Comme nous nous sommes tenus au courant de chaque version majeure, nous avons évité la migration big bang et ce n'était donc pas trop difficile. Les premiers défis de la migration provenaient du passage de Java 8 à Java 11 en raison du système de modules introduisant des contrôles de sécurité plus stricts concernant l'accès aux composants internes du JDK sur lesquels certaines de nos dépendances tierces s'appuyaient à l'époque.
Nous recommandons à toute équipe Java sérieuse de configurer son CI/CD pour intégrer chaque version majeure. Ensuite, vous pouvez mettre à jour vos dépendances et votre code de manière incrémentielle pour tirer parti des nouvelles fonctionnalités. Une fois que vous avez pris l'habitude, c'est un coût de mise à jour relativement faible pour un gain important à chaque fois !

InfoQ : Vous utilisez le JDK 16 en production depuis un certain temps déjà. Quelles améliorations avez-vous observées par rapport à la configuration précédente ?

L'équipe Mojang :

De nombreux gains de performances out-of-the-box avec des temps de démarrage à partir de l'Application and Class Data Sharing, des gains d'efficacité de la mémoire grâce à la déduplication de chaîne dans le ramasse-miettes G1, une expérience plus fluide car il y a moins de longues pauses de GC, et une foule d'autres petites améliorations. Cela vaut la peine d'être mis à jour d'un point de vue opérationnel !

InfoQ : Y avait-il quelque chose à quoi vous vous attendiez une fois avec Java 16, mais ne l'a pas fait ?

L'équipe Mojang :

Nous n'avons pas eu d'attentes déçues en soi, cela a été très réussi. Une chose intéressante était que nous n'étions pas sûrs de la rapidité avec laquelle la communauté de mods prendrait pour utiliser les nouvelles fonctionnalités du langage. La réponse a été extrêmement positive, il est vraiment important pour la productivité de leurs développeurs d'avoir accès aux dernières fonctionnalités !

InfoQ : Quelle version de Java utilisez-vous ? Est-ce celui de Microsoft ? Si oui, quelle a été l'inspiration pour l'utiliser ?

L'équipe Mojang :

Il s'agit de la version Microsoft d'OpenJDK. Microsoft a réalisé d'importants investissements à long terme dans Java (comme l'acquisition de jClarity en 2019). Ils ont un groupe d'ingénierie Java très compétent qui a déjà apporté des contributions importantes à Java lui-même (comme le portage sur Windows ARM). Ils partagent également notre amour pour Minecraft, nous savons que nous sommes entre de bonnes mains.

InfoQ : Quels ont été les problèmes techniques les plus difficiles à résoudre pendant la migration ?

L'équipe Mojang :

Il y avait trois défis principaux :

  1. Le premier consistait simplement à s'assurer que nous mettions à jour toutes les dépendances tierces vers des versions qui prennent également en charge Java 16, telles que la bibliothèque Lightweight Java Gaming Library (LWGL).
  2. S'assurer que les modifications apportées aux boîtes à outils de l'interface utilisateur, aux polices, au son, etc. sont toujours compatibles.
  3. Reconfigurer les nouveaux ramasse-miettes et d'autres paramètres de réglage de la JVM pour tirer le meilleur parti des nouvelles modifications.

InfoQ : Qu'auriez-vous aimé savoir avant la migration, mais que vous n'avez pas su ?

L'équipe Mojang :

Il existait plusieurs guides et articles de blog, mais pas vraiment une source canonique pour migrer vers chaque version. Ce n'était pas bloquant, mais nous avons dû reconstituer un peu les informations. Le guide Microsoft pour la passage de Java 8 à 11 a été utile.

InfoQ : Qu'avez-vous prévu ensuite ?

L'équipe Mojang :

Du point de vue purement Java, nous continuerons à travailler avec le groupe d'ingénierie Java de Microsoft pour tester chaque nouvelle version de Java au fur et à mesure de leur sortie. Nous en reprendrons sans aucun doute certains une fois que nous serons satisfaits de la stabilité, des gains de performances et des gains de productivité des développeurs !

Nous ne pouvons commenter aucune feuille de route spécifique pour le moment, mais avec la prise en charge par Microsoft de la cadence LTS de deux ans proposée pour les fournisseurs OpenJDK, cela nous donne l'assurance que nous pouvons suivre les mises à niveau avec une cadence plus régulière que celle que nous avons dans le passé.

Même si pour la plupart des entreprises, les versions LTS sont ciblées lors de la mise à niveau, Minecraft, maintenant une entreprise Microsoft, a fait un acte de foi lors de la mise à niveau vers Java 16. Leurs attentes en termes de gains de performances avec des temps de démarrage prêts à l'emploi grâce à AppCDS, des gains d'efficacité de la mémoire grâce à la déduplication de chaîne dans le ramasse-miettes G1 et une expérience plus fluide en raison de moins de longues pauses de GC.

De plus, les nouveaux ajouts de langage ont été bien accueillis par la communauté des mods : "La réponse a été extrêmement positive, il est vraiment important pour la productivité de leurs développeurs d'avoir accès aux dernières fonctionnalités !". Ceux-ci promettent de permettre aux développeurs d'écrire un code plus élégant, plus rapidement.

 

Au sujet de l’Auteur

Evaluer cet article

Pertinence
Style

Contenu Éducatif

BT