Le langage de programmation Java est bien dans sa troisième décennie, et le langage et son code binaire ont trouvé leur location dans tout, des puces intégrées aux fermes de serveurs massives. La combinaison de Java d’une machine virtuelle solide comme le roc et d’une grande selection de bibliothèques constitue un écosystème fertile pour écrire du code qui s’exécute partout.
Cependant, un domaine où Java a connu des difficultés est le monde des serveurs, qui doivent souvent jongler avec les connexions de milliers, voire de thousands and thousands d’utilisateurs. Dans les premières années, les outils Java étaient parmi les meilleurs pour créer des apps côté serveur qui appliquaient la logique métier à tous les utilisateurs. Les frameworks Java tels que J2EE, Hibernate, Spring et le modèle de foundation de servlets Java ont rendu relativement facile la création d’applications World-wide-web puissantes.
La technologie a prospéré jusqu’à l’apparition de JavaScript et 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 apprécié la possibilité d’exécuter le même code sur le serveur et un shopper de navigateur. Deuxièmement, les serveurs Node.js ont souvent fourni un débit considérablement moreover rapide, grâce à leur modèle réactif.
L’écosystème Java s’est adapté pour être compétitif. Pour commencer, certains développeurs ont adopté des outils comme Boîte à outils Website Google, qui traduit Java en JavaScript. Ensuite, ils ont travaillé pour accélérer Java sur le serveur. Les premiers frameworks Java pour le serveur avaient une limitation : chaque requête entrante recevait son propre thread. C’était une façon propre d’organiser les données entrantes et sortantes, mais c’était aussi éprouvant. La création d’un thread nécessite des milliers d’octets de temps système, ce qui peut limiter le nombre d’utilisateurs que chaque serveur peut gérer. Node.js a utilisé un modèle différent qui lui a permis de jongler avec beaucoup as well as d’utilisateurs sans cette surcharge.
In addition récemment, les développeurs Java ont apporté des improvements de Node.js à la pile Java, en particulier les frameworks Java natifs du cloud. Ces frameworks imitent l’approche de Node.js et prennent en demand des fonctions légères qui s’exécutent sur des equipment cloud et peuvent démarrer et s’arrêter rapidement. Ils se passent de bibliothèques supplémentaires pour prendre en cost un déploiement rapide sur les cases de serveur les plus légères disponibles. Les frameworks Java natifs du cloud sont conçus pour prendre en demand des constellations de microservices qui peuvent être installés et redémarrés indépendamment. Ils sont généralement expédiés dans des conteneurs comme Docker ou Podman pour les constructions et installations les moreover rapides possibles.
Les développeurs Java modernes à la recherche d’une expérience cloud native disposent d’un éventail d’options. Un framework Java natif cloud idéal tire parti de l’expérience approfondie investie dans la plate-forme Java et ses bibliothèques tierces tout en les adaptant pour une exécution moreover rapide et furthermore légère dans le cloud. Voici huit frameworks Java conçus à partir de zéro pour le développement et le déploiement natifs du cloud.
Micronaute
Les créateurs de Micronaut voulaient tirer le meilleur parti des frameworks Java classiques tels que Spring et Grails, tels que la configuration adaptable et l’injection de dépendances, mais éliminer l’empreinte mémoire lourde et le démarrage lent qui les rendaient moins souhaitables pour le développement de microservices. Ils ont soigneusement conçu des annotations qui fournissent suffisamment d’informations pour les injections de dépendances sans la réflexion de remplissage de mémoire utilisée dans les anciens frameworks. Obtenir as well as de configuration de Micronaut au minute de la compilation signifie que le code s’exécute moreover rapidement et moreover léger.
Le framework est conçu pour prendre en charge une variété de langages basés sur JVM (actuellement, Java, Kotlin et Groovy) et les exécuter sur différents clouds. Les fichiers de configuration prédéfinis simplifient le déploiement du serveur ou des fonctions sans serveur sur tous les principaux clouds, et il existe des pages de documentation bien écrites pour toutes les principales connexions de foundation de données.
Les développeurs de Micronaut souhaitent également que le framework prenne en demand un bon travail d’équipe de développement. Une implémentation HttpClient est fournie avec le projet pour simplifier l’écriture de assessments unitaires sans quitter Micronaut ni ajouter moreover de travail. Ces exams sont souvent as well as simples et plus complets que les checks requis pour les frameworks dynamiques. C’est, encore une fois, grâce au travail effectué au instant de la compilation.
Micronaut n’est pas seulement destiné au développement d’applications avec des fonctions cloud. Le cadre est suffisamment général pour prendre en charge les rôles traditionnels et certaines purposes de bureau. Son intégration étroite avec GraalVM permet d’utiliser Micronaut pour générer des programs natives.
Quarkus
Les développeurs 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 anticiper les cas d’utilisation les moreover courants pour le développement cloud natif, puis a construit le cadre avec des exemples qui prennent en demand ces cas d’utilisation avec aussi peu que zéro configuration. Le résultat est facilement intégré dans un conteneur et déployé dans un cluster Kubernetes.
L’équipe de développement a accordé une interest particulière à garantir des temps de démarrage rapides afin que les clusters Kubernetes puissent évoluer rapidement. Il s’agit d’une fonctionnalité idéale pour les fonctions qui s’exécutent de manière sporadique, vehicle elles peuvent rester froides jusqu’à ce qu’elles soient appelées.
L’un des objectifs du projet est d’adopter et d’étendre de nombreuses normes et bibliothèques existantes qui sont courantes dans la communauté Java. Par exemple, les annotations JAX-RS définissent les points de terminaison Relaxation. La configuration start par Eclipse MicroProfile. L’équipe de développement de Quarkus a également intégré additionally de 50 bibliothèques normal, il y a donc de fortes prospects que vous reconnaissiez les modèles de conception dans certains cas.
Vous pouvez utiliser le framework Quarkus de foundation pour une variété de products and services. Depuis Quarkus 2.8, les développeurs de Quarkus sont encourageant doucement le modèle RESTeasy Reactive. C’est l’option regular si vous démarrez un nouveau projet, mais vous n’êtes pas obligé de l’utiliser. RESTeasy Reactive offre une structure et des modèles as well as 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 propose également un significant éventail d’options de déploiement. Bien qu’il soit dit “conteneur d’abord”, il peut fonctionner sur du métal nu. Il existe également une alternative de configuration intégrée appelée Funqy qui simplifie la création des fonctions acceptées par AWS Lambda, Azure Capabilities, Knative et quelques autres alternatives.
Fonctions Spring Cloud
Les développeurs Java connaissent bien le framework Spring motor vehicle il a été la foundation de nombreux projets depuis environ deux décennies. Les développeurs de Spring décident de créer une nouvelle variation mieux adaptée au déploiement dans le cloud, ainsi qu’à d’autres rôles. Les fonctions de Spring Cloud Functions sont conçues pour être facilement redéployées vers une variété de tâches telles que les products and services Website, le traitement de flux ou le travail en arrière-strategy.
Le framework Spring Cloud Features perpétue bon nombre des mêmes traditions philosophiques lancées par Spring. Les fonctions cloud de ce framework prennent en cost un model réactif ou impératif, ainsi qu’un mélange hybride des deux.
Soutenir une grande variété d’options est un grand objectif pour le projet. Il existe des adaptateurs qui correspondent aux fonctions dans AWS Lambda, Microsoft Azure, Apache OpenWhisk, Plate-forme Google Cloud, et quelques autres environnements de fonctions cloud courants. Il existe également des adaptateurs pour les principaux frameworks de streaming tels que Apache Kafka, Réconfortet LapinMQainsi que l’option autonome Flux de nuages de printemps. L’empaquetage et le déploiement sont fortement automatisés afin que vous puissiez vous concentrer sur le développement des fonctions elles-mêmes.
L’équipe de développement de Spring Cloud Capabilities a également travaillé dur pour gérer de nombreux pièges et défis courants liés au déploiement du cloud. Capitaine des nuages printaniers peut être utilisé pour jongler avec les déploiements sur plusieurs clouds. Détective des nuages printaniers aide au débogage en traçant les flux de données. Sécurité Cloud de printemps gère de nombreuses tâches de sécurisation d’une application afin que seules les bonnes personnes puissent exécuter les fonctions. Il existe plusieurs dizaines de sous-projets différents.
Le projet est une très bonne base pour la distribution d’applications d’entreprise à travers une variété de plates-formes. Une fois que votre logique d’application est encapsulée dans un POJO Cloud Purpose, elle peut trouver une place dans des dizaines de rôles différents.
Vert.x
Les créateurs de Vert.x souhaitait créer un framework très rapide en simplifiant la boucle événementielle et en optimisant la connexion avec la foundation 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 tire également parti du modèle de threading de Java pour traiter les événements avec plusieurs threads dans un pool, qui peuvent s’exécuter sur plusieurs cœurs s’ils sont disponibles.
La composition est également prévue pour simplifier la création du pipeline pour traiter un flux d’événements. Il emprunte des constructions telles que des promesses et des contrats à terme pour éviter un code désordonné avec des rappels en couches. Les choices 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 extended du bus d’événements.
L’équipe de développement de Vert.x n’est pas dogmatique quant à sa eyesight. Ils disent souvent que Vert.x est une boîte à outils et non un framework. Le code est modulaire afin que vous puissiez choisir les fonctionnalités à utiliser et assembler une architecture adaptée à votre software. Les programmeurs qui veulent plus d’une framework impérative au lieu d’une composition réactive peuvent trouver un assist pour les coroutines de Kotlin.
Ce projet fait partie de l’écosystème Eclipse. Une variété de versions et d’options offre une grande liberté. La Générateur d’applications Vert.xpar exemple, produira du code Java ou Kotlin avec des dizaines de dépendances potentielles telles que des moteurs de modèles ou la prise en demand d’API.
Microprofil Eclipse
L’équipe Eclipse a créé le Microprofil projet comme moyen d’adapter Jakarta EE pour exécuter de as well as petites constellations de microservices. Il supprime une partie des frais généraux de la additionally grande plate-forme tout en regroupant des bibliothèques qui sont à peu près conventional pour de nombreuses architectures de microservices.
L’approche est la plus attrayante pour les développeurs qui pourraient migrer du code à partir de projets Java EE ou Jakarta EE furthermore grands et as well as anciens. Une grande partie de la configuration et de l’architecture restent les mêmes. Dans de nombreux cas, les ajustements sont mineurs. Mais la conception really encourage le variety de décisions qui simplifient la création de code plus léger et in addition rapide. Certains développeurs utilisent MicroProfile comme tremplin vers des frameworks cloud natifs moreover modernes.
Dropwizard
Certains développeurs ont une affection naturelle pour les modules as well as anciens et bien testés et ils apprécieront Dropwizard. L’équipe de développement de Dropwizard a toujours mis l’accent sur des mots comme écurie et mature. Ils ont collecté des modules pour les connexions de base de données comme Hibernate et les ont mélangés dans des frameworks pour les formulaires et d’autres composants d’application Internet normal. Dropwizard rationalise également les processus d’injection de dépendance et de servicing d’exécution tels que la configuration et la journalisation.
Dropwizard est un favori pour les équipes travaillant à réviser et à étendre une software existante. La construction est appropriate avec les approches plus anciennes et matures parce qu’elle s’appuie sur elles.
Frameworks de démarrage pour les plates-formes cloud
Parfois, il n’y a pas besoin de quelque selected de complexe ou d’élaboré. Tous les nuages conservent des exemples de foundation qui sont de bons endroits pour commencer à écrire des fonctions simples. Ils sont principalement conçus pour prendre en charge des décisions très simples et aider les développeurs à démarrer rapidement.
Par exemple, l’équipe de développement de Google Cloud Platform a ouvert ses bases cadre pour les fonctions Java qui s’exécutent dans sa fonction en tant que assistance (FaaS). Le code créé à l’aide de celui-ci est destiné à s’intégrer rapidement aux déclencheurs conventional de GCP, bien qu’il puisse également s’exécuter correctement sur n’importe quelle equipment locale.
Microsoft a également ouvert son cadre pour Java. Le modèle comprend plusieurs routines pour simplifier les transferts de données, comme une bibliothèque pour traduire les données JSON vers et depuis les POJO Java. Si le déclencheur de fonction fournit des métadonnées avec l’invocation, le framework les gère directement.
Ces deux frameworks vous permettent d’accomplir de nombreuses tâches simples en écrivant simplement une seule classe avec une seule fonction. Des projets in addition compliqués peuvent vouloir fusionner cet outil de foundation avec certains des autres frameworks que j’ai décrits. Ce ne sont que des points de départ, mais parfois cela suffit.