Kotlin, le renouveau de Java ?

Pourquoi et comment un produit, dont Google n'est même pas l'auteur, peut-il provoquer autant d’engouement chez les développeurs Android ? Le point.

"One More Thing", c’est par la célèbre phrase de Steve Jobs que Stephanie Saad Cuthbertson, Product Manager chez Android, conclut son intervention lors de la conférence du Google/io 2017 qui s’est tenue le 17 mai 2017 à Mountain View. Après avoir prononcé ces trois mots, elle annonce l'officialisation du support du langage Kotlin pour la plateforme Android. S'ensuit une explosion de joie dans l'amphithéâtre qui se propage massivement sur les réseaux sociaux. Pourquoi et comment un produit, dont Google n'est même pas l'auteur, peut-il provoquer autant d’engouement ?

La genèse d’un langage très prometteur

Revenons d’abord sur son avènement. En 2010, l’éditeur Jetbrains se trouve face à un dilemme : ses logiciels sont développés exclusivement en Java, mais le langage s’avère de moins en moins adapté à leur désir d’expansion. Jetbrains a besoin d’un langage plus productif et moins contraignant. Les langages alternatifs de l'époque n'ayant pas les fonctionnalités recherchées par les développeurs de chez Jetbrains, ils décident de créer leur propre langage, qu'ils présenteront pour la première fois en juin 2011 lors de la conférence JVM Language Summit. Ce sera les prémisses de Kotlin.

Ce nouveau langage de programmation créé par Jetbrains permet d’exprimer une même intention, en utilisant moins de mots-clés et de caractères que Java, sans pour autant perdre en clarté et en compréhension. Un code produit avec Kotlin est plus compact, plus expressif et moins sujet à certaines erreurs de programmation que ne peut l’être Java. Il est par ailleurs aussi rapide que Java à l'exécution, ainsi qu’à la compilation.

Un besoin de renouveau

Les développeurs Android font face aux mêmes contraintes que Jetbrains : ils se sentent limités par la version de Java que leur impose Google. Ils passent trop de temps « à penser code » et pas suffisamment « produit » et nouvelles fonctionnalités. D’autant que la dernière version de Java, la 8, tarde à arriver dans l'écosystème Android, avec son lot de promesses et de nouveautés pour aider les développeurs à produire avec plus d’efficacité.

Si Java 8 est déjà disponible sur d'autres plateformes, Google tarde à l'implémenter sur Android, sûrement refroidi par l’affaire qui l’a opposé à Oracle sur son utilisation des APIs Java dans le cadre de la conception de sa machine virtuelle Dalvik. Certains développeurs Android, frustrés de ne pas pouvoir profiter de cette dernière version, commencent à se tourner de plus en plus vers Kotlin, au moment où Jetbrains rend son langage compatible avec la plateforme mobile de Google.

Tous les développeurs Android n'osent cependant pas encore sauter le pas : pour certains, utiliser Kotlin dans sa base de code représente un risque qu'ils ne sont pas prêts à prendre, car, avant la récente annonce de la Google I/O 2017, il n'était pas supporté officiellement. 

Une rumeur persistante allait même jusqu’à dire que Swift, le langage porté par Apple, serait le prochain langage d'Android. Le futur n'aura pas finalement donné raison à cette rumeur...

L’officialisation par Google du support Kotlin sur Android lève toutes les barrières et les craintes qui empêchaient un grand nombre de développeurs d’adopter ce langage.

La conquête de nouveaux marchés

Jetbrains est l’une des rares sociétés qui ne soit pas implantée dans la Silicon Valley et qui pourtant joue au coude à coude avec les plus gros acteurs du monde informatique. La société a récemment présenté sa feuille de route pour l’évolution de son langage : assurer la compatibilité avec la Java Virtual Machine (JVM) et avec la plateforme Android, rendre la compilation de Kotlin en Javascript possible, et dernièrement, permettre la compilation de code Kotlin, en code natif, une fonctionnalité qui permettrait de se passer de machine virtuelle. Grâce à ces évolutions, Jetbrains veut imposer son nouveau langage dans différents écosystèmes : sur la JVM, Android, le web et maintenant les plateformes dites « natives ».

Microsoft, qui édite Typescript, un langage compilant vers Javascript, gagnera peut-être sur le terrain du web. Mais si Jetbrains fait compiler Kotlin nativement pour différentes plateformes, c’est dans le but, entre autres, de cibler les smartphones d'Apple. Reste à savoir si la marque à la pomme laissera ses développeurs se faire séduire par Jetbrains ?

Tous ces projets semblent en tout cas gagner du terrain, quand Oracle semble en perdre. Java 7 est sorti avec du retard, en étant amputé de fonctionnalités majeures. Java 8 a dû lui-même être retardé pour permettre à Oracle de corriger en priorité des soucis avec Java 7. Java 9 n’est toujours pas sorti ; quant à Java 10, il est censé inclure de nouvelles fonctionnalités qui existent déjà dans beaucoup d'autres langages tels que Scala et bien évidemment, Kotlin.

Si Java reste le langage roi sur les JVM serveurs et si la sortie de Java 8 a redoré le blason d'Oracle en lui insufflant une nouvelle dynamique, cette inertie dans l’évolution du langage persiste et risque de réduire considérablement ses parts de marché à l’avenir.

Le langage Scala avait déjà tenté une percée profitant du retard de Java 8. Mais c'est Kotlin qui risque de lui porter le coup fatal, d’autant que la vraie pépite d'Oracle n'est pas le langage Java, mais bien sa machine virtuelle. Oracle pourrait laisser la concurrence détrôner son propre langage pour focaliser ses équipes sur le développement de sa machine virtuelle... Certains acteurs tels que Pivotal avec son framework Spring, qui est massivement utilisé dans les applications Java serveur, laisse la porte ouverte à un tel changement : la prochaine version de son framework sera compatible d’ailleurs avec Kotlin.  

La mort de Java ?

L'officialisation par Google du langage Kotlin est une garantie que certains développeurs Android attendaient de pied ferme. Mais c'est peut-être aussi le début d'une nouvelle ère qui s'annonce pour tous les autres développeurs utilisant la JVM d'Oracle. Son langage roi, Java, se fera-t-il détrôner par Kotlin ? Le futur nous le dira, mais la route semble déjà toute tracée.