Depuis sa sortie, Quarkus, le projet Supersonic Subatomic Java de Red Hat suscite un grand intérêt dans la communauté Java.
Antonio Goncalves (@agoncal) vient de publier deux nouveaux livres, dans sa série AGoncal Fascicle, à propos de Quarkus. Il nous a fait le plaisir de répondre à nos questions.
[Infoq-FR] Bonjour Antonio, qui es-tu, peux-tu nous résumer ta vie, ton œuvre ?
Bonjour. Je suis développeur, principalement autour de l’écosystème Java, mais j’ai d’autres activités en parallèle. En plus d’intervenir chez mes clients en tant que dev, architecte ou pour des audits, je suis pas mal impliqué dans la communauté Java : j’ai co-créé le Paris Java User Group, Devoxx France et Voxxed Microservices, et je co-anime le podcast Les Cast Codeurs. J’ai aussi écrit 7 ouvrages (autour de Java EE et maintenant Quarkus) et je parle souvent en conférences (en présentiel c’est plus sympa, mais aussi en distanciel ;o) Et pour tout ça on m’a remis le titre de Java Champion.
[Infoq-FR] Quarkus fait couler beaucoup d’encre depuis sa sortie. Quels en sont les raisons ?
Je pense que la raison principale est que Quarkus a remis Java au goût du jour du Cloud. Le leitmotive «Java c'est lent, ça démarre pas vite, c’est trop gourmand» ... rend Java difficile à porter dans un monde cloud où chaque ressource a un coût. Techniquement, on peut certainement déployer un serveur d’application Java EE sur du cloud, mais entre le temps de démarrage de la JVM, du serveur et de l’application, il s’est déjà passé quelques minutes et quelques euros sur votre facture. Quarkus est hyper optimisé pour le mode JVM (la gestion des dépendances et la configuration sont faites à la compilation, pas au runtime) et intègre GraalVM (vous pouvez alors avoir un binaire à partir de votre code Java). Le résultat est qu’une application peut, enfin, démarrer en quelques millisecondes en mode JVM… et en un pouillème de millisecondes en mode natif. Cela remet Java dans la course au Cloud, plus besoin d’aller vous aventurer dans d’autres langages ou plateformes que vous maîtrisez peut-être moins.
[Infoq-FR] J’imagines que ces raisons et peut être d’autres t’on décidé à t’intéresser à Quarkus et à écrire deux livres ?
A chaque fois que je termine l’écriture d’un livre, je me dis «plus jamais ça». Je laisse le clavier et l’Asciidoc de côté en me disant que plus jamais je n’écrirai à nouveau. Lorsque j’ai vu Quarkus arriver, je me suis tout de suite plongé dedans. Quarkus était en pleine ébullition, les releases étaient mensuelles, la communauté prenait forme… J’apprenais tous les jours de nouvelles fonctionnalités, j'interagissais avec l’équipe de dev, et puis j’ai eu la chance de faire un PoC chez un client. Je voyais en Quarkus le renouveau du serveur d’appli Java EE : je pouvais utiliser les bonnes vieilles spécifications JPA, CDI ou JAX-RS, avec les nouveautés telles que MicroProfile, GraalVM, Docker ou Kubernetes. Alors je me suis dit «Et si j'écrivais un livre sur Quarkus ?». J’en ai écrit deux !
[Infoq-FR] Que contient et à qui s’adresse «Understanding Quarkus» ?
A toutes celles et ceux qui ne connaissent pas Quarkus…. ou qui connaissent un peu. Les 3 premiers chapitres du livre définissent les concepts utilisés dans les chapitres suivants (Microservices, Reactif, MicroProfile, Cloud Native, GraalVM, etc.). Les 8 chapitres suivants se concentrent sur le coeur de Quarkus, la gestion des données (Bean Validation, JPA, Panache, etc.), les microservices REST (JAX-RS, JSON-B/P, OpenAPI), microservices réactifs (Mutiny, Reactive Messaging, Kafka), la communication entre services et la tolérance aux pannes (CORS, REST Client, Fault-Tolerance), l’observabilité (Health Check et Metrics), et la partie Cloud Native (Docker, Kubernetes) ainsi que la testabilité. Le dernier chapitre agrège certains de ces concepts dans un «Hello World» un peu enrichi.
[Infoq-FR] Que contient et à qui s’adresse «Practising Quarkus» ?
Ce livre est une continuité du premier. Si vous connaissez déjà Quarkus, alors ce livre vous plonge dans le code. Vous y trouverez de succintes introductions aux technologies (il y a une demie page expliquant Panache, par exemple, si vous ne connaissez pas Panache, alors lisez le livre Understanding) et vous développez une application avec un front Angular (mais pas besoin de connaître Angular, le code est fourni, il suffit juste de le packager dans un Quarkus), deux microservices REST, une base de données PostgreSQL et un Prométheus. Une fois le tout mis en place, on rajoute de l’observabilité, de la tolérance aux pannes, on compile le tout en natif, on Dockerise, et hop, ça tourne.
[Infoq-FR] Pourquoi avoir choisi d’écrire deux livres dédiés ?
Dans tous mes livres précèdent, il y a une section «Putting it All Together» où on développe une application simple mais avec des technologies qui interagissent entre elles. Avoir des «Hello World» sur une technologie donnée a ses limites. Dans nos projets, ce qui a de plus compliqué c’est d'agréger une technologie avec d’autres. Quarkus étant extrêmement riche avec tout son eco-système d’extensions, je me suis dit qu’un simple chapitre ne serait pas suffisant. Le livre Practising est donc un gros «Putting it All Together». Si vous ne connaissez pas Quarkus, commencez à lire le Understanding, puis passez au Practising pour taper du code.
[Infoq-FR] Comment sont-ils publiés ?
Depuis mes livres Java EE chez des éditeurs, j’ai commencé à auto-publier mes livres. J’ai ainsi écrit et publié deux livres (Bean Validation puis JPA) sur Kindle. Cela me permet de mettre à jour mes livres et de les re-publier autant de fois que je veux. Je ferai de même pour ces deux livres sur Quarkus… mais avant, j’ai laissé la primeure à RedHat. RedHat les rend gratuitement téléchargeables sur leur portail. Alors dépêchez vous, téléchargez les gratuitement chez RedHat (https://developers.redhat.com/ebooks) car bientôt ils seront payant sur Kindle ;o)
[Infoq-FR] Quarkus est très régulièrement mis à jour. Qu’est ce que cela implique pour ses utilisateurs et sûrement pour toi pour tenir à jour tes publications ?
J’ai commencé à écrire au mois de mai. J’avais la structure de mes deux livres en tête et je m’y tenais. Mais, à chaque release, je me disais «ah, c’est pas mal, ils ont rajouté telle ou telle fonctionnalité dans Quarkus, je pourrai en faire un chapitre». Mais j’ai vite dû arrêter sinon les livres feraient plus de 1000 pages chacun. Il est vrai que Quarkus avance rapidement, mais étonnement, en gardant la compatibilité ascendante. Dans tout le code que j’ai écrit au mois de mai, 6 mois et 5 releases après, il n’y a eu aucune cassure suite aux montées de version. Quarkus va vite, mais c’est souvent pour rajouter de nouvelles fonctionnalités plutôt que pour casser des APIs existantes.
[Infoq-FR] Merci Antonio