Kotlin va-t-il tuer le langage Java ?

Kotlin va-t-il tuer le langage Java ? Android supporte désormais officiellement le nouvel environnement de développement aux côtés de la technologie d'Oracle. Quels sont ses principaux points forts ?

A l'occasion de la dernière Google I/O, sa conférence annuelle à destination des développeurs, qui se tenait en mai dernier, Google a annoncé le support officiel du langage Kotlin dans Android. La décision a été accueillie par un tonnerre d'applaudissements. Il est vrai que Kotlin était déjà de fait pris en charge par l'OS mobile, mais cette décision tend à rassurer la communauté des développeurs. Elle traduit en effet une volonté claire de Google de pérenniser la présence de ce langage sur sa plateforme aux côtés de Java. "Même s'il ne l'avoue pas officiellement, il est assez clair qu'avec Kotlin Google entend pousser Java vers la sortie", affirme David Wursteisen, consultant au sein de la société de services française Soat.

Un environnement "industriel"

C'est que Kotlin propose une approche pour le moins séduisante. Publié en open source (sous licence Apache 2.0), il s'agit d'un langage très flexible, à la fois orienté objet et fonctionnel - reposant sur un typage statique. Comparé à son grand frère Java, Kotlin se traduit par une sémantique nettement moins verbeuse. Au sein de sa syntaxe, il intègre divers dispositifs pour rendre son expression concise (inférence de type, disparition des NullPointerException, déclarations destructurées…). "Via un mécanisme de méthode d'extension, vous pouvez par exemple compléter des API sans avoir à modifier les objets sous-jacents", note le consultant de Soat.

Une compatibilité complète avec Android

A la différence de beaucoup d'autres langages de programmation, Kotlin n'est pas issu du monde universitaire, mais de l'industrie. Il est développé depuis 2011 par l'éditeur de logiciels tchèque JetBrains. "D'où son approche très efficace", estime Arnaud Dupuis, CTO et co-fondateur de Genymobile, société à l'initiative du célèbre émulateur Android open source Genymotion. "Kotlin est une alternative intéressante à Java qui, lui, reste lourd, verbeux, et mal conçu, même si sa dernière version (Java 8 ndlr) introduit beaucoup d'améliorations et de simplifications."

Dans cette logique industrielle, Kotlin a par ailleurs été dessiné pour être pleinement compatible avec Java. Compilable pour la JVM (la machine virtuelle Java), "un composant Kotlin pourra être appelé depuis du code écrit dans ce langage, mais l'inverse sera aussi possible", précise David Wursteisen. Un pont qui contribue du même coup à faciliter les migrations d'application d'un langage à l'autre.

Un outillage riche                                                             

Kotlin est-il facile à prendre en main ? Pour peu de maîtriser déjà Java, C# ou Scala, "ce langage pourra s'apprendre en quelques heures en lisant la documentation de référence", estime Arnaud Dupuis. "L'environnement laisse libre de s'orienter vers un développement fonctionnel ou orienté objets. C'est très pratique. Sans compter qu'il est aisé de migrer tout ou partie d'une application Java existante vers Kotlin. En plus, il ne sera pas nécessaire de modifier les processus de revue de code. Au final, il y a par conséquent très peu de risques à adopter Kotlin, sachant que JetBrains a tout intérêt à continuer à investir dedans dans le cadre du développement de son IDE."

Côté outillage, Kotlin n'arrive pas les mains vides. JetBrains propose un éditeur de code Java (IntelliJ IDEA), bénéficiant d'une excellente notoriété, qui est doté d'un plugin Kotlin. L'environnement de développement officiel de Google (Android Studio) étant lui-même basé sur cet IDE, il supporte donc lui-aussi nativement le langage de JetBrains. Des extensions Kotlin existent en outre pour les principaux IDE Java (Eclipse et Netbeans). Tout comme pour les logiciels de build Maven ou Gradle. Et côté framework, Spring commence à prendre le chemin de Kotlin.

"En matière d'analyseurs de code en revanche, il y a pour l'instant peu de solutions adaptées. Quelques extensions Kotlin pour SonarQube commencent tout juste à être partagées sur GitHub", constate David Wursteisen. Enfin, Kotlin étant compatible avec la JVM, les outils de simulation utilisés habituellement par les programmeurs Java continueront bien sûr de fonctionner.

Un langage encore jeune

Notons que Kotlin peut aussi être compilé en JavaScript, ce qui lui ouvre la porte des navigateurs. "JetBrains a récemment annoncé la possibilité de compiler Kotlin en natif. Ce qui devrait faciliter son ouverture, à terme, à d'autres types de runtime, et pourquoi pas iOS", pointe David Wursteisen. Arnaud Dupuis pondère : "Kotlin suscite l'intérêt sur Android dans la mesure où, au-delà de ses qualités intrinsèques, il est compatible avec ce système d'exploitation, ainsi qu'avec les principaux outils de développement Java existants. Du côté d'iOS, la situation est bien différente. Il existe un vaste écosystème déjà en place sur ce terrain, très captif, qui ne pourra pas être bousculé si facilement."

Reste à savoir si Kotlin pourra, à terme, venir véritablement supplanter le développement d'applications Java sur Android. "Il faudrait pour ce faire que tout le code d'Android soit réécrit en Kotlin. Cela permettrait d'aboutir à une exécution native et 100% optimisée de Kotlin sur l'OS de Google, comme c'est le cas avec Java aujourd'hui", souligne Arnaud Dupuis. Kotlin pourrait-il par ailleurs venir concurrencer Java dans les systèmes d'entreprise, un domaine où le langage d'Oracle est également très présent. "Tout va dépendre de l'adoption de Kotlin par l'écosystème Java dans son ensemble, et notamment son intégration à d'autres frameworks. Il faudra aussi observer comment Oracle va réagir, avec Java 9 et 10", indique David Wursteisen. Et Arnaud Dupuis de conclure : "N'oublions pas que Kotlin reste jeune, et sa communauté de développeurs encore relativement petite."