JavaRush /Blog Java /Random-FR /Tendances Java en 2022 : JDK 18 et 19, Project Loom et Da...

Tendances Java en 2022 : JDK 18 et 19, Project Loom et Data mesh

Publié dans le groupe Random-FR
Eh bien, 2022 a commencé. Alors que la plupart des gens sont encore en vacances du Nouvel An avec du champagne et Olivier, nous parlerons des tendances du monde Java. Cela vous aidera peut-être à analyser votre carrière, à apprendre une nouvelle technologie ou à élaborer un plan de développement pour l'année à venir. Tendances Java en 2022 : JDK 18 et 19, Project Loom et Data mesh - 1Andrey Rodionov, spécialiste du langage Java et conférencier, ainsi qu'architecte de solutions à l'EPAM et chef du comité de programme Devoxx Ukraine, Oleg Tsal-Tsalko, ont parlé de ce qui attend Java en 2022 et dans un avenir proche.

Quelles sont les perspectives de Java en 2022 ?

Tendances Java en 2022 : JDK 18 et 19, Project Loom et Data mesh - 2Cette année, nous attendons la sortie des deux prochaines versions : JDK 18 (en mars) et JDK 19 (en septembre). Les éléments potentiellement intéressants pour la plupart des développeurs Java dans JDK 18 peuvent être :
  • Serveur Web simple intégré, sans prise en charge d'un conteneur de servlets, qui peut être utilisé pour un prototypage et des tests rapides, similaire à des mini-serveurs Web similaires en Python, Ruby, PHP.
  • La correspondance de modèles continue de s'améliorer.
Quant au JDK 19, il existe déjà une version à accès anticipé, mais il n'y a toujours pas de liste officielle de ce qui devrait y être inclus. J'aimerais croire que le JDK 19 inclura au moins le premier prototype stable du Project Loom, pour lequel des projets de spécifications sont récemment apparus et dont la dernière version est basée sur le JDK 19. Nous parlerons du Project Loom plus en détail ci-dessous.

Dans quels domaines Java reste-t-il la seule solution, et où est-il préférable ?

Andreï Rodionov :

Heureusement, nous ne pouvons pas dire qu'il n'existe d'alternative à Java dans aucun domaine, mais nous pouvons parler de Java comme d'une sorte de juste milieu pour développer des applications d'entreprise, des backends et des microservices. Il convient également de noter le nombre croissant de distributions JDK différentes provenant de différents fournisseurs (à l'exception d'Oracle) : Amazon, Microsoft, Alibaba, Red Hat, Bellsoft (fondé par des personnes du centre de développement Oracle de Saint-Pétersbourg) et d'autres. L'ensemble complet des distributions est disponible ici . Tendances Java en 2022 : JDK 18 et 19, Project Loom et Data mesh - 3Il existe toujours des alternatives, mais Java trouve sa plus grande utilité dans le backend du développement d'entreprise. La plupart des grandes entreprises choisissent Java pour leurs systèmes volumineux et complexes. Les raisons sont les mêmes : le nombre de développeurs et l’expertise sur le marché, un immense écosystème et une plateforme JVM puissante.

Quelles sont les perspectives des autres langages jvm, notamment Kotlin, par rapport à Java ?

Andreï Rodionov :

Pour comprendre quels langages JVM sont populaires, ouvrez simplement la documentation de Spring, Micronaut, Vert.x et voyez dans quelles langues les exemples de code sont donnés - Java et Kotlin seront courants. On ne peut pas dire qu'il y ait une transition massive des projets vers Kotlin, mais sa popularité pour le backend continue de croître et de nombreux frameworks tentent de l'inclure dans leur écosystème. Quant à Scala, de nouvelles versions sont publiées et il est en outre activement utilisé pour le ML, le traitement des données et là où le paradigme de programmation fonctionnelle est plus pratique.

Oleg Tsal-Tsalko :

Les autres langages JVM sont assez attractifs et de nos jours il est tout à fait normal qu'un projet utilise plusieurs langages de programmation. Il me semble que les raisons pour lesquelles les nouveaux langages JVM ne peuvent pas remplacer Java sont les suivantes :
  • Ils ne sont pas si cool que tout le monde les prenne et les adopte.
  • Ils sont utilisés dans le même segment que Java.
  • Java prend petit à petit le meilleur des autres langages et s'améliore.

Y aura-t-il une baisse de la qualité Java en raison de intervalles de publication plus courts ?

Oleg Tsal-Tsalko :

Je pense que non. Au moins maintenant, je peux identifier des éléments plus positifs dans les sorties fréquentes. Nous constatons que de nouvelles fonctionnalités intéressantes apparaissent beaucoup plus souvent. Désormais, vous n’avez plus besoin d’attendre 5 ans pour que quelque chose de nouveau apparaisse dans la langue. Bien sûr, vous ne devriez plus vous attendre à des versions aussi grandioses que Java 8, car les fonctionnalités apparaissent désormais par petites itérations.

Y a-t-il des fonctionnalités dans les nouvelles versions de Java qui sont particulièrement importantes pour les développeurs ?

Oleg Tsal-Tsalko :

Les versions récentes de Java ont introduit plusieurs fonctionnalités intéressantes telles que la correspondance de modèles, les classes scellées et les enregistrements. Je recommanderais d'examiner leurs capacités. Bien sûr, les fonctionnalités les plus sérieuses et attendues sont prévues au sein de Project Loom et Project Valhalla, mais je pense que les fonctionnalités de ces projets seront également publiées progressivement.

Framework Spring : continuera-t-il à étendre son écosystème pour répondre à divers besoins ?

Andreï Rodionov :

Quant à Spring Framework, son développement s'est concentré sur la prise en charge de diverses fonctionnalités de Spring Cloud et sur la possibilité de compiler Spring Boot en binaires natifs - le projet Spring Native, qui devrait faire partie de Spring Core à l'avenir. À cet égard, Spring était à la traîne de Micronaut et Quarkus en raison de l'utilisation active de la réflexion et de la génération de code dynamique. Concernant Spring Framework 6, je vous conseille de regarder le rapport Spring 6 and Beyond Quoi de neuf dans Spring Framework 6 ? de la conférence Joker (d'Oleg Dokuka et Alexey Nesterov). Les principaux sont la transition vers JDK 17, l'abandon de la configuration XML et d'Autowire via les setters, la poursuite du développement du support Kotlin et le projet Spring Fu.

Oleg Tsal-Tsalko :

Spring, en tant que FW Java le plus populaire de nos jours, ne veut pas abandonner la palme. Je suis sûr que l'équipe de développement fera de son mieux pour le développement de Spring. Le printemps occupe de plus en plus de niches. Par exemple, Spring a fait beaucoup dans le domaine des flux réactifs/programmation réactive avec son Project Reactor. Ils font désormais la promotion du protocole RSoket, qui semble également prometteur.

Parlez-nous du projet Loom : à quoi ça sert, quels problèmes résout-il ?

Andreï Rodionov :

Le projet Loom est probablement l'innovation la plus intéressante, qui pourrait devenir un nouveau changement tectonique pour l'ensemble de la plate-forme JVM et tous les langages au-dessus de la JVM. Le projet Loom n'affectera peut-être pas autant les développeurs ordinaires, mais il affectera certainement l'ensemble de l'écosystème, les bibliothèques, les frameworks et autres langages JVM qui utilisent le multithreading. Project Loom introduit une nouvelle abstraction de threads : les threads virtuels (analogues aux coroutines). Si auparavant un thread Java était directement lié à un thread du système d'exploitation (OS) et que la création d'un nouveau thread en Java conduisait à la création d'un nouveau thread du système d'exploitation, alors avec les threads virtuels, cette relation un-à-un est rompue. Lors de la création d'un nouveau thread virtuel, aucun nouveau thread du système d'exploitation ne sera créé et l'un des threads dits porteurs (une sorte d'analogue d'un pool de threads du système d'exploitation) sera réutilisé pour effectuer des calculs directs. Ainsi, plusieurs threads virtuels peuvent s’exécuter sur un seul thread du système d’exploitation. Pour les tâches informatiques, ce modèle de threads virtuels n'apporte aucun avantage, et ralentit plutôt la vitesse des calculs, mais pour les opérations de blocage, comme le traitement des requêtes HTTP, l'attente des réponses de la base de données ou des microservices, ce modèle sera un avantage significatif. Le fait est qu'avec le modèle de thread actuel, le blocage/l'attente d'un thread Java entraînait des threads du système d'exploitation inactifs - c'était un gaspillage de ressources et nécessitait de créer davantage de threads du système d'exploitation. Dans le modèle de thread virtuel, le blocage/l'attente d'un thread virtuel entraînera la libération du thread porteur sur lequel le thread virtuel s'exécutait et un autre thread virtuel s'exécutera dessus. De cette façon, les threads du système d’exploitation seront utilisés de manière plus optimale et moins d’entre eux seront nécessaires pour effectuer des tâches similaires. En conséquence, les fabricants de bibliothèques, de frameworks et de langages JVM devront adapter leur code aux threads virtuels. Par conséquent, une grande réécriture les attend :) En plus du modèle de thread virtuel, il est également prévu d'introduire une nouvelle API pour simplifier l'orchestration des threads - ce qu'on appelle la concurrence structurée. Désormais, par exemple, la concurrence structurée est activement utilisée dans les coroutines Kotlin et Scala ZIO. Malheureusement, la version JDK et même l'année de sortie de Project Loom sont encore inconnues. Interrogé sur la date de sortie, l'architecte en chef de la plateforme Java, Brian Goetz, répond par une phrase philosophique : « Elle sera prête, quand elle sera prête ». Par conséquent, nous attendons et pouvons essayer des versions expérimentales du Project Loom .

Oleg Tsal-Tsalko :

Loom est un grand projet parapluie, au sein duquel l'équipe OpenJDK et Oracle travaille sur des innovations de concurrence en Java et JVM : threads virtuels, fibres et continuations. Très probablement, la sortie de ces fonctionnalités sera progressive. Pour le moment, il n'existe que des versions en accès anticipé pour la prise en charge des threads virtuels. En ce qui concerne spécifiquement les threads virtuels, son objectif principal est de simplifier le modèle de développement multithread en Java en utilisant des millions de threads légers avec la même sémantique que les threads de plateforme classiques. Sous le capot, ces threads seront gérés à l’intérieur du ForkJoinPool et réutilisés par les threads de la plateforme.

Quelles sont les prévisions pour le développement de Java dans le monde des tendances mondiales - microservices, architecture cloud, blockchain, IA ?

Andreï Rodionov :

Si nous parlons des tendances mondiales, elles n’ont pas beaucoup changé. Comme auparavant, la tendance principale continue d'être Kubernetes et l'infrastructure qui l'entoure sous la forme de Service Mesh . Le maillage de données gagne également en popularité en tant que sorte d'abstraction pour la gestion des sources et des stockages de données distribués.
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION