VT2020-Quarkus-Fiche

=Introduction= Quarkus est un framework Java Kubernetes-native, qui a pour but de permettre la production d'applicaiton Java très peu couteuse, que ça soit en temps de démarrage, ou un espace mémoire, entre autre pour les applications tournant sur des containers

=Abstract= Quarkus is a Java framework oriented on containerized applications. This framework wants to reduce memory cost and boot time for these applications, in order to create quick and efficient services, and in particular serverless microservices. The main specificity of Quarkus is the generation of native image of the applicaiton.

=Objectifs= Mise en place en 2019 par RedHat, Quarkus est donc un framework récent, qui essaye de remettre au gout du jour Java. Le postulat de départ de ce framework est que Java reste encore aujourd'hui un des langages les plus utilisés au monde, et que l'adapter aux modes de développement actuelles, en particulier les applications serverless, est plus simple pour une entreprise que d'embaucher ou de former des developpeurs à des langages plus spécifiques et moins courants. Quarkus à donc pour but de régler les deux problemes principaux, qui freine l'utilisation de Java dans ces nouveux genre d'application : Ces deux critères sont sources de couts lors de l'utilisation d'application serverless, et veulent absolument etre éviter.
 * un démarrage assez long
 * une utilisation importante de la mémoire.

=Génération d'images natives=



La principale solution apporter par Quarkus est la génération d'images natives. En compilant l'application en y ajoutant des métadonnées, Quarkus est capable de réduire drastiquement les couts de démarrages, en factorisant les objets très peu utilisé par exemple. De plus la création de fichier executable natifs, c'est à dire des fichiers binaires EFI Linux, permet de lancer le programme rapidement, sans avoir besoin de faire appel à une JVM, qui est elle aussi une source de surcout lors de l'execution. On peut ainsi écrire un programme en Java, executable sur n'importe quel support disposant d'une JVM, puis généré une image native utilisé dans un container comme docker, qui est simple à mettre en production grace a Kubernetes, et qui dispose de couts de lancement grandement réduit.

=Framework simple d'utilisation= Bien conscient du vaste panel de gens utilisant Java, RedHat a voulu créer un framework avec une prise en main facile, en permettant entre autre aux developpeurs de garder leur habitudes lors de la création de projets. On peut ainsi utilisé soit gradle soit maven, deux outils très connu pour la construction automatisé, lors de l'élaboraiton d'un projet. L'arborescence générée pour quarkus sera la meme pour les deux outils, permettant une uniformisation des projets, et une plus grandes simplicités. Un autre outil fourni par Quarkus est le hot reload (ou live reload). Cet outil qui permetla mise à jour d'une applicaiton en train de tourner, sans avoir à recompiler l'intégralité du projet, avait presque disparu pour Java depuis l'arrivée de Spring Boot. Il est cependant de retour avec Quarkus, et meme s'il n'apporte pas un gain enorme en terme d'efficacité de travail, il constitue un réel ajout de confort de travail

=Bibliographie= https://quarkus.io/ https://github.com/quarkusio/quarkus https://www.redhat.com/en/topics/cloud-native-apps/what-is-quarkus https://en.wikipedia.org/wiki/Quarkus

=Veille Technologique 2020=
 * Année : VT2020
 * Sujet : Quarkus
 * Slides : Slides
 * Démonstration : [ Démonstration]
 * Auteurs : Killian Pareilleux