Points Clés
- Quelles sont les tendances pour les frameworks pour cette année ?
- Les catégories de frameworks
- Les frameworks les plus populaires dans le cloud
D'un point de vue technique, les frameworks dans le monde Java sont l'un des éléments les plus différenciants. Il est difficile de voir une application en Java sans utiliser d’outils, en utilisant uniquement la plate-forme Java SE. Avec la nouvelle année, il est naturel que des questions se posent, telles que les frameworks disponibles dans les nouveaux projets, les types de frameworks et les tendances. Le but de cet article concerne des frameworks les plus populaires dans le monde Java et des attentes pour l'année prochaine dans l'un des langages les plus populaires au monde.
Il est incontestable que les annotations, ou la metadata facility, ont beaucoup facilité de nombreux usages. En général, la grande majorité des frameworks utilisent ce type de ressources. Cependant, quels changements sont liés au moment où ces annotations seront lues :
- A l'exécution : les informations des annotations sont lues dès le démarrage de l'application Java généralement en utilisant l'API Java Reflection. Ce qui facilite la pluggabilité et / ou l'effet plug-and-play à partir duquel il est possible de modifier le comportement de l'application simplement en ajoutant des dépendances. Un autre point est la facilité d'encapsulation. Par exemple, grâce à la réflexion, il est possible d'avoir un attribut sans setter.
- A la compilation : cette approche vise à amener tous les traitements et analyses des métadonnées Java au moment de la compilation plutôt qu'au moment de l'exécution. Ce type d'approche a tendance à diminuer le temps de démarrage et également la consommation de mémoire. Une façon de mettre en œuvre cette approche consiste à utiliser le Java Annotation Processor.
Comme mentionné précédemment, la lecture de métadonnées change considérablement la donne pour les frameworks, car en général, les frameworks les plus utilisés cette année ont des caractéristiques très similaires :
- Plus qu'un framework, une plate-forme : les frameworks les plus célèbres de l'année 2020 et qui ont tendance à se démarquer en 2021 se distinguent par une collection d'outils pour aider les développeurs à différents niveaux, que ce soit en matière de sécurité d'API ou d'intégration d'une API REST.
- Injection de dépendances : en général, un conteneur chargé de gérer les dépendances au sein d'une application. Un excellent outil pour rester faiblement couplé au sein d'une architecture.
- Accès aux bases de données et services : la connexion d'une base de données, qu'elle soit relationnelle ou non relationnelle, est importante; après tout, si l'application est l'esprit, les données sont le cœur d'un système. Ce point réduit le code peu utile mais nécessaire (boilerplate code) requis pour que l'application Java interagisse avec la base de données.
- Configuration en dehors du code : les informations d'identification telles qu'un utilisateur de base de données et un mot de passe doivent être en dehors du code. Dans l'environnement idéal, le développeur ou l'équipe d'architecture n'a pas besoin de connaître ces informations, suivant les meilleures pratiques des douze facteurs d'application. Ces écosystèmes ont la possibilité d'écraser toutes les configurations via l'environnement. Il est possible d'avoir une configuration pour chaque environnement de manière transparente à l'application.
Sur la base de ces caractéristiques des outils Java mentionnés précédemment, les frameworks Java qui se démarquent sont :
- Quarkus : le projet le plus récent, créé par Red Hat, dont l'objectif principal est d'avoir un démarrage rapide et une empreinte mémoire réduite comme avec des technologies comme NodeJS ou Go.
- Micronaut : peut-être la première plate-forme en Java développée pour fonctionner très efficacement dans une architecture serverless.
- Spring : issu d'un livre écrit par Rod Johnson, il est basé sur une extension et des améliorations autour de Java EE, actuellement Jakarta EE.
- Jakarta EE/MicroProfile : pas nécessairement des frameworks, mais des spécifications. Ces projets animent et servent de base aux projets antérieurs. Le point important est que grâce aux spécifications, il est possible de changer la mise en œuvre directement, et nous avons plusieurs fournisseurs avec des implémentations telles que Wildfly, Payara, TomEE, entre autres.
Le tableau ci-dessous montre la relation entre ces écosystèmes et leurs composants respectifs. Un point partagé entre les frameworks est que chacun permet de mapper les propriétés à des variables d'environnement. Cette fonctionnalité est intéressante si, par exemple, vous souhaitez avoir un fichier de propriétés de configuration à exécuter localement, qui sera écrasé en production de manière transparente pour l'application au point que même l'équipe de développement n'aura pas besoin de connaître ces informations.
Framework | Metadata | Données | Configuration | Injection de dépendances |
Quarkus | reflectionless | Hibernate/Panache (Active Record) | Eclipse MicroProfile Config/Binding from Environment Variables | Quarkus DI |
Jakarta EE/MicroProfile | reflection | JPA, NoSQL | Eclipse MicroProfile Config/Binding from Environment Variables | CDI |
Spring | reflection | Spring Data | Spring Configuration/Binding from Environment Variables | Spring IoC |
Micronaut | reflectionless | Micronaut Data | Micronaut Configuration/Binding from Environment Variables | Micronaut IoC |
Les frameworks les plus populaires dans un environnement cloud
Il est toujours important de mentionner qu'il existe des modalités de service dans le monde du cloud en fonction du niveau d'abstraction d'opérations que le développeur ou l'équipe de développement souhaite déléguer au cloud. Plus l'abstraction est grande, plus le risque de l'entreprise est faible; cependant, le coût du service a tendance à être plus élevé. Le gros point est que les services gérés, comme indiqué par Dan Moore dans 97 choses que tout ingénieur cloud devrait savoir : la sagesse collective des experts, contiennent le logiciel installé et toutes les connaissances de maintenance et de gestion de ces services, simplifiant la vie de toute l'équipe de développement.
Dans ce type de service, nous pouvons catégoriser le PaaS, plateforme en tant que service, car cela permet à l'équipe de développement de se concentrer sur la livraison et réduit considérablement la part des opérations dans le cloud. Par exemple, en utilisant un PaaS Platform.sh, il est possible de réduire la complexité des opérations et les risques liés à l'utilisation du cloud :
- Réduit la complexité des opérations simples telles que la sauvegarde / restauration et les mises à jour de la JVM et de la base de données.
- Il utilise les concepts de GitOps, c'est-à-dire la facilité de déploiements fréquents, la facilité de gestion des variables d'environnement. Il a également une intégration avec Github, Bitbucket et GitLab.
- Définit le contrôle d'accès entre les applications et les services tels qu'une base de données.
- Facilité grâce à l’utilisation d’une CI/CD
- Services déjà intégrés, indiquez-nous simplement les services dont votre application a besoin, et Platform.sh gérera toutes les informations de l'application.
Pour faciliter la migration des systèmes existants ou la création d'un nouveau basé sur le cloud, Platform.sh a créé les guides suivants pour les frameworks les plus populaires dans le monde Java:
L'une des fonctionnalités les plus fortes du monde Java se trouve dans de nombreux frameworks, dont cet article mentionnait les quatre plates-formes de développement les plus populaires. Une caractéristique forte de l'architecture du framework se trouve dans la manière de lire les annotations, soit au moment de l'exécution, soit au moment de la compilation. Les points communs entre les frameworks Java sont le fait qu'ils disposent d'un mécanisme d'injection de dépendances, d'une configuration appliquant les bonnes pratiques et d'un support Platform.sh qui simplifie et accélère l'application dans l'environnement cloud.
A propos de l'auteur
Otávio Santana est un ingénieur logiciel avec une vaste expérience dans le développement open source, avec plusieurs contributions à JBoss Weld, Hibernate, Apache Commons et à d'autres projets. Axé sur le développement multilingue et les applications haute performance, Otávio a travaillé sur de grands projets dans les domaines de la finance, du gouvernement, des médias sociaux et du commerce électronique. Membre du comité exécutif du JCP et de plusieurs groupes d'experts JSR, il est également un champion Java et a reçu le JCP Outstanding Award et le Duke's Choice Award.