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 1.5 Propose De Nouvelles Extensions Et Un Packaging Fast-Jar

Quarkus 1.5 Propose De Nouvelles Extensions Et Un Packaging Fast-Jar

Favoris

Red Hat a publié Quarkus 1.5, avec de nouvelles extensions pour prendre en charge Picocli, gRPC, MicroProfile GraphQL, divers services Amazon et Hibernate ORM avec Panache. Il existe également un nouveau format de packaging fast-jar et une couche de compatibilité avec Spring Cache.

Surnommé "Supersonic Subatomic Java", Quarkus, une concaténation de "quark" et "us" a été introduit pour la première fois en mars 2019 en tant que framework Java complet, natif pour Kubernetes, conçu pour GraalVM et OpenJDK HotSpot. Quarkus est conçu à partir de bibliothèques et de standards Java bien connus tels que MicroProfile, Vert.x, CDI, JAX-RS, Hibernate et Netty, pour n'en nommer que quelques-uns. En seulement huit mois après ses débuts, Quarkus 1.0 a été publié en novembre 2019.

Dans son article de blog pour présenter officiellement Quarkus, Jason Greene, cofondateur de Quarkus, distinguished engineer and manager chez Red Hat, a expliqué comment Java peut être un leader dans l'environnement cloud-native, en écrivant :

L'objectif de Quarkus est de faire de Java une plate-forme leader dans les environnements Kubernetes et serverless tout en offrant aux développeurs un modèle de programmation réactif et impératif unifié pour répondre de manière optimale à un plus large éventail d'architectures pour applications distribuées.

Nous allons explorer certaines de ces nouvelles fonctionnalités dans cet article.

Comme alternative au packaging JAR traditionnel, le nouveau format de packaging fast-jar a été conçu pour accélérer les temps de démarrage. En tant que fonctionnalité expérimentale pour le moment, fast-jar n'est pas utilisé par défaut. Pour l'utiliser, l'instruction suivante peut être ajoutée à un fichier de configuration application.properties :


quarkus.package.type=fast-jar

Une autre approche consiste à exécuter la commande Maven :

    
$ mvn package -Dquarkus.package.type=fast-jar
    

Le nouveau mode de commande, récemment introduit dans Quarkus 1.4, permet aux développeurs d'écrire des applications telles que des clients en ligne de commande, des scripts par lots et des applications console à exécuter sans endpoint REST. Quarkus 1.5 prend désormais en charge Picocli, une bibliothèque Java et un mini-framework pour créer des applications en ligne de commande riches.

Considérée comme une fonctionnalité expérimentale à l'heure actuelle, l'extension Picocli peut être ajoutée à une application Quarkus 1.5 existante en exécutant la commande Maven suivante :

    
$ mvn quarkus:add-extension -Dextensions="picocli"
    

Cela ajoutera une nouvelle dépendance au fichier pom.xml :

    
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-picocli</artifactId>
</dependency>
    

Pour voir comment cela fonctionne, considérez l'exemple suivant :

    
@CommandLine.Command
public class HelloCommand implements Runnable {

    @CommandLine.Option(names = {"-n", "--name"}, description = "Who will we greet?", defaultValue = "World")
    String name;

    private final GreetingService greetingService;

    public HelloCommand(GreetingService greetingService) {
        this.greetingService = greetingService;
        }

    @Override
    public void run() {
        greetingService.sayHello(name);
        }
    }

@Dependent
class GreetingService {
    void sayHello(String name) {
        System.out.println("Hello " + name + "!");
        }
    }
    

La classe HelloCommand implémente l'interface Runnable et est décoré avec l'annotation @CommandLine.Command. La variable d'instance, name, est décorée avec l'annotation @CommandLine.Option pour définir le paramètre de ligne de commande, une description et une valeur par défaut.

Comme le montre la capture d'écran ci-dessous, l'application en ligne de commande est exécutée en utilisant la valeur par défaut "World" pour imprimer "Hello World!" dans la fenêtre du terminal lors de l'exécution de la commande Maven :

    
$ mvn clean compile quarkus:dev
    

Les paramètres de ligne de commande définis, -n ou --name, peuvent être utilisés pour remplacer la valeur par défaut "World" en utilisant l'une de ces commandes Maven :

    
$ mvn clean compile quarkus:dev -Dquarkus.args="-n Mike"
$ mvn clean compile quarkus:dev -Dquarkus.args="--name=Mike"
    

Cela affichera "Bonjour Mike!" dans la fenêtre du terminal.

GraphQL, un langage de requête et de manipulation de données open source pour les API, a été récemment ajouté à la famille MicroProfile en tant qu'API autonome avec la version récente de MicroProfile GraphQL 1.0. Mis en œuvre par SmallRye, Quarkus 1.5 fournit une extension pour créer des applications GraphQL avec Quarkus.

De manière similaire à l'extension Picocli, l'extension GraphQL peut être ajoutée à une application Quarkus 1.5 existante en exécutant la commande Maven :

    
$ mvn quarkus:add-extension -Dextensions="graphql"
    

Cela ajoutera une nouvelle dépendance au fichier pom.xml :

    
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-smallrye-graphql</artifactId>
</dependency>
    

Le guide de Quarkus GraphQL fournit des exemples et des informations détaillées sur la façon de commencer.

Maintenant que nous fétons ses 25 ans, Java n'a pas été initialement conçu pour un environnement natif du cloud. Alors que l'ère du cloud et des microservices a émergé ces dernières années, des frameworks tels que Quarkus, MicroProfile, Helidon et Micronaut ont permis à Java d'être un leader dans les environnements natifs du cloud, de microservices et serverless.

Ressources

 

Evaluer cet article

Pertinence
Style

Contenu Éducatif

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

Commentaires de la Communauté

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

BT