jeudi, 28 mars 2024

8 frameworks Java pour un monde cloud natif

Le langage de programmation Java est bien dans sa troisième année, et le langage et son code binaire ont trouvé leur place dans tout, des puces enracinées aux énormes fermes de serveurs. Le mélange de Java d’un créateur virtuel solide comme le roc et d’une grande collection de bibliothèques constitue un écosystème fertile pour l’écriture de code qui s’exécute partout.

Un endroit où Java a néanmoins rencontré des difficultés, c’est le monde des serveurs, qui devrait souvent gérer les connexions de milliers, voire d’innombrables utilisateurs. Dans les premières années, les outils Java étaient parmi les meilleurs pour produire des applications côté serveur qui imposaient une logique métier à tous les utilisateurs. Les frameworks Java tels que J2EE, Hibernate, Spring et la conception fondamentale des servlets Java ont simplifié le développement d’applications Web puissantes.

La technologie a prospéré jusqu’à l’apparition de JavaScript et de Node.js. Node.js a attiré beaucoup d’attention et les développeurs ont commencé à migrer vers l’environnement d’exécution JavaScript. Il y avait généralement deux raisons : premièrement, les développeurs ont invité la possibilité d’exécuter le même code sur le serveur et un client de navigateur Web. Deuxièmement, les serveurs Node.js ont généralement fourni un débit considérablement plus rapide, grâce à leur conception réactive.

La communauté Java s’est adaptée pour faire face. Pour commencer, certains développeurs ont adopté des outils tels que Web Toolkit, qui traduit Java en JavaScript. Ensuite, ils ont travaillé pour accélérer Java sur le serveur. Les premières structures Java du serveur avaient une limitation : chaque demande entrante recevait son propre thread. C’était une façon propre d’organiser les informations entrantes et sortantes, mais c’était aussi éprouvant. Le développement d’un thread nécessite des milliers d’octets de temps système, ce qui peut limiter la variété d’utilisateurs que chaque serveur peut gérer. Node.js a utilisé une conception différente qui lui a permis de gérer beaucoup plus d’utilisateurs sans cette surcharge.

Plus récemment, les développeurs Java ont apporté des développements de Node.js à la pile Java, en particulier des frameworks Java natifs du cloud. Ces frameworks imitent la technique et les fonctions légères d’assistance de Node.js qui fonctionnent sur des machines cloud et peuvent démarrer et s’arrêter rapidement. Ils ignorent les bibliothèques supplémentaires pour prendre en charge un déploiement rapide sur les instances de serveur les plus légères disponibles. Les frameworks Java natifs du cloud sont conçus pour prendre en charge des constellations de microservices qui peuvent être configurés et redémarrés individuellement. Ils sont généralement livrés dans des conteneurs tels que Docker ou Podman pour les versions et les installations les plus rapides possibles.

Les développeurs Java modernes à la recherche d’une expérience cloud native disposent d’un éventail de choix. Un framework Java natif cloud idéal tire parti de l’expérience approfondie acquise par la plate-forme Java et ses bibliothèques tierces tout en les ajustant pour qu’elles s’exécutent plus rapidement et plus facilement dans le cloud. Voici 8 structures Java construites à partir de zéro pour le développement et le déploiement natifs du cloud.

Micronaut

Les créateurs de Micronaut souhaitaient prendre les meilleures parties des structures Java traditionnelles telles que Spring et Grails, telles que la configuration flexible et l’injection de confiance, mais éliminer le lourd empreinte mémoire et démarrage lent qui les ont rendus moins souhaitables pour l’établissement de microservices. Ils ont soigneusement conçu des annotations qui fournissent suffisamment de détails pour les injections de dépendances sans la réflexion de remplissage de mémoire utilisée dans les structures plus anciennes. Obtenir plus de configuration de Micronaut au moment de l’assemblage signifie que le code s’exécute plus rapidement et plus facilement.

La structure est conçue pour prendre en charge une gamme de langages basés sur JVM (actuellement, Java, Kotlin et Groovy) et faites-les passer à travers de nombreux nuages. Les fichiers de configuration prédéfinis simplifient le déploiement du serveur ou des fonctions sans serveur sur tous les clouds importants, et il existe des pages de documents bien écrites pour toutes les connexions importantes à la base de données.

Les développeurs de Micronaut souhaitent également que la structure soutienne un bon travail d’équipe de développement. Une exécution HttpClient est associée à la tâche de rationaliser l’écriture de tests unitaires sans quitter Micronaut ni ajouter plus de travail. Ces tests sont souvent plus simples et plus détaillés que les tests nécessaires pour les structures vibrantes. C’est, encore une fois, grâce au travail effectué au moment de la compilation.

Micronaut n’est pas seulement destiné à développer des applications avec des fonctions cloud. La structure est suffisamment basique pour prendre en charge les fonctions standard et certaines applications de bureau. Sa combinaison étroite avec GraalVM permet d’utiliser Micronaut pour générer des applications natives.

Quarkus

Les concepteurs qui souhaitent utiliser un mélange bien compris de code impératif et réactif peuvent se tourner vers Quarkus . L’équipe Quarkus a commencé par s’attendre aux cas d’utilisation les plus courants pour l’avancement cloud natif, puis a construit la structure avec des exemples qui prennent en charge ces cas d’utilisation sans aucune configuration. Le résultat est rapidement intégré dans un conteneur et publié dans un cluster Kubernetes.

Le groupe d’avancement a porté une attention particulière à garantir des temps de démarrage rapides afin que les clusters Kubernetes puissent évoluer rapidement. Il s’agit d’une fonction idéale pour les fonctions qui s’exécutent sporadiquement puisqu’elles peuvent être laissées froides jusqu’à ce qu’elles soient appelées.

L’un des objectifs de la tâche est d’accepter et d’étendre de nombreuses exigences et bibliothèques existantes qui prévalent dans le Communauté Java. Les annotations JAX-RS définissent les points de terminaison REST. La configuration commence avec Eclipse MicroProfile. L’équipe d’avancement de Quarkus a également intégré plus de 50 bibliothèques de base, il y a donc de grandes chances que vous reconnaissiez les modèles de style dans des cas spécifiques.

Vous pouvez utiliser le cadre de base de Quarkus pour une variété de services. À partir de Quarkus 2.8, les développeurs de Quarkus motivent doucement la conception RESTeasy Reactive. C’est le choix de base si vous démarrez un nouveau projet, mais vous n’avez pas besoin de l’utiliser. RESTeasy Reactive offre une structure et des modèles plus simples et non bloquants. Au lieu d’attribuer un thread à chaque requête, un ensemble de threads non bloquants gère toutes les E/S et appelle votre code si nécessaire.

Quarkus accepte également un vaste éventail de choix d’implémentation. Bien qu’il soit indiqué qu’il s’agit « d’un conteneur d’abord », il peut fonctionner sur du métal nu. Il existe également un choix de configuration intégré appelé Funqy qui rationalise la production des fonctions acceptées par AWS Lambda, Azure Functions, Knative et quelques autres alternatives.

Spring Cloud Functions

Concepteurs Java connaissent bien la structure de Spring, car elle a servi de structure à de nombreuses tâches pendant environ deux décennies. Les développeurs de Spring décident de créer une toute nouvelle variante bien mieux adaptée au déploiement dans le cloud, ainsi qu’à d’autres rôles. Les fonctions de Spring Cloud Functions sont indiquées pour être facilement redéployées vers une variété de tâches telles que les services Web, le traitement de flux ou le travail en arrière-plan.

La structure de Spring Cloud Functions perpétue un certain nombre des mêmes coutumes philosophiques lancées par Spring. Les fonctions cloud dans ce cadre prennent en charge un style réactif ou crucial, en plus d’un mélange hybride des deux.

Prendre en charge une variété d’options est un objectif important pour la tâche. Il existe des adaptateurs qui insèrent les fonctions dans AWS Lambda, Microsoft Azure, Apache OpenWhisk, Cloud Platform et quelques autres environnements de fonctions cloud courants. Il existe également des adaptateurs pour les principales structures de streaming comme Apache Kafka, Solace et RabbitMQ, en plus de l’option autonome Spring Cloud Stream. L’empaquetage et le déploiement des produits sont grandement automatisés afin que vous puissiez vous concentrer sur l’établissement des fonctions elles-mêmes.

L’équipe d’avancement de Spring Cloud Functions a également travaillé dur pour faire face à un certain nombre de risques et de défis courants liés à la mise en œuvre du cloud. Spring Cloud Skipper peut être utilisé pour jongler entre les implémentations sur plusieurs clouds. Spring Cloud Sleuth aide au débogage en traçant les flux de données. Spring Cloud Security gère de nombreuses tâches de protection d’une application afin que seules les bonnes personnes puissent exécuter les fonctions. Il existe de nombreux sous-projets différents.

La tâche est une excellente structure pour distribuer des applications de service via une gamme de plates-formes. Lorsque le raisonnement de votre application est encapsulé dans un Cloud Function POJO, il peut trouver une place dans des dizaines de fonctions différentes.

Vert.x

Les développeurs de Vert.x voulaient développer une structuration extrêmement rapide en simplifiant la boucle occasion et en améliorant la connexion avec la base de données. Vert.x a une seule boucle d’événements comme Node.js, ce qui lui permet de jongler avec plusieurs connexions au fur et à mesure que les événements arrivent. Il bénéficie également de la conception de threading de Java pour traiter les événements avec plusieurs threads dans un pool, qui peuvent fonctionner sur plusieurs cœurs s’ils sont proposés.

La structure est également préparée pour rationaliser le développement du pipeline pour traiter un événement flux. Il emprunte des constructions telles que des promesses et des contrats à terme pour éviter un code désagréable avec des rappels en couches. Les options asynchrones aident à produire un code propre et lisible, rempli de chaînes simples d’invocations de méthodes au fur et à mesure que les événements se déplacent le long du bus d’occasion.

L’équipe d’avancement de Vert.x n’est pas dogmatique quant à sa vision. Ils déclarent généralement que Vert.x est une boîte à outils et non une structure. Le code est modulaire afin que vous puissiez décider des fonctionnalités à utiliser et assembler une architecture adaptée à votre application. Les développeurs qui souhaitent davantage une structure nécessaire au lieu d’une structure réactive peuvent trouver un support pour les coroutines de Kotlin.

Ce travail fait partie de la communauté Eclipse. Une variété de versions et d’options offre une grande flexibilité. Le générateur d’application Vert.x, par exemple, produira du code Java ou Kotlin avec de nombreuses dépendances possibles comme les moteurs de modèles ou l’assistance API.

Eclipse MicroProfile

Le groupe Eclipse a produit le Projet MicroProfile comme moyen d’adapter Jakarta EE pour exécuter de plus petites constellations de microservices. Il supprime une partie des frais généraux de la plus grande plate-forme tout en regroupant des bibliothèques qui sont pratiquement standard pour de nombreuses architectures de microservices.

La méthode est plus attrayante pour les concepteurs qui pourraient migrer du code depuis Java EE ou Jakarta, plus grands et plus anciens. Emplois EE. Une grande partie de la configuration et de l’architecture restent exactement les mêmes. Dans la plupart des cas, les changements sont mineurs. Mais la conception motive le type de décisions qui simplifient la création de code plus léger et plus rapide. Certains développeurs utilisent MicroProfile comme tremplin vers des structures cloud natives plus contemporaines.

Dropwizard

Certains développeurs ont un amour naturel pour les modules plus anciens et bien testés et ils Je serai ravi de Dropwizard. L’équipe de développement de Dropwizard a en fait constamment mis l’accent sur des mots comme stable et pleinement développé. Ils ont rassemblé des modules pour les connexions de base de données comme Hibernate et les ont combinés dans des frameworks pour le type et d’autres éléments d’application Web standard. Dropwizard rationalise également les procédures d’injection de dépendance et de maintenance d’exécution telles que la configuration et la journalisation.

Dropwizard est un outil préféré pour les équipes travaillant à modifier et à étendre une application existante. La structure est compatible avec les méthodes plus anciennes et entièrement développées puisqu’elle est construite sur celles-ci.

Structures de démarrage pour les plates-formes cloud

Parfois, il n’y a aucune exigence pour quelque chose de complexe ou de sophistiqué. Tous les nuages ​​conservent des exemples standard qui sont de bons emplacements pour commencer à écrire des fonctions simples. Ils sont principalement créés pour prendre en charge des décisions extrêmement simples et aider les développeurs à se lancer rapidement.

Par exemple, l’équipe d’avancement de Cloud Platform a ouvert sa structure fondamentale pour les fonctions Java qui s’exécutent dans sa fonction en tant que -service (FaaS). Le code développé en l’utilisant est censé s’intégrer rapidement aux déclencheurs standard de GCP, bien qu’il puisse également fonctionner avec succès sur n’importe quel fabricant régional.

Microsoft a également ouvert sa structure pour Java. La conception consiste en plusieurs régimes pour simplifier les transferts de données comme une bibliothèque pour traduire les informations JSON vers et depuis les POJO Java. Si le déclencheur de fonction fournit des métadonnées avec l’invocation, le framework le gère directement.

Ces deux structures vous permettent d’accomplir de nombreuses tâches de base en écrivant simplement une seule classe avec une seule fonction. Des projets plus complexes peuvent souhaiter combiner cet outil standard avec quelques-unes des autres structures que j’ai expliquées. Ce ne sont que des points de départ, mais cela suffit souvent.

.

Toute l’actualité en temps réel, est sur L’Entrepreneur

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici