Data Science Early Access Program IntelliJ IDEA Releases

Découvrez Kotlin Notebook

Read this post in other languages:

La première version expérimentale du plugin Kotlin Notebook pour IntelliJ IDEA est disponible ! Dans cet article, nous vous présentons les fonctionnalités et cas d’utilisation du plugin, dont vous pouvez aussi découvrir les avantages dans cette vidéo :


Qu’est-ce que le plugin Kotlin Notebook ?

Un notebook est un outil interactif qui permet de combiner du code, des visualisations et du texte dans un seul document. Les notebooks permettent d’écrire et d’exécuter des extraits de code (cellules), de visualiser les résultats et de documenter votre processus de développement au même endroit.

Les notebooks sont déjà largement utilisés pour le prototypage rapide, l’analyse de données et la science des données. Le plugin Kotlin Notebook permet de tirer parti de la puissance du développement interactif dans IntelliJ IDEA, en associant la prise en charge native du langage Kotlin par l’IDE aux capacités de visualisation polyvalentes des navigateurs.

Examinons plus en détail les aspects techniques pour voir ce que ce plugin peut faire et comment il fonctionne.

Installation

Vous pouvez installer le plugin depuis notre Marketplace dans l’onglet Settings | Plugins d’IntelliJ IDEA Ultimate. Pour l’utiliser, vous devez disposer de la version 2023.1.2 d’IntelliJ IDEA ou d’une version ultérieure. Il est possible d’installer le plugin sur des versions plus anciennes, mais avec un risque d’instabilité.

Pendant le processus d’installation, vous verrez une invitation d’installation du plugin Python, que vous devez accepter. Pas d’inquiétude, cela n’installera pas Python sur votre poste de travail, c’est juste que Kotlin Notebook a quelques dépendances sur les composants de l’interface utilisateur situés dans le plugin Python. Il est prévu que nous supprimions ces dépendances prochainement.

Veuillez noter que le plugin Kotlin Notebook fonctionne uniquement dans IntelliJ IDEA Ultimate actuellement.

Se familiariser avec Kotlin Notebook

Après avoir installé le plugin, vous serez prêt à créer votre premier notebook. Fondamentalement, un notebook est juste un fichier sur un disque, il peut donc être créé n’importe où dans la vue Project avec l’action New | Kotlin Notebook.

Un fichier avec l’extension .ipynb sera créé. Si vous connaissez les notebooks Jupyter, vous connaissez sans doute aussi cette extension. En interne, les notebooks Kotlin suivent la même structure, le même format et le même protocole, ces fichiers peuvent donc être consultés sur Github ou dans des notebooks Jupyter ou JupyterLab si le noyau Kotlin est installé. 

Une fois créé, le notebook ne contient qu’une cellule vide. Les cellules sont les principaux éléments de construction des notebooks et peuvent contenir aussi bien du code que du texte. Pour exécuter une cellule de code, il suffit de la sélectionner et de cliquer sur le bouton Run ou d’utiliser le raccourci Maj + Entrée. Le code sera exécuté et toute sortie ou erreur sera affichée sous la cellule.

Vous pouvez également écrire du texte dans les cellules Markdown, car elles prennent en charge les options de formatage enrichi telles que les en-têtes, les listes, les liens, le langage LaTeX et les images. Pour afficher une cellule Markdown et voir le texte formaté, il suffit de l’exécuter de la même manière qu’une cellule de code.

Les notebooks offrent un workflow interactif et itératif. Vous pouvez exécuter les cellules dans l’ordre que vous voulez, modifier le code ou le texte, déclarer et redéclarer des variables, et réexécuter les cellules pour voir les résultats mis à jour. Cela favorise l’expérimentation, le prototypage et la documentation de votre travail.

Pour juger par vous-même des avantages de l’utilisation des notebooks pour les commentaires du code et sa documentation, nous vous invitons à télécharger et examiner ce notebook. Il illustre tous les aspects des notebooks Kotlin abordés dans cet article pour vous permettre d’allier théorie et pratique.

Exemple de notebook

Commencer à utiliser un notebook est encore la meilleure façon de se familiariser avec les notebooks ! ;-)

Sorties

L’une des caractéristiques clés des notebooks est qu’ils prennent en charge différents types de sorties :

  • Texte : il s’agit de la sortie la plus simple, qui comprend des déclarations imprimées, des valeurs de variable ou toute sortie textuelle provenant de votre code. Si le résultat d’une cellule ne rentre dans aucune des catégories ci-dessous, il sera imprimé au format texte via la méthode toString().
  • HTML : les notebooks Jupyter peuvent restituer du HTML directement, ce qui permet l’utilisation du format de texte enrichi et de tableaux, et même l’intégration de sites web.
  • Image : des images statiques peuvent être affichées en format PNG, JPEG et SVG, par exemple. Les résultats de type BufferedImage sont également pris en charge. Ces images peuvent provenir de fichiers, de graphiques générés ou de tout autre support visuel.
  • Texte enrichi : les cellules Markdown produisent une sortie HTML au format texte enrichi qui prend notamment en charge les listes, les styles de police et les blocs de code.
  • LaTeX : les formules et les équations mathématiques peuvent être restituées de façon très esthétique avec LaTeX, un système de composition de documents très utilisé dans le milieu universitaire.
  • Erreurs et traçage : si le code contient des erreurs, les notebooks affichent un message d’erreur et un traçage avec des informations utiles pour le débogage.

Dépendances des notebooks

Il est également important de tenir compte des dépendances de votre notebook. Naturellement, il est possible d’utiliser la bibliothèque standard, mais cela n’est pas suffisant généralement. Plusieurs options s’offrent à vous :

  • Vous pouvez utiliser les dépendances de votre projet afin que votre notebook ait accès aux mêmes classes.
  • Il est possible d’utiliser les classes et d’autres entités de votre projet dans le notebook. Mais dans ce cas, le projet est examiné pour vérifier s’il y a eu des modifications et recompilé si nécessaire avant l’exécution de chaque cellule.
  • Vous pouvez charger l’une des bibliothèques du dépôt Maven en spécifiant ses coordonnées avec une syntaxe de type Gradle dans n’importe quelle cellule.
USE {
  repositories {
  maven {
    url = "https://my.secret.repo/maven/"
    credentials {
      username = USER
      password = TOKEN
    } 
  }
  dependencies {
    val ktorVersion = "2.0.3"
    implementation("my.secret:artifact:1.0-beta")
    implementation("io.ktor:ktor-client-core-jvm:$ktorVersion")
    implementation("io.ktor:ktor-client-apache-jvm:$ktorVersion")
  }
}
  • Vous pouvez également utiliser la version plus courte via l’annotation DependsOn :
@file:DependsOn(“io.ktor:ktor-client-core-jvm:$ktorVersion“)
  • Se rappeler des coordonnées Maven et les trouver peut être fastidieux. Afin de simplifier ce processus, nous avons introduit une méthode de chargement intelligente et pratique des bibliothèques les plus courantes. Utilisez simplement la commande magique %use suivie par le nom d’une ou plusieurs bibliothèques.

Lorsque l’instruction %use est exécutée, non seulement elle télécharge les dépendances de la bibliothèque, mais elle ajoute aussi des importations par défaut au notebook. De plus, elle enregistre les générateurs de rendu pour les types de bibliothèques et fournit différentes fonctionnalités, dont nous parlerons dans la section suivante.

Intégrations de bibliothèques

Les notebooks Kotlin offrent de nombreuses possibilités d’intégration de bibliothèques.

Pour les utilisateurs, en bénéficier est aussi simple que d’ajouter une ligne de code :

%use libraryName

Pour les créateurs de bibliothèques, cette commande présente de nombreux avantages et leur permet:

  • De télécharger les fichiers binaires de bibliothèques à partir de n’importe quel référentiel Maven.
  • D’inclure les importations initiales.
  • D’exécuter du code pendant l’initialisation.
  • D’exécuter du code avant et après chaque exécution de cellule.
  • De prétraiter le code de chaque cellule.
  • De recourir à une fonction de rappel lors de la création de variables de certains types.
  • Créer des générateurs de rendu personnalisés pour les différents types définis dans la bibliothèque.
  • Et bien plus.

Tout cela ouvre des possibilités quasi illimitées pour la création d’une expérience utilisateur interactive. Compte tenu des types statiques et AOT de Kotlin, la capacité de génération de code automatique à la volée offre un niveau supérieur de flexibilité et d’adaptation.

Une documentation très complète est accessible ici. Nous invitons les auteurs de bibliothèques à partager leurs intégrations dans le référentiel commun afin de les mettre à la disposition des utilisateurs de Kotlin Notebook. Plusieurs bibliothèques, parmi lesquelles WebTau, Roboquant et Kaliningraph, bénéficient déjà de cette approche.

Partager

Il est fréquent de devoir partager des notebooks, que ce soit au sein de son équipe ou en dehors. Les notebooks Kotlin adhérant au format Jupyter universel, ils peuvent être facilement distribués avec n’importe quelle visionneuse web. GitHub a notamment la capacité de générer le rendu des notebooks nativement.

De plus, JetBrains dispose de la plateforme Datalore, qui founrit une prise en charge de premier ordre des notebooks Kotlin. Datalore ne se limite pas au partage des capacités : elle permet également d’exécuter et de modifier les notebooks, et fournit des fonctionnalités avancées comme les rapports interactifs et la possibilité de planifier l’exécution des notebooks.

En résumé

Vous pouvez dès maintenant essayer la première version expérimentale du plugin Kotlin Notebook dans votre projet IntelliJ IDEA Ultimate!

Voici un exemple de notebook que vous pouvez télécharger pour vous familiariser de façon concrète avec les bases des notebooks Kotlin:

Si vous créez des bibliothèques, nous vous invitons à ajouter une intégration avec les notebooks Kotlin.

En cas de problème ou de bug, contactez-nous en créant un ticket dans l’outil de suivi du projet. Nous vous invitons également à nous faire part de votre retour d’expérience sur le canal Slack #notebook de Kotlin.

Nous espérons que vous apprécierez Kotlin Notebook !

Auteur de l’article original en anglais :

Delphine Massenhove

Roman Belov

image description