Aller au contenu
PROXIAD - LOGO DEF VALIDÉ - 201123 blanc-01 (1)
BLOG TECH
PRÊT À DÉCOLLER ?
Rechercher
Close this search box.

FR

|

EN

ARTICLE

Quarkus : le framework Java nouvelle génération

Qu’est ce que Quarkus ?

Quarkus est un framework d’application Java Open Source, conçu pour fonctionner nativement avec Kubernetes.

Il est construit sur les frameworks Java populaires tels que Eclipse MicroProfile et Apache TomEE, et est optimisé pour les conteneurs et les environnements sans serveur.

L’une des principales caractéristiques de Quarkus est sa capacité à générer des exécutables natifs. Cela signifie que les applications Quarkus peuvent être compilées en code machine et exécutées sans avoir besoin d’une machine virtuelle Java (JVM). Cela entraîne des temps de démarrage plus rapides et une utilisation de mémoire inférieure par rapport aux applications Java traditionnelles.

Une application native avec Quarkus ?

La construction native avec Quarkus consiste à utiliser GraalVM pour créer des images de conteneur binaires natifs à partir de votre application Java. Cela permet de créer des images de conteneur plus légères et plus rapides à démarrer, car elles ne nécessitent pas un JRE (Java Runtime Environnement) pour fonctionner.

Une fois l’image générée, vous pouvez la déployer dans un conteneur, ou l’utiliser pour des fonctions en tant que service (FaaS). La taille de l’image native sera généralement plus petite que celle d’une image JVM, car elle ne contient pas de JRE. Les temps de démarrage seront également plus rapides car l’application est compilée en binaire natif et n’a pas besoin de charger un JRE.

Comparatif Quarkus JVM, Quarkus Native et SpringBoot

Les performances d’une application native sont généralement supérieures à celles d’une application JVM (Java Virtual Machine) classique. Cela est dû à plusieurs facteurs :

  • La compilation à la volée n’est plus nécessaire : une application native est compilée en binaire natif, ce qui signifie qu’elle est directement exécutée par le système d’exploitation sans l’intermédiaire d’une machine virtuelle. Cela permet d’éliminer les surcharges de la JVM et de réduire les temps d’exécution.
  • Utilisation de la mémoire réduite : une application native utilise moins de mémoire que son équivalent JVM, car elle ne nécessite pas de charger la JVM elle-même en mémoire.
  • Temps de démarrage plus rapides : une application native démarre plus rapidement qu’une application JVM, car elle ne doit pas charger la JVM avant de démarrer.
  • Taille de l’image plus petite : une application native a une image plus petite que son équivalent JVM, car elle ne nécessite pas de inclure la JVM elle-même.
  • Consommation de ressources réduite : une application native consomme généralement moins de ressources système (processeur, mémoire) que son équivalent JVM, car elle est plus efficace pour utiliser les ressources disponibles.

En somme, les avantages des applications natives sont nombreux : performances plus élevées, utilisation réduite de la mémoire, temps de démarrage plus rapides, taille d’image plus petite et consommation de ressources réduite.

Voici ci dessous un tableau comparatif comprenant les temps de build et de démarrage entre les trois technologies :

MétriqueSpringBoot JVMQuarkus JVMQuarkus Native
Temps de build (sec)1.755.2491
Temps de lancement (sec)1.811.270.11

Comment faire une application Quarkus ?

Créer un dossier dans le quel voulez créer votre nouveau projet quarkus puis exécuter la commande maven suivante :

mvn io.quarkus.platform:quarkus-maven-plugin:2.15.3.Final:create 
	-DprojectGroupId=com.proxiad 
	-DprojectArtifactId=quarkus

Celle-ci va permettre la création d’un squelette d’application contenant un WebService que vous pourrez ouvrir dans votre IDE préféré.

Il est également possible d’utiliser l’initialiseur de projet disponible à cette adresse : https://code.quarkus.io/ ce dernier fonctionne comme Spring initializr et permet donc de sélectionner différentes dépendances ainsi que de préconfigurer le pom.xml de votre projet.

Afin de lancer votre nouvelle application exécuter la commande :

mvn compile quarkus:dev
quarkus

Votre application se lancera ainsi et vous pourrez y accéder en local à l’adresse : http://localhost:8080/

Cette page contient une page d’accueil regroupant différentes informations sur l’application en cours d’exécution ainsi que le path vers le premier webservice auto-généré :

quarkus

Cette interface contient également un bouton permettant d’accéder au dev UI regroupant différentes informations complémentaires sur l’application ainsi que la possibilité de configurer cette dernière.

quarkus

En parallèle de votre application Quarkus, votre CLI ayant permit le lancement de l’application reste interactive afin de pouvoir effectuer divers actions lors de vos développements. (activer ou désactiver le live reload, changer le niveau de logging dynamiques etc..). Pour éteindre l’application et quitter la console interactive, vous pouvez presser la touche “q”.

En ce qui concerne le code, voici à quoi ressemble le premier webservice :

@Path("/hello")
public class GreetingResource {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String hello() {
        return "Hello from RESTEasy Reactive";
    }
}

Et si nous passons notre application JVM en native ?

Maintenant que nous avons une application fonctionnelle, nous sommes prêt à passer notre application en native.

Premièrement, ils vous faudra installer GraalVM qui est un outil permettant d’optimiser les performances des applications Java. Il fonctionne en utilisant un compilateur pour transformer le code Java en code natif. Pour installer GraalVM vous pouvez vous référer à la documentation officiel ici :
Installation on Windows Platforms

Pour builder l’application Quarkus en native il faut impérativement lancer les commandes depuis le terminal x64 Native Tools.

mvn package -Pnative

Pour rappel, si le build est plus long qu’un build classique, cela est tout à fait normal.

Lorsque ce dernier se termine, vous retrouverez dans votre dossier /target votre application compilé reconnaissable avec le suffixe “-runner”.

Pour lancer l’application, il suffit simplement de l’exécuter comme tout exécutable.

Vous remarquerez que le serveur se lance instantanément (300 ms) .

En suivant cette logique, il est également possible de créer directement une image Docker.
Pour ce faire :

  • Compiler l’application avec les paramètres supplémentaires :
mvn package -Pnative -Dquarkus.native.container-build=true -Dquarkus.container-image.build=true
  • Effectuer le build Docker de l’application via le fichier Dockerfil.native :
docker build -f src/main/docker/Dockerfile.native -t proxiad/quarkus-poc:1.0.0-SNAPSHOT .
  • Puis vous pouvez lancer directement via docker desktop ou via la commande suivante :
docker run -i --rm -p 8080:8080 proxiad/quarkus-poc

Vous pouvez dès à présent pousser votre image sur un hub distant afin de déployer votre application sur d’autres environnements ou la récupérer cette dernière dans Kurbenetes.

Il est important de noter que la construction native n’est pas compatible avec tous les frameworks et les bibliothèques Java, donc il est important de vérifier la compatibilité avant de l’utiliser. De plus, les fonctionnalités d’introspection et de réflexion ne sont pas supportées dans les images natives, donc il est important de vérifier si cela affectera votre application.

Qu’en concluons nous ?

En conclusion, Quarkus est un framework Java innovant qui permet de développer des applications de microservices performantes et légères. Il offre une expérience de développement moderne et agréable grâce à son intégration avec les dernières technologies comme GraalVM, Kubernetes et OpenShift. Quarkus est également très bien adapté pour les déploiements dans des environnements cloud natifs, ce qui en fait un choix judicieux pour les projets de développement de microservices. En somme, Quarkus est un outil puissant qui devrait être considéré pour les projets Java actuels et futurs.

Direction Technique
Jean-Christophe DECLUNDER
Proxiad NORD

PROXIAD - LOGO DEF VALIDÉ - 201123 blanc-01 (1)
  • Applicatif
  • Infrastructures
  • Cybersécurité
  • DevOps
  • Contact

PARIS

47 Rue de Ponthieu
75008 Paris
France
contact.idf@proxiad.com

LILLE

15 rue du Palais Rihour
59000 Lille
France
contact.nord@proxiad.com

ROUEN

4 Passage de la Luciline,
76000 Rouen
France
contact.normandie@proxiad.com

NANTES

275 Boulevard Marcel
Paul, 44800 Saint-
Herblain, France
contact.ouest@proxiad.com

STRASBOURG

3 Avenue de l'Europe,
67300 Schiltigheim
France
contact.est@proxiad.com

AIX-MARSEILLE

Europarc de Pichaury - 1330
av Guillibert de la Lauziére,
13290 Aix-en-Provence
contact.aixmarseille@proxiad.com

SOPHIA ANTIPOLIS

930 route des Dolines
06560 Valbonne
France
sophiantipolis@proxiad.com

LYON

170 Bd de Stalingrad
2e étage
69006 Lyon
contact.lyon@proxiad.com

BORDEAUX

Mama Works,
51 Quai Lawton, Bâtiment G4
33300 Bordeaux
contact.bordeaux@proxiad.com

SOFIA

59 Boulevard G.M. Dimitrov,
1700 Sofia,
Bulgaria
contact.bulgaria@proxiad.com

PLOVDIV

6 Belgrad St,
4000 Plovdiv
Bulgaria
contact.bulgaria@proxiad.com

GREEN SI &
GREEN SI CONSULTING

47 rue de Ponthieu,
75008 Paris, France
contact.greensi@proxiad.com

SKOPJE

13 Maksim Gorki str,
Nastel Business Center
1000 Skopje
Macédoine du Nord 
contact.macedonia@proxiad.com

RENNES

801 Av. des Champs Blancs
35510 Cesson-Sévigné
contact.bretagne@proxiad.com

© 2023 PROXIAD

  • MENTIONS LéGALES
  • POLITIQUE DE CONFIDENTIALITé
  • siège social, 47 rue de ponthieu, 75008 paris, france
  • +33 1 44 83 83 70
Facebook Linkedin Twitter Instagram Youtube
En poursuivant votre navigation sur ce site, vous acceptez l’utilisation de cookies à des fins de statistiques de visites. En savoir plusRéglages cookiesREJETERACCEPTER
Manage consent

Présentation de la confidentialité

Ce site Web utilise des cookies pour améliorer votre expérience lorsque vous naviguez sur le site Web. Parmi ces cookies, les cookies classés comme nécessaires sont stockés sur votre navigateur car ils sont essentiels pour le fonctionnement des fonctionnalités de base du site Web.
Nous utilisons également des cookies tiers qui nous aident à analyser et à comprendre comment vous utilisez ce site Web. Ces cookies ne seront stockés dans votre navigateur qu'avec votre consentement.
Vous avez également la possibilité de désactiver ces cookies. Mais la désactivation de certains de ces cookies peut avoir un effet sur votre expérience de navigation.
Necessary
Toujours activé
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Non-necessary
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
Enregistrer & appliquer
Gérer le consentement aux cookies
Pour offrir les meilleures expériences, nous utilisons des technologies telles que les cookies pour stocker et/ou accéder aux informations des appareils. Le fait de consentir à ces technologies nous permettra de traiter des données telles que le comportement de navigation ou les ID uniques sur ce site. Le fait de ne pas consentir ou de retirer son consentement peut avoir un effet négatif sur certaines caractéristiques et fonctions.
Fonctionnel Toujours activé
Le stockage ou l’accès technique est strictement nécessaire dans la finalité d’intérêt légitime de permettre l’utilisation d’un service spécifique explicitement demandé par l’abonné ou l’utilisateur, ou dans le seul but d’effectuer la transmission d’une communication sur un réseau de communications électroniques.
Préférences
Le stockage ou l’accès technique est nécessaire dans la finalité d’intérêt légitime de stocker des préférences qui ne sont pas demandées par l’abonné ou l’utilisateur.
Statistiques
Le stockage ou l’accès technique qui est utilisé exclusivement à des fins statistiques. Le stockage ou l’accès technique qui est utilisé exclusivement dans des finalités statistiques anonymes. En l’absence d’une assignation à comparaître, d’une conformité volontaire de la part de votre fournisseur d’accès à internet ou d’enregistrements supplémentaires provenant d’une tierce partie, les informations stockées ou extraites à cette seule fin ne peuvent généralement pas être utilisées pour vous identifier.
Marketing
Le stockage ou l’accès technique est nécessaire pour créer des profils d’utilisateurs afin d’envoyer des publicités, ou pour suivre l’utilisateur sur un site web ou sur plusieurs sites web ayant des finalités marketing similaires.
Gérer les options Gérer les services Gérer les fournisseurs En savoir plus sur ces finalités
Voir les préférences
{title} {title} {title}
Logo Proxiad
  • Accueil
  • Expertises
  • Prêts à décoller
  • Actualités
  • BLOG TECH
  • Accueil
  • Expertises
  • Prêts à décoller
  • Actualités
  • BLOG TECH

NOUS REJOINDRE

Voir nos offres d'emploi   →

CONTACTEZ-NOUS

Envoyez-nous un message   →

SUIVEZ-NOUS

Facebook Linkedin Twitter Instagram Youtube
RAPPORT RSE