Initiez-vous à la programmation réactive avec Kotlin sur Quarkus
Le passage au cloud avec une architecture pilotée par les événements soulève de grandes préoccupations pour les entreprises qui utilisent plusieurs langages de programmation tels que Java, C #, JavaScript, Scala et Groovy pour mettre en œuvre les exigences de l’entreprise. Étant donné que les entreprises doivent reconcevoir séparément plusieurs architectures pour le déploiement de conteneurs et consacrer davantage d’efforts à l’optimisation de la production sur le cloud, les développeurs doivent souvent apprendre un nouveau langage de programmation en ligne avec l’environnement de production. Par exemple, les développeurs Java doivent basculer leurs compétences vers Node.Js pour développer des applications événementielles légères.
Kotlin résout ces problèmes et cible divers développeurs qui déploient des applications métier avec plusieurs langages de programmation sur Java Virtual Machine (JVM). Kotlin gère ces problèmes avec des approches à la fois impératives et réactives. Cependant, il reste encore beaucoup à faire pour rattraper la nouvelle syntaxe et les nouvelles API de Kotlin, en particulier pour les développeurs Java. Heureusement, l’extension Quarkus Kotlin permet aux développeurs d’implémenter plus facilement les applications Kotlin.
Créer un nouveau projet Kotlin à l’aide de Quarkus CLI
Je vais créer un nouveau projet maven en utilisant le Ligne de commande Quarkus par exemple. La commande suivante ajoute des extensions Quarkus pour activer les extensions RESTEasy Reactive, Jackson et Kotlin :
$ quarkus create app reactive-kotlin-example -x kotlin,resteasy-reactive-jackson
La sortie devrait ressembler à ceci :
...
[SUCCESS] ✅ quarkus project has been successfully generated in:
--> /Users/danieloh/Downloads/demo/reactive-kotlin-example
...
Ensuite, j’utiliserai Quarkus Dev Mode, qui permet codage en direct pour résoudre le problème de performances dans le développement de la boucle interne. Il simplifie le flux de travail de développement, de l’écriture de code à l’accès au point de terminaison ou à l’actualisation d’un navigateur Web sans cycle de recompilation et de redéploiement. Exécutez les commandes suivantes :
$ cd reactive-kotlin-example
$ quarkus dev
La sortie devrait ressembler à ceci :
...
INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
INFO [io.quarkus] (Quarkus Main Thread) Installed features: [cdi, kotlin, resteasy-reactive, resteasy-reactive-jackson, smallrye-context-propagation, vertx]--
Tests paused
Press [r] to resume testing, [o] Toggle test output, [:] for the terminal, [h] for more options>
Faire en sorte que Kotlin se comporte à la manière de Quarkus
Kotiln fournit une coroutine pour exécuter un bloc de code simultanément, similaire à un thread en Java. La coroutine peut être suspendue dans un thread puis reprise dans un autre thread. Quarkus permet aux développeurs de composer des fonctions de suspension.
Ouvrez le ReactiveGreetingResource.kt
déposer dans src/main/kotlin/org/acme
répertoire pour remplacer le Bonjour() méthode avec le code suivant :
@GET
@Produces(MediaType.TEXT_PLAIN)
suspend fun hello() = "Hello RESTEasy Reactive by Kotlin Suspend function"
Remarque : Ce fichier de ressources est généré automatiquement lorsque vous créez un nouveau projet Kotiln à l’aide de la CLI Quarkus.
Assurez-vous d’accéder à l’API RESTful (/hello
) si la nouvelle fonction de suspension fonctionne dans l’environnement de développement Quarkus. Exécutez ce qui suit curl
ligne de commande dans votre terminal local, ou vous pouvez également accéder à l’URL du point de terminaison à l’aide d’un navigateur Web :
& curl localhost:8080/hello
La sortie devrait ressembler à ceci :
Hello RESTEasy Reactive by Kotlin Suspend function
Génial! Ça marche bien. Je vais maintenant activer la fonctionnalité d’injection de contexte et de dépendance (CDI) de Java dans l’application Kotlin.
Activer l’injection CDI dans l’application Kotlin
Les réflexions et les annotations dans Kotlin sont différentes de la façon dont Java initialise les propriétés. Cela cause probablement un problème aux développeurs (par exemple, UninitializedPropertyAccessExceptionUninitializedPropertyAccessException). Avant d’activer l’injection CDI dans le code, créez un nouveau GreetingService.kt
fichier de service dans le src/main/kotlin/org/acme
annuaire:
@ApplicationScoped
class GreetingService {fun greeting(name: String): String {
return "Welcome Kotlin in Quarkus, $name"
}}
Retournez à la ReactiveGreetingResource.kt
fichier. Ajoutez le code suivant à utiliser @Injecter annotation pour adopter l’annotation Kotlin et la réflexion par @champ : par défaut:
@Inject
@field: Default
lateinit var service: GreetingService@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("/{name}")
fun greeting(@PathParam("name") name: String): String {
return service.greeting(name)
}
Accédez au nouveau point de terminaison (/bonjour/{nom}) si l’injection CDI fonctionne. Exécutez ce qui suit curl
commande dans le terminal local ou accédez à l’URL du point de terminaison à l’aide d’un navigateur Web :
& curl localhost:8080/hello/Daniel
La sortie devrait ressembler à ceci :
Welcome Kotlin in Quarkus, Daniel
Emballer
Vous avez appris comment Quarkus permet aux développeurs de continuer à utiliser les API de programmation Kotlin pour les applications Java réactives. Les développeurs bénéficient de fonctionnalités telles que services de développement et codage en direct. Ils augmentent également les performances du déploiement de l’environnement cloud grâce à un exécutable natif. Dans un autre article, je montrerai comment développer des fonctionnalités de transaction de données à l’aide de Kotlin avec Quarkus.