JetBrains annonce la sortie de la première version expérimentale du plugin Kotlin Notebook pour IntelliJ IDEA :
un aperçu des fonctionnalités et cas d’utilisation
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.
Nous présentons ici plus en détail les aspects techniques du plugin Kotlin Notebook, ce qu'il peut faire et comment il fonctionne.
Installation
Vous pouvez installer le plugin depuis la Marketplace de JetBrains 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. JetBrains prévoit de supprimer 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, JetBrains vous invite à télécharger et examiner ce notebook. Il illustre tous les aspects des notebooks Kotlin abordés ici pour vous permettre d’allier théorie et pratique.
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.
Code kotlin : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 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 :
Code kotlin : Sélectionner tout - Visualiser dans une fenêtre à part @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, JetBrains a 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 suite.
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 :
Code kotlin : Sélectionner tout - Visualiser dans une fenêtre à part %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. JetBrains invite 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.
Vous trouverez ici 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, JetBrains vous invite à ajouter une intégration avec les notebooks Kotlin.
Vous pouvez aussi découvrir les avantages du plugin Kotlin Notebook dans la vidéo ci-dessous :
Installer le plugin Kotlin Notebook
Exemple de notebook pour vous familiariser avec Kotlin Notebook
Documentation Kotlin Notebook
Partager