BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Actualités La Feuille de Route vers Kotlin 1.1

La Feuille de Route vers Kotlin 1.1

Le développement de Kotlin s'approche de la version 1.1. Le concepteur principal de Kotlin, Andrey Breslav, a détaillé la feuille de route de la nouvelle version du langage de JVM de JetBrains, qui incluera de nouvelles fonctionnalités majeures du langage.

Kotlin 1.1 fournira un certain nombre de nouvelles fonctionnalités :

  • Les alias de type sont censés être un mécanisme d'abbréviation pour des déclarations de type plus longues, comme les signatures de fonction ; les alias de type n'introduiront pas de nouveaux types et peuvent être utilisés de manière interchangeable avec la définition originale.
  • Les références de méthode contrainte seront étendues pour supporter le référencement d'un membre d'un objet. De cette manière, vous pouvez prendre une référence à la méthode equals de l'objet String et l'affecter à un prédicat pour l'utiliser plus tard : val p:Predicate<String> == "foo"::equals. Kotlin 1.0.x supporte déjà cela pour les types.
  • Les propriétés déléguées seront autorisées au niveau du fichier, dans une classe ou dans une fonction :

    fun foo() {
      val lazyBar by lazy { ... }
      while (...) {
        if (...) {
          lazyBar.doBaz()
          ...
        }
      }
    }
    
    Les propriétés déléguées sont un mécanisme pour implémenter une fois pour toute certains types de propriété comme le chargement à la demande, les observables et les propriétés stockées dans des dictionnaires de sorte qu'elles ne doivent pas être implémentées à chaque fois.
  • Les classes de données supporteront l'héritage, rendant par la même possible le fait qu'une classe de données dérive d'une autre. Les classes de données sont des classes qui ne font que porter des données et pour lesquelles Kotlin génère des accesseurs, equals, hashCode et d'autres méthodes répandues. Cela rendra également possible d'étendre une classe de données depuis l'intérieur d'une classe sealed :

    sealed class C() {
      data class Example(...) : C()
    }
    
  • La décomposition permettra d'assigner des noms composés aux arguments d'une lambda comme dans l'exemple suivant, où l'argument du forEach - une paire, est décomposé en ses deux composants :

    myMap.forEach {
      (k, v) ->
        println(“$k => $v”)
    }
    
  • Les coroutines fourniront la colonne vertébrale du comportement asynchrone de Kotlin. D'après Breslav, les coroutines sont plus générales que le modèle async/await introduit en C# 5. Kotlin fournira également async/await mais construit à partir des coroutines, pas comme des primitives.

    fun loadImage(url: URL) = async {
      val bytes = await(loadBytes(url))
      bytesToImage(bytes)
    }
    

Du côté de l'outillage, Kotlin 1.1 incluera un support direct pour les fonctionnalités de Java 8/9, comme la génération de méthodes par défaut. De plus, la partie JavaScript sera mise à niveau avec l'ensemble actuel des fonctionnalités du langage.

Le développement de Kotlin est conduit par le Processus d'Evolution et d'Amelioration de Kotlin (KEEP) basé sur un dépôt GitHub où l'intégralité des cas d'utilisation est décrite.

Kotlin 1.1 sera compatible au niveau source et binaire avec les versions précédentes, ce qui veut dire que les nouvelles versions du compilateur Kotlin ne casseront pas la compatibilité avec des binaires et du code source plus ancien.

Evaluer cet article

Pertinence
Style

Contenu Éducatif

BT