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 Quarkus 2.0 Offre Des Tests Continus, L'interface De Ligne De Commande Et Le Support Du JDK 11

Quarkus 2.0 Offre Des Tests Continus, L'interface De Ligne De Commande Et Le Support Du JDK 11

Dix-neuf mois après sa première version majeure, Red Hat a publié Quarkus 2.0 avec de nouvelles fonctionnalités telles que les tests continus, une nouvelle CLI, JDK 11 en tant que version minimale et des mises à niveau des dépendances vers Vert.x 4.0 et MicroProfile 4.0. Quarkus, le framework de développement d'applications qui a commencé à faire de Java l'outil préféré pour le développement natif Kubernetes", a franchi une autre étape importante. Les fonctionnalités ajoutées à la version 2.0 promettent « d'amener Quarkus à un tout nouveau niveau, tout en gardant ses racines : démarrage rapide, faible utilisation de la mémoire et joie du développeur ». Cette version fait passer la version minimale du JDK à 11, cependant, la version 1.13 de Quarkus supporte toujours le JDK 8. En tant que version majeure, on s'attendrait également à des changements de rupture, mais la promesse de Red Hat est que les développeurs doivent s'attendre à une mise à niveau en douceur.

Afin de mieux comprendre les avantages de cette nouvelle version, InfoQ a contacté les membres de l'équipe principale de Quarkus pour nous fournir une brève description des avantages de chaque nouvelle fonctionnalité ajoutée dans Quarkus 2.0.

Tests continus, une fonctionnalité qui pourrait augmenter l'efficacité, permet aux tests d'être exécutés automatiquement dans le mode développement lors de l'écriture du code. Stuart Douglas, ingénieur logiciel principal senior chez Red Hat, ayant récemment discuté des tests continus, a déclaré à InfoQ :

Stuart Douglas : les tests continus permettent aux développeurs d'obtenir des retours instantanés et ciblés sur leurs modifications. Chaque fois que vous modifiez du code, les tests pertinents pour ce morceau de code sont exécutés (et uniquement les tests pertinents) et les résultats sont affichés dans une barre d'état. Tant que le code sur lequel vous travaillez est testé, vous pouvez obtenir des retours instantanés, sans avoir besoin d'exécuter des tests manuellement ou de regarder vos modifications dans un navigateur.

Une autre amélioration axée sur la testabilité concerne les modifications apportées aux DevServices qui permettent des connexions automatiques aux bases de données et aux files d'attente de messages en modes développement et test.Georgios Andrianakis, ingénieur logiciel principal chez Red Hat, a déclaré à InfoQ :

Georgios Andrianakis : presque toutes les applications doivent communiquer avec une base de données ou un broker de messages pour être fonctionnelles. Cela signifie que les développeurs doivent configurer et retirer correctement ces services lorsqu'ils développent leurs applications ou exécutent leurs tests.

DevServices a été développé afin de supprimer le besoin d'exécuter manuellement ces services externes lors du développement d'une application Quarkus.

En termes pratiques, cela signifie qu'un développeur peut utiliser mvn quarkus :dev et mvn test(ou leurs équivalents Gradle ou Quarkus CLI) sans démarrer les bases de données ou les brokers de messages nécessaires au préalable et sans avoir besoin de configurer l'URL de ces services. La seule exigence est une installation de Docker en cours d'exécution, car la fonctionnalité dépend de Testcontainers.

Il convient de mentionner que les utilisateurs peuvent facilement désactiver cette fonctionnalité de manière explicite ou implicite en configurant une URL spécifique pour le service qu'ils ne souhaitent pas gérer par DevServices.

La nouvelle Quarkus CLI vise à améliorer la productivité des développeurs. Même si sa large disponibilité pour son utilisation sur tous les systèmes est encore un travail en cours, il peut déjà être exécuté en utilisant JBang. Avec cette nouvelle fonctionnalité, Quarkus supprime le besoin de commandes Maven ou Gradle. Erin Schnabel, ingénieur logiciel principal senior chez Red Hat, a déclaré à InfoQ :

Erin Schnabel : la CLI est destinée à simplifier le travail avec les projets Quarkus. L'utiliser n'est pas obligatoire, les plugins Maven et Gradle continueront de fonctionner correctement, mais notre objectif avec la CLI est de simplifier et de rationaliser les choses autant que possible. Les commandes CLI offrent cohérence et brièveté pour les tâches courantes, quel que soit l'outil de génération utilisé par le projet (par exemple, mvn io.quarkus:quarkus-maven-plugin:2.0.1.Final:create … vs quarkus create). Les extensions étant la clé d'intégration de Quarkus, la CLI permet en utilisant quarkus extension ou quarkus ext de gérer les extensions : en ajoutant, en les supprimant du projet. L'avenir de la CLI vise à simplifier les options, comme la création d'images natives ou la mémorisation de vos paramètres préférés.

Pour les développeurs qui préfèrent l'interaction via une interface utilisateur graphique (UI), des modifications ont également été apportées à Quarkus DevUI. Stephane Eparduad, ingénieur logiciel principal chez Red Hat, a déclaré à InfoQ :

Stephane Epardaud : le mode Quarkus DEV est livré avec de nombreuses fonctionnalités intéressantes à partir de la console : des journaux laconiques et joliment colorés, ainsi que des rapports et des commandes de test continu, mais vous ne pouvez pas tout afficher sur la console. Pour tout ce qui peut aider les développeurs présenté de manière graphique, nous avons l'interface DEV UI. Si vous allez sur http://localhost:8080/q/dev, une liste graphique de toutes les extensions que vous avez installé sur votre application Quarkus en cours d'exécution s'affiche. Avec chaque extension, vous obtenez des liens vers leur documentation et des pages spécifiques, telles que l'interface utilisateur Swagger pour tester vos endpoints REST, ou l'interface GraphQL UI, une liste des endpoints REST existants et leurs scores de performance, la liste des beans CDI installés et naturellement, l'UI de test continu présentée de manière graphique. De nombreuses extensions prennent en charge la DEV UI pour vous aider à développer votre application Quarkus, et chaque nouvelle version ajoute davantage de pages et d'actions personnalisées à la DEV UI, alors assurez-vous de regarder ça.

Parmi d'autres changements importants, il y a eu des mises à jour des composants SmallRye. Roberto Cortez, ingénieur logiciel principal chez Red Hat, a déclaré à InfoQ :

Roberto Cortez : SmallRye fournit des API et des implémentations adaptées au développement Cloud, y compris, mais sans s'y limiter, MicroProfile. Beaucoup de nos utilisateurs ne savent pas que SmallRye apporte un nombre important de fonctionnalités à la plate-forme Quarkus. Par exemple, tout ce qui concerne la configuration est fourni par SmallRye Config. En parlant de configuration, nous avons introduit un moyen de mapper les valeurs de configuration en tant qu'objet statique type-safe avec l'annotation @ConfigMapping. Nous travaillons à rendre les API SmallRye plus réactives, afin que les endpoints de santé requis par Kubernetes ne soient pas bloquants et permettent l'utilisation d'annotations de tolérance aux pannes sur les méthodes réactives.

Nous ne pouvons pas oublier SmallRye Reactive Messaging, qui exploite les nouvelles API Vert.x 4.0 et SmallRye Mutiny pour améliorer le modèle de programmation réactive événementielle. Dans d'autres domaines, nous avons ajouté la prise en charge d'OpenTelemetry qui devrait s'intégrer de manière transparente au reste de l'écosystème Quarkus pour les besoins de traçage et de surveillance.

Un autre domaine avec des améliorations significatives est SmallRye GraphQL. Quarkus 2.0 contient une nouvelle extension spécifiquement pour le client GraphQL. Cette extension offre les capacités nécessaires pour exécuter facilement des requêtes sur des services GraphQL distants. Il propose deux types de clients, selon celui qui correspond le mieux à votre cas d'utilisation : typesafe et dynamic. Le client typesafe fonctionne directement avec les classes du modèle et est donc similaire à un client REST MicroProfile, mais conçu pour GraphQL. D'autre part, le client dynamique fonctionne à un niveau plus abstrait où les données en jeu sont représentées sous forme d'objets JSON et les requêtes GraphQL sont construites à l'aide d'un langage spécialisé spécifique au domaine. Les extensions GraphQL côté client et côté serveur proposent désormais également des abonnements GraphQL, afin que les clients puissent écouter les événements en temps réel du serveur. Cela améliore considérablement les capacités de programmation réactive.

Un autre changement de niche important est la prise en charge des coroutines Kotlin avec des extensions telles que RESTEasy Reactive, REST Client et Reactive Messaging. Justin Lee, ingénieur logiciel principal chez Red Hat, a déclaré à InfoQ :

Justin Lee : Quarkus a, depuis sa première version, soutenu Kotlin mais il manquait une pièce majeure : les coroutines de Kotlin. Avec les récentes améliorations apportées à l'image native de GraalVM et nous ayant amélioré l'ensemble d'extensions avec un support réactif, nous sommes désormais en mesure de prendre en charge les coroutines. L'avantage ici est que les coroutines offrent un moyen plus simple d'écrire et de maintenir un code convivial réactif par rapport à l'utilisation du langage Java. Cela devrait s'améliorer lorsque Project Leyden arrivera dans le SDK Java, mais jusque-là, vous pouvez mélanger et faire correspondre en utilisant le style qui vous convient le mieux, une API réactive ou impérative, en utilisant à la fois Java ou Kotlin avec Quarkus 2.0.

En outre, nous avons corrigé de nombreux bugs et peaufiné les intégrations de Kotlin, permettant une intégration beaucoup plus étroite, de sorte que les fonctionnalités de Quarkus, telles que devmode, fonctionnent avec Kotlin.

Outre les mises à niveau des dépendances vers Vert.x 4.0 et MicroProfile 4.0, d'autres fonctionnalités notables incluent : une mise à niveau des dépendances vers Hibernate ORM 5.5 avec la prise en charge de contributeurs de métadonnées sur l'extension; Quarkus's ORM Hibernate implmentation of CDI, ArC, prend désormais en charge les décorateurs CDI ; la prise en charge des transactions pour MongoDB avec Panache ; et une nouvelle extension Amazon SSM.

Il est également recommandé d'utiliser GraalVM 21.1, la dernière version, avec Quarkus 2.0.

Le framework Quarkus qui s'appelle lui-même « supersonic, subatomic Java » a gagné en popularité après s'être rapidement déplacé dans l'espace Early Adopters, selon le Rapport sur les tendances Java InfoQ. Au cours des 19 mois qui ont suivi la sortie de Quarkus 1.0, son mode de développement a ajouté des fonctionnalités de déploiement et de redéploiement à chaud préservant l'état, des tests continus et la CLI. Des enquêtes récentes telles que le Snyx JVM Ecosystems Report 2021 et le 2021 JRebel Java Technology Report, place Quarkus avec une part de marché de 11% et 6%, respectivement.

 

Evaluer cet article

Pertinence
Style

Contenu Éducatif

BT