Suite à diverses expérimentations ainsi qu’une présentation lors du Mix-IT 2016 à Lyon, voici un rapide coup d’oeil sur le nouveau langage de programmation de JetBrains : le dénommé Kotlin.

Kotlin est un langage de programmation compatible Java. Il génère du bytecode Java ou, et c’est expérimental, du Javascript.

Compatible Java 6, il apporte la programmation fonctionnelle ainsi qu’une syntaxe compacte et moins verbeuse que Java. Les développeurs Javascript ou Scala l’apprécieront pour ça.

Son auteur : JetBrains

Kotlin est développé par JetBrains et utilisé pour maintenir et faire évoluer les IDE de l’entreprise (IntelliJ IDEA, WebStorm, PhpStorm, etc).

Il est là pour durer et est pensé et développé par des confrères, et non des universitaires parfois loin des réalités du métier.

Avantages de Kotlin

– Programmation fonctionnelle.

– Inférence de types (comme en Javascript, on peut écrire : val foo = “bar”).

– Pas de Null.

Surcharge d’opérateurs. Les développeurs C++ connaissent déjà tout le potentiel de cette fonctionnalité.

– Javadoc en Markdown.

– Programmation asynchrone (très proche des Promesses) via une lib, cela peut nous éviter d’utiliser une lib comme RxJava.

– Syntaxe peu verbeuse (déclarations plus courtes, pas d’accesseurs, etc).

– Compatible Java, les deux langages peuvent aussi cohabiter (comme avec Groovy) : la migration est facilitée.

– Conversion Java vers Kotlin possible et assistée (quasi-automatique).

– Génère du bytecode compatible Java 6 : intéressant si l’on est bloqué avec un JRE6 ou 7 sur la plateforme cible.

Inconvénients de Kotlin

– Comme en Javascript, Scala ou avec les Lambda de Java 8, il est facile de générer du code difficile à relire (abuser des fonctions anonymes, chaînages et big-arrows). Les experts ES6 ou AngularJS devraient toutefois savoir gérer ce point.

– Encore des bugs avec Spring Framework !

– S’il est aisé de démarrer un projet en Kotlin, la cohabitation Java + Kotlin n’est pas assez documentée. Par exemple, un projet Maven devra décrire deux phases de compilation : d’abord Kotlin puis Java, mais je peine à trouver un POM de démo qui fonctionne correctement.

– Kotlin n’a plus grand chose pour lui si l’on utilise Java 8/9 + des libs comme Lombok : on a les lambdas de Java et Lombok nous permet d’écrire moins de code.

– Des comportements par défaut gênants. Ex : les classes sont finales, on met donc un terme à l’héritage. Aussi, tous les champs ont par défaut des accesseurs publics.

– Le bytecode généré ne tire pas toujours partie des avancées de Java 7 et 8 en terme de performance et compacité (ex : pas de Lambdas).

Projet jeune, les librairies codées en Kotlin sont trop rares (je n’en connais qu’une, qui apporte l’équivalent des Promise).

– Programmation fonctionnelle pas aussi poussée qu’en Scala.

– La compilation vers Javascript est expérimentale et, hélas, JetBrains n’a pas l’intention d’aller plus loin. Fonctionnalité à oublier donc.

– Assez peu de documentation, et aucun guide dispensant les bonnes pratiques.

– Il vaut mieux utiliser IntelliJ IDEA ou Android Studio. Il existe un plugin Eclipse mais il est peu sophistiqué. NetBeans n’est pas supporté pour l’instant.

– Certaines conversions ne sont plus automatiques. Par exemple, il faut déclarer explicitement la conversion de « int » vers « long ».

En conclusion, quand et comment utiliser Kotlin ?

Kotlin peut être intéressant pour moderniser un projet bloqué sur une plateforme Java 6, mais pas sur du Java 8/9 + Lombok. Notons aussi les soucis de compatibilité avec Spring, point bloquant pour bien des applications web.

Les développeurs Javascript pourront aussi se laisser séduire et l’utiliser sur des développements Android.

Les applications graphiques sont aussi de bonnes candidates pour une migration vers Kotlin. Les mécanismes de programmations asynchrones sont particulièrement adaptés à l’EDT de Swing. Après tout, ce n’est pas pour rien si les IDE de JetBrains (basés sur Swing) ont entamé la migration. Serait-ce là ce qui a motivé la création de Kotlin ?

Enfin, Kotlin bénéficie d’un effet de mode comme cela a été le cas pour Scala et Groovy, mais ceci risque de passer, d’autant que si Scala est fortement lié à des frameworks d’importance tels Akka et Play Framework (et Groovy à Gradle, Grails ou encore Griffon), Kotlin vient seul. L’avenir nous dira si une communauté se créera autour du langage.

Mots clés

Découvrez nos préstations en régie ou au forfait

Audit, conseil, AMOA, AMOE, bases de données XML, solutions éditoriales, sites Responsive Web Design, ...

Nous consulter !
Découvrir !

Archives

Étiquettes

Mots clés