Si le développement JVM supporte de nombreux langages, Kotlin et Scala sont régulièrement cités parmi les deux technos les plus utilisées – en dehors de Java.
Vous voulez créer une application fonctionnant sous machine virtuelle Java, et hésitez entre ces deux langages ? Le choix n’est en effet pas simple, chaque technologie ayant ses avantages et inconvénients.
Pour vous aider à choisir, nous avons écrit un comparatif complet entre Kotlin et Scala !
Qu’est-ce qu’une JVM ?
Si vous êtes nouveau dans le monde des JVM, il peut être intéressant, avant de parler des langages pour JVM, de faire un rapide point sur ce qu’est cette technologie.
JVM, pour Java Virtual Machine est, comme son nom l’indique, une machine virtuelle faisant fonctionner un programme en Java. Pour être plus précis, il s’agit de programmes compilés en bytecode Java. C’est ce qui permet l’utilisation d’autres langages que Java ; tant qu’ils sont buildés en bytecodes.
L’intérêt d’une machine virtuelle Java est de pouvoir faire tourner des programmes Java quelle que soit la plateforme utilisée. Ceci à condition que ladite plateforme soit pourvue de la JVM adéquate.
Plusieurs langages de programmation supportent la compilation en bytecode Java – et donc le développement JVM. C’est le cas de Clojure, Groovy, mais surtout de ceux qui nous intéressent ici, Kotlin et Scala.
Kotlin et Scala : le point sur les langages JVM
Kotlin
Le Kotlin est un langage de programmation créé en 2011 par l’entreprise JetBrains. Cette entreprise est également à l’origine du célèbre IDE (Integrated Development Environment) IntelliJ IDEA. Cet environnement de développement un des plus utilisés du marché, avec Visual Studio Code.
Développé par une équipe russe, son nom vient de Kotline, île située à quelques kilomètres de Saint-Pétersbourg.
Créé pour être complètement interopérable avec Java, Kotlin peut également être compilé vers du JavaScript. Ses cas d’utilisation comptent, bien sûr, le développement JVM, mais Kotlin est aussi très largement utilisé pour la programmation d’applications Android. Depuis 2019, c’est même le langage officiellement recommandé par Google pour développer sous cet OS mobile.
Scala
Le Scala est un langage plus ancien que Kotlin, puisqu’il a été créé en 2004, à l’École polytechnique fédérale de Lausanne. Ce langage a notamment été développé dans le but de combiner les avantages de la programmation fonctionnelle et de la programmation orientée objet.
Son nom vient de scalable et language, du fait de son objectif : être un langage scalable, évolutif.
Principalement utilisé pour être compilé en bytecode Java, la compilation de Scala vers .NET et JavaScript est également supportée.
Scala et Kotlin, points communs et différences
Pour pouvoir choisir la techno à utiliser entre Scala et Kotlin, il est important de lister les points communs et différences entre ces deux langages.
De cette manière, vous y verrez plus clair sur les spécificités techniques – hors JVM – de ces technos.
Les points communs
Si ces deux langages sont concurrents, ils ont de nombreux points communs :
- le support des paradigmes de programmation orientée objet et fonctionnelle ;
- la prise en charge des fonctions lambdas, produisant de fait un code concis ;
- l’utilisation d’un typage avancé, pour une meilleure prévention des erreurs ;
- une forte interopérabilité avec le langage Java, et donc une bonne intégration de cet écosystème.
Les différences
Si les points communs entre Kotlin et Scala sont techniquement très importants, ils se différencient cependant sur d’autres aspects :
- Kotlin est plus facile à apprendre, lorsque l’on vient de Java, notamment, car il a été conçu autour de son interopérabilité avec ce langage ;
- bien qu’ils possèdent tous les deux un typage fort, celui de Kotlin est plus strict, notamment sur la nullité ;
- Kotlin est un langage plus concis que Scala ;
- Scala est plus adapté que Kotlin lors de l’utilisation du la programmation fonctionnelle.
Scala vs Kotlin : le comparatif
Nous venons de le voir, Scala et Kotlin ont autant de points communs que de différences. Aussi, pour les différencier et choisir le langage le plus adéquat pour votre projet, il est essentiel de rentrer un peu plus en détail dans ces langages, en comparant avantages et inconvénients de chaque techno.
Scala : ses avantages et inconvénients
Les avantages
Parmi les principaux avantages de Scala, il y a avant tout sa communauté. Étant un langage plus ancien que Kotlin (il est de 7 ans l’aîné de ce dernier), il a – pour le moment – plus d’adeptes. Cela signifie qu’il sera plus facile de trouver de l’aide lorsque l’on code en Scala.
Scala, comme son nom l’indique, permet d’écrire du code plus évolutif. La raison de cela est sa prise en charge des types abstraits, des classes de type, des fonctions d’ordre supérieur et des expressions lambdas.
Ce langage possède également une bibliothèque standard plutôt riche, ce qui lui permet d’être nativement efficace en ce qui concerne la manipulation de données et la concurrence entrée/sortie.
Les inconvénients
Bien que présentant de nombreux avantages, Scala n’est pas dénué d’inconvénients !
Il a par exemple une courbe d’apprentissage plutôt raide, notamment à cause de ses nombreuses fonctionnalités avancées. Ces dernières font donc tout autant sa force que sa faiblesse.
De même, son style de codage expressif (ou sa syntaxe) le rend parfois difficile à lire pour un développeur freelance pas encore habitué au langage.
Kotlin : ses avantages et inconvénients
Les avantages
Kotlin est considéré comme un langage pragmatique, facile à apprendre et à utiliser, surtout lorsque l’on vient du monde Java.
De par son typage fort, notamment sur la vérification de la nullité, ce langage est fiable, robuste, et prévient beaucoup d’erreurs syntaxiques.
Cette techno est réputée pour être rapide, et est en général légèrement plus performante que son concurrent Scala.
L’interopérabilité entre Kotlin et Java est plus forte que celle entre Scala et Java. De fait, il est plus simple de travailler avec des bibliothèques Java dans cette techno.
Kotlin étant le langage de programmation officiel Android, un codeur cherchant à développer ses compétences vers du développement mobile fera un meilleur choix en s’orientant vers ce langage.
Les inconvénients
L’évolutivité des applications créées avec Kotlin est un peu plus limitée que celles développées avec Scala. La cause en est une programmation fonctionnelle moins avancée chez le langage JetBrains.
La communauté Kotlin n’est pas la plus mature qui existe, et elle concerne en grande partie le développement d’applications Android. Cela a pour conséquence un nombre limité de bibliothèques tierces, mais aussi un support technique moindre.
Conclusion : quel langage JVM choisir ?
Nous venons de le voir, il y a de nombreuses différences techniques qui pourraient vous pousser à choisir l’un plutôt que l’autre.
Cependant, et comme pour tout choix de stack technique, il y a plusieurs facteurs subjectifs à prendre en compte pour choisir le bon langage JVM.
Ces critères sont subjectifs, car ils dépendent de chaque produit à développer, et de chaque équipe, voire de chaque développeur.
Par exemple, si le projet nécessite une forte programmation fonctionnelle, une forte scalabilité, Scala sera un meilleur choix. De même, si le projet est complexe et nécessite l’appui de la communauté entourant la techno, ce langage semble être un choix plus judicieux.
En revanche, certains facteurs peuvent faire de Kotlin le choix idéal. C’est notamment le cas si vous devez faire passer les performances avant tout, ou si le besoin en compatibilité avec Java est primordial.
Enfin, tout choix technique doit aussi se faire en fonction de l’équipe de développement, des technologies que les développeurs maîtrisent déjà, et de ce vers quoi ils veulent se diriger vers la suite.