Kotlin
A concise multiplatform language developed by JetBrains
Développement côté serveur productif avec Kotlin : témoignages d’entreprises utilisatrices
Kotlin a été créé comme une alternative à Java, son domaine d’application au sein de l’écosystème de la JVM était donc censé être le même que celui de Java. Évidemment, cela inclut le développement côté serveur.
Nous aimerions en savoir plus sur votre expérience avec Kotlin pour le développement d’applications côté serveur et partager vos retours avec la communauté !
Racontez-nous votre histoire !
Kotlin a connu une énorme croissance au sein de l’écosystème Android ces dernières années. L’adoption de Kotlin pour le développement côté serveur affiche également une croissance stable. Cependant, les entreprises qui envisagent d’adopter Kotlin pour le développement côté serveur nous demandent encore souvent « Qui d’autre utilise Kotlin pour cela ? » .
Lorsqu’elles cherchent à adopter de nouvelles technologies, les entreprises veulent s’assurer de faire le bon choix et elles apprécient d’avoir la confirmation que d’autres entreprises obtiennent de bons résultats en utilisant ces technologies.
Dans cet article, nous partageons plusieurs témoignages d’entreprises qui ont adopté Kotin pour le développement côté serveur. Nous espérons que ces retours d’expériences vous seront utiles si vous envisagez d’utiliser Kotlin pour le même type de projets.
Cet article est basé sur la présentation du contenu de l’événement en ligne Kotlin 1.4. Vous pouvez visionner la vidéo complète sur notre chaîne YouTube .
Pourquoi Kotlin ?
Nous échangeons constamment avec des développeurs et nous avons ainsi appris que des entreprises de toute taille utilisent Kotlin pour le développement côté serveur. Il est toujours intéressant pour nous de savoir pourquoi les entreprises choisissent Kotlin et quels avantages elles en retirent.
Kotlin offre de nombreuses fonctionnalités mais nous évoquerons ici celles qui sont le plus appréciées par les utilisateurs avec lesquelles nous avons échangé :
- La Syntaxe concise. L’expressivité du langage permet de générer du code concis. Moins il y a de code à écrire, moins l’application finale risque de comporter des bugs et plus la maintenance du code est facilitée.
- La Sécurité Null. C’est la fonctionnalité de Kotlin que les développeurs apprécient le plus. Le système de types de Kotlin vise à éliminer le risque de références nulles dans le code, également connu comme « l’erreur à un milliard de dollars ». Cette fonctionnalité de sécurité supplémentaire est intégrée au compilateur de Kotlin, ce qui permet d’éviter les problèmes de déréférencement de valeurs nulles.
- L’interopérabilité avec Java. L’interopérabilité avec la plateforme hôte est un atout majeur pour améliorer la productivité ! Avec Kotlin, vous pouvez tirer parti de tous les frameworks et bibliothèques de l’écosystème Java. Il est également possible d’introduire progressivement Kotlin dans un projet Java sans avoir à convertir tout le code Java en Kotlin.
- Les coroutines Kotlin. Elles offrent un moyen simple de maîtriser le code asynchrone avec un modèle de programmation impératif. Les coroutines sont particulièrement utiles pour développer des applications côté serveur à charge élevée nécessitant de nombreuses opérations input/output, car elles permettent d’économiser beaucoup de ressources système. L’ajout de la prise en charge des Coroutines au framework Spring a encore renforcé l’intérêt de cette fonctionnalité pour le développement côté serveur.
- Kotlin Multiplatform. Avec Kotlin, les développeurs peuvent cibler différentes plateformes – JVM, JavaScript, Android, iOS, applications natives. La possibilité de partager du code entre plusieurs applications fonctionnant sur différentes plateformes s’est avérée être une fonctionnalité très utile.
Voyons maintenant quelques exemples dans lesquels Kotlin apporte une amélioration significative au développement.
JetBrains Space : la réutilisation du code poussée à l’extrême
Vous ne serez pas surpris d’apprendre que nous utilisons Kotlin chez JetBrains. Nous l’utilisons non seulement pour nos outils mais aussi pour nos services. JetBrains Space, notre plateforme de collaboration pour les équipes dont nous avons annoncé le lancement lors de la KotlinConf 2019, a été créée avec Kotlin et le framework Ktor . Space utilise Kotlin pour tout : services côté serveur s’exécutant sur la JVM, application Android, application iOS, application web et plugin d’IDE.
Grâce à Kotlin Multiplatform, une grande partie du code est partagée entre toutes ces applications. En plus du partage du modèle de données entre l’interface utilisateur et le code côté serveur, Space mutualise le modèle de vue, la logique de validation et les bibliothèques communes. Toutefois, les composants de l’interface utilisateur sont spécifiques à la plateforme, l’interopérabilité est donc également importante pour chaque plateforme sur laquelle le code Kotlin peut être exécuté.
Kotlin Multiplatform
L’exemple qui suit montre comment Kotlin prend en charge le développement pour de multiples plateformes. Supposons que nous souhaitions utiliser une classe de données pour plusieurs plateformes (JVM, JavaScript, iOS) :
La classe String appartient à la bibliothèque standard de Kotlin mais pas LocalDate. Nous pouvons spécifier la classe à utiliser en tant que LocalDate pour chaque plateforme ciblée par l’application. Pour ce faire, nous déclarons la classe LocalDate dans le module commun aux différentes plateformes en utilisant le mot-clé expect, en supposant que les différents modules fourniront l’implémentation réelle. Le mot-clé actual indique le type à utiliser dans le code spécifique à la plateforme :
Le code non spécifique à la plateforme peut être écrit une seule fois seulement, dans le module commun du projet. Le code commun est ensuite réutilisé par les différents modules qui ciblent des plateformes spécifiques.
La prise en charge de Kotlin pour le développement multiplateforme est particulièrement prisée par les équipes de développement mobile, qui l’utilisent pour partager du code entre des applications Android et iOS. Vous pouvez en apprendre davantage à ce sujet sur le site Kotlin Multiplatform Mobile et en consultant les retours d’expériences d’entreprises utilisant cette technologie .
Jira Software : Microservices avec Kotlin et Spring Boot
Autre exemple intéressant : le logiciel Jira d’Atlassian. Kotlin est utilisé chez Atlassian pour développer les produits cloud Jira Software.
Jira était une application Java monolithique autonome que les utilisateurs installaient sur leurs serveurs. Avec l’introduction de Jira Cloud est apparu le besoin de décomposer l’application en plusieurs services afin de mieux la faire évoluer.
Le passage au cloud a créé une opportunité de mettre à jour la pile technologique et c’est ainsi que Kotlin est intervenu. Les développeurs ont été ravis d’adopter le langage, qui leur a permis de gagner en productivité ! Ils utilisent maintenant Kotlin avec Spring Boot pour implémenter des microservices visant à améliorer des aspects majeurs de l’expérience utilisateur. Kotlin et Spring sont utilisés dans toute la gamme cloud de Jira : dans Jira Software, Jira Service Desk et Jira Core.
Adobe : déverrouillage avec les coroutines Kotlin pour les services à charge élevée
L’équipe Adobe Experience Platform a partagé ses réflexions sur les raisons pour lesquelles Kotlin a sa préférence pour le développement côté serveur.
Les membres de l’équipe expliquent que les backends des applications sont passés de conteneurs web monolithiques à un maillage distribué d’applications basées sur les données. Ces applications doivent traiter beaucoup de données, recevoir et envoyer des messages, et pour toutes ces opérations, la latence est un paramètre critique.
Dans leur article, ils énumèrent les principaux avantages de l’utilisation de Kotlin pour le développement côté serveur. La prise en charge de la programmation asynchrone est citée comme la plus utile des fonctionnalités de Kotlin. Les coroutines Kotlin sont décrites comme « faciles à apprendre » et permettant de générer du code facile à maintenir.
« Avec Kotlin, nous pouvons écrire du code dans un “style direct » qui se lit presque comme un code bloquant, impératif. »
Les applications sont assez lourdes en terne d’input/output et doivent recourir à divers services externes; tels que des files d’attente, des bases de données et autres. Or ces appels réseau risquent d’affecter le débit des applications. L’intérêt des coroutines Kotlin est donc immédiatement apparu comme évident pour ce cas d’utilisation. Le passage à l’asynchrone améliore le débit global et économise par conséquent les ressources matérielles.
Les autres avantages résident dans les principales fonctionnalités du langage Kotlin : les classes de données , le système de type de fiable, la sécurité Null et la prise en charge de la programmation fonctionnelle . La flexibilité de la syntaxe de Kotlin facilite la création d’un DSL interne. Cette caractéristique est également très appréciée par les ingénieurs d’Adobe. Un autre de leurs articles décrit leur expérience de la construction d’un DSL avec Kotlin .
Groupe Expedia : création d’API GraphQL avec Kotlin
Expedia a adopté Kotlin en raison des garanties de sécurité Null qu’offre son compilateur, de la concision du langage et de son interopérabilité complète avec Java. L’interopérabilité avec Java a permis une intégration progressive de Kotlin sans avoir à réécrire entièrement les applications. Elle a également permis à Expedia d’intégrer facilement des applications Kotlin avec des bibliothèques Java et d’utiliser pleinement l’écosystème de la JVM existant.
Les coroutines Kotlin ont joué un rôle essentiel dans l’adoption du langage. Elles permettent aux équipes de développement d’écrire du code entièrement asynchrone de manière impérative, et donc de le rendre plus lisible et facile à maintenir. Le framework Spring est largement utilisé chez Expedia et, à partir de la version 5.2, il a permis l’interopérabilité entre WebFlux et les coroutines . Cela a changé la donne pour les ingénieurs d’Expedia, en leur permettant dès lors d’utiliser la pile Spring et Reactive de façon plus impérative.
Récemment, Expedia a décidé d’adopter GraphQL et de créer une passerelle d’API unique pour toutes les applications frontend. Pour ce faire, leur équipe s’est appuyée sur la puissante bibliothèque Reflection de Kotlin afin de générer le schéma GraphQL directement à partir du code source. L’ensemble de bibliothèques qui en a résulté, graphql-kotlin, s’est avéré très utile. Elles ont été passées en open source et sont maintenant hébergées sur GitHub.
Lors de la KotlinConf 2019, Dariusz Kuc et Guillaume Scheibel ont expliqué comment tirer parti de la puissance combinée de Spring Boot et de graphql-kotlin. Voici la vidéo de leur intervention :
Résumé
Que ce soit chez JetBrains, Adobe, Expedia ou Atlassian, Kotlin aide les entreprises à construire des applications essentielles pour leur performance. Ces témoignages montrent que Kotlin est un langage de programmation mature adapté au développement d’applications et de services web.
Auteur de l’article original en anglais : Anton Arhipov