Dans un précédent article, nous avons exploré les bases de Quarkus. Aujourd’hui, plongeons dans l’un de ses outils phares : Dev UI.
Cette interface web intégrée simplifie le développement et le débogage d’applications Java en affichant des informations détaillées sur l’état de votre application.
Accessible en mode développement, elle devient un atout incontournable pour les développeurs.
Comment accéder à Quarkus Dev UI :
Pour accéder à Quarkus Dev UI, commencez par démarrer votre application en mode développement. Cela s’effectue via la commande suivante dans votre terminal :
./mvnw quarkus:dev
Une fois l’application lancée, ouvrez votre navigateur et rendez-vous à l’adresse suivante :
http://localhost:8080/q/dev-ui/
C’est ici que vous découvrirez l’interface Dev UI, prête à vous fournir des informations précieuses sur votre projet.
Gestion des extensions
Dès votre arrivée sur l’interface, vous accédez à l’écran listant les extensions activées dans votre application Quarkus.
Voici quelques exemples courants :
- ArC : intégré par défaut pour gérer l’injection de dépendances.
- Extensions liées aux bases de données : Datasource, Hibernate ORM, JDBC, etc.
- RESTEasy : pour l’exposition d’APIs REST.
- SmallRye OpenAPI : pour générer une documentation OpenAPI et exposer un SwaggerUI.
Vous pouvez consulter et modifier les configurations directement depuis cette interface. Toute nouvelle extension ajoutée apparaîtra automatiquement dans cette liste.
Certaines extensions permettent d’accéder à des informations ou d’effectuer des actions.
Nous allons ajouter trois extensions à notre application directement via l’interface en cliquant sur le bouton “+” en bas à droite et en renseignant :
- “Hibernate orm” puis cliquer sur “Add extension” pour l'extension "Hibernate ORM with Panache"
Quarkus va ainsi automatiquement ajouter la dépendance “quarkus-hibernate-orm-panache” au POM Maven et redémarrer l’application.
- “postgresql” et le drive JDBC :
- “hibernate validator” :
Ainsi, on peut voir que l’écran des extensions a été mis à jour et affiche de nouvelles informations :
Après la configuration applicative des propriétés liés à la base de données, nous reviendrons sur cet écran pour voir le contenu de la base.
Configuration applicative
L’écran de configuration permet de voir l’ensemble des propriétés configurées pour votre application, et celles proposées par les extensions.
Cet écran permet de rechercher des propriétés spécifiques grâce à un filtre et de les trier par colonne. Les propriétés sans cadenas dans la colonne “Phase” peuvent être modifiées à chaud, c’est-à-dire sans nécessiter de redémarrage de l’application. En revanche, pour modifier une propriété verrouillée (avec un cadenas), un redémarrage manuel sera nécessaire.
Pour revenir à notre application, nous allons ajouter les propriétés suivantes :
// Connexion à une BDD postgresSQL + utilisateur / mot de passe
quarkus.datasource.db-kind=postgresql
quarkus.datasource.username=postgresql
quarkus.datasource.password=postgresql
// Url JDBC d’accès à la BDD
quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/introQuarkus
// Indique à hibernate de créer les tables à partir des entités
quarkus.hibernate-orm.database.generation=create
// Configuration pour le profil dev (ne sera pas appliqué en production)
// Activation des devServices et des infos sur la BDD à lancer à l’exécution en mode dév de l’application via test container
%dev.quarkus.datasource.devservices.enabled=true
%dev.quarkus.datasource.devservices.port=5432
%dev.quarkus.datasource.devservices.db-name=introQuarkus
%dev.quarkus.datasource.devservices.username=postgresql
%dev.quarkus.datasource.devservices.password=postgresql
Il est possible aussi d’afficher juste les propriétés modifiées, dans la vue “Source editor” :
Nous allons ensuite ajouter une classe entité nommée “Personne” avec le code suivant sous le package “sfeir.dev.model” :
package sfeir.dev.model;
import io.quarkus.hibernate.orm.panache.PanacheEntity;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
@Entity
public class Personne extends PanacheEntity {
@NotNull
@Size(min = 3, max = 30)
@Column(unique = true, nullable = false)
public String nom;
public static Personne findByNom(String nom) {
return find("nom", nom).firstResult();
}
}
Ainsi, lorsque nous retournons sur l’écran “Extension”, et que nous cliquons sur “Database view” (dans Agroal Database connection pool), nous pouvons voir le contenu de la base de données et la table “Personne” :
Écran workspace
L’écran workspace permet tout simplement de consulter et modifier les fichiers de notre application directement via l’interface Dev UI :
Affichage d’informations sur les endpoints
L’écran “Endpoints” fournit une vue d’ensemble des points de terminaison exposés par votre application. Vous y trouverez des détails tels que les chemins d’accès, les méthodes HTTP associées et les paramètres requis, ce qui facilite le débogage et la validation des APIs.
Écran continuous testing
L’écran “Continuous Testing” est dédié à l’exécution et au suivi des tests automatisés. Il affiche les résultats par scénario, incluant le statut (succès ou échec) et le temps d’exécution. Cette fonctionnalité est idéale pour identifier rapidement les problèmes et garantir la stabilité de votre application tout au long du développement.
À noter, qu’en bas de l’interface, l’icône d’un fil à raccorder à une prise électrique permet d’ouvrir le terminal de l’application et de voir les logs de celle-ci.
Dans celle-ci, il est possible de choisir les colonnes à afficher et le niveau des logs par package.
Écran dev service
L’écran “Dev Services” simplifie la gestion des services de développement automatiquement configurés par Quarkus en mode développement.
Dans notre application, on utilise une base de données, Quarkus en provisionne ainsi une via Testcontainers.
Il est possible de récupérer les informations de connexion pour les utiliser dans des outils externes comme DBeaver.
Écran build metrics
L’écran “Build Metrics” offre une vue détaillée des performances de vos builds Quarkus.
Vous y trouverez des données essentielles telles que :
- Le temps de build : identifiez les étapes les plus longues pour optimiser vos processus.
- La taille des artefacts générés : surveillez et réduisez la taille de vos fichiers pour améliorer les performances en production.
- Les statistiques de compilation : évaluez l’efficacité globale de votre pipeline de développement.
Ces informations sont particulièrement utiles pour détecter les goulets d’étranglement dans vos builds, réduire les temps de déploiement, et garantir une meilleure expérience utilisateur.
Par exemple, si vous constatez une augmentation significative du temps de build après l’ajout d’une extension, l’écran “Build Metrics” vous permet d’identifier rapidement la source du problème.
En combinant ces données avec d’autres outils comme le Continuous Testing, vous pouvez affiner votre workflow et assurer une livraison rapide et fiable de vos applications Java.
Écran Readme
Cet écran affiche tout simplement le contenu du fichier README qui se trouve à la racine de votre application :
Écran Dependencies
Cet écran permet de voir avec un diagramme les différents liens entre les dépendances :
Il est ainsi possible par exemple, en cas de souci d’incompatibilité entre deux librairies, de voir sous forme visuelle les librairies portées par une librairie importée.
Conclusion
En résumé, le fait que Quarkus propose une interface Dev UI peut devenir un allié incontournable pour les développeurs Java.
Son interface intuitive centralise la gestion des extensions, la configuration des propriétés, et le suivi des métriques, tout en intégrant des outils avancés comme le Continuous Testing.
En optimisant chaque étape du flux de travail, cet outil améliore la productivité et garantit des applications de haute qualité.
Prêt à explorer tout le potentiel de Quarkus Dev UI ? Rendez-vous sur la documentation officielle pour en savoir plus : https://quarkus.io/guides/dev-ui.
Source :
- Lien vers l'application d'exemple de cet article
- Qu'est-ce que Quarkus :
