Kotlin 1.2 est arrivé

Cet article est la traduction du post officiel de Jetbrains (à leur demande). Quand il est indiqué «nous», il s’agit de Jetbrains ;-).

Nous publions aujourd’hui Kotlin 1.2. C’est une nouvelle version majeure et une grande avancée vers notre objectif de permettre l’utilisation de Kotlin dans tous les composants d’une application moderne.

Avec Kotlin 1.1, nous fournissions le support officiel de Javascript comme cible de déploiement, permettant ainsi de compiler Kotlin en JS pour une exécution dans le navigateur. Avec Kotlin 1.2, nous ajoutons la possibilité de partager le code entre la JVM et Javascript. Vous pouvez désormais écrire une seule fois la logique métier de votre application et la réutiliser dans toutes les couches de votre application — le backend, un navigateur frontend et une application mobile Android. Nous travaillons également sur des librairies favorisant la réutilisation du code, comme une librairie cross-platform de sérialisation.

Kotlin 1.2 est inclus dans IntelliJ IDEA 2017.3 (également publié cette semaine). Si vous utilisez Android Studio ou une version précédente d’Intellij IDEA, vous pouvez installer la nouvelle version depuis la fenêtre de dialogue disponible sous Tools | Kotlin | Configure Kotlin Plugin Updates.

Cette version s’appuie sur de nombreuses contributions extérieures, et nous remercions toutes les personnes qui ont transmis des retours, créé des bugs, et tout spécialement celles qui ont soumis des pull requests.

Projets Multiplatforme

Un projet multiplatforme vous permet de construire plusieurs couches de votre application — backend, frontend et App Android — depuis la même base de code. Ce type de projet contient à la fois des modules communs, qui contiennent du code indépendant de la plateforme, et des modules plateformes, qui contiennent le code spécifique à une plateforme (JVM ou JS) et peuvent utiliser des librairies de cette plateforme. Pour appeler du code plateforme depuis un module commun, vous pouvez ajouter la déclaration expected — tous les modules plateformes devront alors fournir une implémentation actual.

Pour plus d’information sur cette fonctionnalité, merci de vous référer à la documentation.

Nous travaillons également sur une série de librairies communes pour vous permettre de déplacer plus de code vers des modules communs:

  • kotlin.test, inclus par défaut dans Kotlin 1.2, vous permet d’écrire vos tests une seule fois et de les exécuter à la fois dans la JVM et en JS;
  • kotlinx.html supporte un rendu isomorphique — le même code produit du HTML en backend et en frontend;
  • kotlinx.serialization permet de facilement sérialiser vos objets Kotlin entre les différentes couches de votre application, en utilisant JSON ou ProtoBuf comme format de sérialisation.

Performances de compilation

Durant le développement de la 1.2, nous avons beaucoup travaillé à optimiser les performances du compilateur. Nous avons déjà amélioré les temps de compilation de 25% par rapport à Kotlin 1.1, et nous envisageons d’autres améliorations significatives qui seront livrées lors de mises à jour 1.2.x.

Le graphique ci-dessous montre la baisse du temps de compilation de deux projets importants de Jetbrains construits avec Kotlin:

Autres améliorations du langage et de la librairie

Nous avons également réalisé des améliorations ciblées du langage et de la librairie standard:

Le support de lateinit sur les propriétés top-level et les variables locales, ainsi que la vérification de l’initialisation effective d’une variable lateinit;

  • Des smart casts plus évolués et une amélioration de l’inférence de type dans certains cas;
  • La compatibilité de la librairie standard avec les restrictions de séparation de package introduites par Java 9;
  • Un nouveau package kotlin.math dans la librairie standard;
  • De nouvelles fonctions dans la librairie standard pour travailler avec les séquences et les collections, comprenant notamment une série de fonctions pour séparer une collection ou une séquence en plusieurs groupes de taille définie.

Pour plus d’information et d’exemples de code, merci de vous référer à la page de la documentation What’s New in Kotlin 1.2.

Kotlin de par le monde

Depuis la publication de Kotlin 1.1 en mars de cette année, l’adoption de Kotlin a connu une croissance très importante dans le monde. Le point culminant de cette année a été KotlinConf, notre première conférence internationale, avec environ 1200 participants se rassemblant à San Francisco les 2 et 3 novembre. Nous avons enregistré toutes les présentations, et les vidéos sont disponibles sur le site de la conférence.

Kotlin est désormais un langage officiellement supporté pour le développement Android, avec un support inclus dans Android Studio 3.0, ainsi que des exemples officiels et un guide de style de code publié par Google. Résultat : Kotlin est déjà utilisé dans plus de 17% des projets sous Android Studio 3.0, dont les apps des startups les plus actives et des entreprises du palmarès Fortune 500.

Du côté serveur, Spring Framework 5.0 a été publié avec de nombreuses fonctionnalités de support de Kotlin, et Vert.x supporte Kotlin depuis la publication de la version 3.4.0. Par ailleurs, Gradle est désormais fourni avec le support d’un DSL Kotlin, et le Gradle Kotlin DSL project s’approche rapidement de la publication de sa version 1.0.

Le nombre de lignes de code open-source en Kotlin sur GitHub dépasse désormais 25 millions. Sur StackOverflow, Kotlin est à la fois l’un des langages qui présente la plus grande progression et le moins d’opposition.

La communauté grandissante autour de Kotlin est également étonnante. Il existe plus de 100 groupes utilisateurs dans le monde, et tant de présentations que nous avons du mal à garder la trace de toutes — mais pour celles dont nous avons la connaissance, la carte des présentations vous donne une très bonne idée de la diffusion très large de Kotlin.

Pour ceux qui commencent juste leur apprentissage de Kotlin, il existe un nombre croissant de livres (incluant notre propre “Kotlin in Action”, maintenant disponible en Anglais, Russe, Japonais, Chinois et Portugais), de cours en ligne, de tutoriels et d’autres ressources.

Discutez avec l’équipe

Pour partager avec vous plus d’information sur cette nouvelle version, nous prévoyons d’animer un webinar sur les projets multiplateforme avec Kotlin 1.2 le 7 décembre 18 CET. Inscrivez-vous, les places sont limitées.

L’équipe Kotlin mènera également un AMA (Ask Me Anything) sur le Reddit Kotlin le 5 décembre. Nous commencerons à midi CET, et serons présents pour vous répondre durant les 24 heures qui suivront.

Comment passer à kotlin 1.2

Comme toujours, vous pouvez essayer Kotlin en ligne at try.kotlinlang.org.

  • Sous Maven, Gradle et npm: Utilisez 1.2.0 comme numéro de version pour le compilateur et la librairie standard. Accédez à la documentation ici.
  • Sous IntelliJ IDEA: la version 2017.3 contient Kotlin 1.2. Pour les versions précédentes installez ou mettez à jour le plugin Kotlin plugin à la version 1.2.
  • Sous Android Studio: Installez ou mettez à jour le plugin depuis Plugin Manager.
  • Sous Eclipse: installez le plugin en utilisant Marketplace.
  • Le compilateur en ligne de commande peut être téléchargé depuis la page Github de la version.

Compatibilité. En Kotlin 1.2 le langage et la librairie standard assurent la compatibilité ascendante (modulo les bugs): tout ce qui compilait et s’exécutait en versions 1.0 et 1.1 continuera de fonctionner avec la version 1.2. Pour aider les équipes de taille importante à effectuer la mise à jour de leur code progressivement, nous fournissons des options de compilateur qui désactivent les nouvelles fonctionnalités. Voici un document qui couvre les écueils possible.

Have a nice Kotlin!

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.