{"id":379169,"date":"2023-08-07T13:15:39","date_gmt":"2023-08-07T12:15:39","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=kotlin&#038;p=379169"},"modified":"2025-09-17T14:06:05","modified_gmt":"2025-09-17T13:06:05","slug":"decouvrez-kotlin-notebook","status":"publish","type":"kotlin","link":"https:\/\/blog.jetbrains.com\/fr\/kotlin\/2023\/08\/decouvrez-kotlin-notebook\/","title":{"rendered":"D\u00e9couvrez Kotlin Notebook"},"content":{"rendered":"\n<p>La premi\u00e8re version exp\u00e9rimentale du plugin Kotlin Notebook pour IntelliJ IDEA est disponible&nbsp;! Dans cet article, nous vous pr\u00e9sentons les fonctionnalit\u00e9s et cas d&#8217;utilisation du plugin, dont vous pouvez aussi d\u00e9couvrir les avantages dans cette vid\u00e9o :<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Introducing Kotlin Notebook\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/2PLYlDJPelQ?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<div id=\"installButton\" style=\"margin: auto; width: 245px; margin-bottom: 30px;\">\n<script src=\"https:\/\/plugins.jetbrains.com\/assets\/scripts\/mp-widget.js\"><\/script>\n<script>\n  \/\/ Please, replace #yourelement with a real element id on your webpage\n  MarketplaceWidget.setupMarketplaceWidget('install', 16340, \"#installButton\");\n<\/script>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Qu&#8217;est-ce que le plugin Kotlin Notebook&nbsp;?<\/h2>\n\n\n\n<p>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&#8217;\u00e9crire et d&#8217;ex\u00e9cuter des extraits de code (cellules), de visualiser les r\u00e9sultats et de documenter votre processus de d\u00e9veloppement au m\u00eame endroit.<\/p>\n\n\n\n<p>Les notebooks sont d\u00e9j\u00e0 largement utilis\u00e9s pour le prototypage rapide, l&#8217;analyse de donn\u00e9es et la science des donn\u00e9es. Le plugin Kotlin Notebook permet de tirer parti de la puissance du d\u00e9veloppement interactif dans IntelliJ IDEA, en associant la prise en charge native du langage Kotlin par l&#8217;IDE aux capacit\u00e9s de visualisation polyvalentes des navigateurs.<\/p>\n\n\n\n<p>Examinons plus en d\u00e9tail les aspects techniques pour voir ce que ce plugin peut faire et comment il fonctionne.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Installation<\/h2>\n\n\n\n<p>Vous pouvez installer le plugin depuis notre <strong>Marketplace<\/strong> dans l&#8217;onglet <strong>Settings | Plugins<\/strong> d&#8217;IntelliJ IDEA Ultimate. Pour l&#8217;utiliser, vous devez disposer de la version 2023.1.2 d&#8217;IntelliJ IDEA ou d&#8217;une version ult\u00e9rieure. Il est possible d&#8217;installer le plugin sur des versions plus anciennes, mais avec un risque d&#8217;instabilit\u00e9.<\/p>\n\n\n\n<p>Pendant le processus d&#8217;installation, vous verrez une invitation d&#8217;installation du plugin Python, que vous devez accepter. Pas d&#8217;inqui\u00e9tude, cela n&#8217;installera pas Python sur votre poste de travail, c&#8217;est juste que Kotlin Notebook a quelques d\u00e9pendances sur les composants de l&#8217;interface utilisateur situ\u00e9s dans le plugin Python. Il est pr\u00e9vu que nous supprimions ces d\u00e9pendances prochainement.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/8MGry1ISTsJ3z4CiJbmL-qNIEnJ3gpG0D9wqWLdvIqo3d9Cou9s2yD9oVoQ_Blcy6fpS9INbcSdCGLk8AG6Xf52tk4MjmHS7W5a2t-_RTIPsIeEaVN-bmOiC19fluhCI9jPm3C-x5UUBmYWXuTMg-mY.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Veuillez noter que le plugin Kotlin Notebook fonctionne uniquement dans IntelliJ IDEA Ultimate actuellement.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Se familiariser avec Kotlin Notebook<\/strong><\/h2>\n\n\n\n<p>Apr\u00e8s avoir install\u00e9 le plugin, vous serez pr\u00eat \u00e0 cr\u00e9er votre premier notebook. Fondamentalement, un notebook est juste un fichier sur un disque, il peut donc \u00eatre cr\u00e9\u00e9 n&#8217;importe o\u00f9 dans la vue <strong>Project<\/strong> avec l&#8217;action <strong>New | Kotlin Notebook<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/wai7oIn7lFGvKuRfOILwb2jio-DGgxzvbRV33FHI7sV0t8roO-YvTWYvaKro51XxnegZQ6hiNi_2u12nms8iGEwhw7bjuaqWPs9P97tnfwrQARgZCFLmnNmwke7V_j8gA9wOtOh5vyv2D60f1qyYJYQ.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Un fichier avec l&#8217;extension <strong>.ipynb<\/strong> sera cr\u00e9\u00e9. Si vous connaissez les notebooks Jupyter, vous connaissez sans doute aussi cette extension. En interne, les notebooks Kotlin suivent la m\u00eame structure, le m\u00eame format et le m\u00eame protocole, ces fichiers peuvent donc \u00eatre consult\u00e9s sur Github ou dans des notebooks Jupyter ou JupyterLab si le <a href=\"https:\/\/github.com\/Kotlin\/kotlin-jupyter\" target=\"_blank\" rel=\"noopener\">noyau Kotlin<\/a> est install\u00e9.&nbsp;<\/p>\n\n\n\n<p>Une fois cr\u00e9\u00e9, le notebook ne contient qu&#8217;une cellule vide. Les cellules sont les principaux \u00e9l\u00e9ments de construction des notebooks et peuvent contenir aussi bien du code que du texte. Pour ex\u00e9cuter une cellule de code, il suffit de la s\u00e9lectionner et de cliquer sur le bouton <strong>Run<\/strong> ou d&#8217;utiliser le raccourci <strong>Maj + Entr\u00e9e<\/strong>. Le code sera ex\u00e9cut\u00e9 et toute sortie ou erreur sera affich\u00e9e sous la cellule.<\/p>\n\n\n\n<p>Vous pouvez \u00e9galement \u00e9crire du texte dans les cellules Markdown, car elles prennent en charge les options de formatage enrichi telles que les en-t\u00eates, les listes, les liens, le langage LaTeX et les images. Pour afficher une cellule Markdown et voir le texte format\u00e9, il suffit de l&#8217;ex\u00e9cuter de la m\u00eame mani\u00e8re qu&#8217;une cellule de code.<\/p>\n\n\n\n<p>Les notebooks offrent un workflow interactif et it\u00e9ratif. Vous pouvez ex\u00e9cuter les cellules dans l&#8217;ordre que vous voulez, modifier le code ou le texte, d\u00e9clarer et red\u00e9clarer des variables, et r\u00e9ex\u00e9cuter les cellules pour voir les r\u00e9sultats mis \u00e0 jour. Cela favorise l&#8217;exp\u00e9rimentation, le prototypage et la documentation de votre travail.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/HElZusfrsgfY4Ss87v34GSPfkfvI5N6TMyHJPhBFgPBgekCDvJ8o4SdCpCTmC2BYyXdZlTkf9n81q7srXB1Jy89ZiEtAIEsnAGGxPnqttPg4UX0uQweLMhYlAvGHAEqV8HOrWrY4K0nI40eqL8wkSug.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Pour juger par vous-m\u00eame des avantages de l&#8217;utilisation des notebooks pour les commentaires du code et sa documentation, nous vous invitons \u00e0 t\u00e9l\u00e9charger et examiner <a href=\"https:\/\/datalore.jetbrains.com\/view\/notebook\/DMtWM05XWOT2Oi6yxZjVkJ\" target=\"_blank\" rel=\"noreferrer noopener\">ce notebook<\/a>. Il illustre tous les aspects des notebooks Kotlin abord\u00e9s dans cet article pour vous permettre d&#8217;allier th\u00e9orie et pratique.<\/p>\n\n\n<div class=\"buttons\">\n<div class=\"buttons__row\"><a class=\"btn\" href=\"https:\/\/datalore.jetbrains.com\/view\/notebook\/DMtWM05XWOT2Oi6yxZjVkJ\" target=\"_blank\" rel=\"noopener\">Exemple de notebook<\/a><\/p>\n<p>Commencer \u00e0 utiliser un notebook est encore la meilleure fa\u00e7on de se familiariser avec les notebooks&nbsp;! ;-)<\/p>\n<\/p>\n<\/div>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\"><strong>Sorties<\/strong><\/h2>\n\n\n\n<p>L&#8217;une des caract\u00e9ristiques cl\u00e9s des notebooks est qu&#8217;ils prennent en charge diff\u00e9rents types de sorties&nbsp;:<\/p>\n\n\n\n<ul>\n\n\n<li><strong>Texte&nbsp;:<\/strong> il s&#8217;agit de la sortie la plus simple, qui comprend des d\u00e9clarations imprim\u00e9es, des valeurs de variable ou toute sortie textuelle provenant de votre code. Si le r\u00e9sultat d&#8217;une cellule ne rentre dans aucune des cat\u00e9gories ci-dessous, il sera imprim\u00e9 au format texte via la m\u00e9thode <code>toString()<\/code>.<\/li>\n\n\n<li><strong>HTML&nbsp;:<\/strong> les notebooks Jupyter peuvent restituer du HTML directement, ce qui permet l&#8217;utilisation du format de texte enrichi et de tableaux, et m\u00eame l&#8217;int\u00e9gration de sites web.<\/li>\n\n\n<li><strong>Image&nbsp;:<\/strong> des images statiques peuvent \u00eatre affich\u00e9es en format PNG, JPEG et SVG, par exemple. Les r\u00e9sultats de type <code>BufferedImage<\/code> sont \u00e9galement pris en charge. Ces images peuvent provenir de fichiers, de graphiques g\u00e9n\u00e9r\u00e9s ou de tout autre support visuel.<\/li>\n\n\n<li><strong>Texte enrichi&nbsp;:<\/strong> 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.<\/li>\n\n\n<li><strong>LaTeX&nbsp;:<\/strong> les formules et les \u00e9quations math\u00e9matiques peuvent \u00eatre restitu\u00e9es de fa\u00e7on tr\u00e8s esth\u00e9tique avec LaTeX, un syst\u00e8me de composition de documents tr\u00e8s utilis\u00e9 dans le milieu universitaire.<\/li>\n\n\n<li><strong>Erreurs et tra\u00e7age :<\/strong> si le code contient des erreurs, les notebooks affichent un message d&#8217;erreur et un tra\u00e7age avec des informations utiles pour le d\u00e9bogage.<\/li>\n\n<\/ul>\n\n\n<h2 class=\"wp-block-heading\"><strong>D\u00e9pendances des notebooks<\/strong><\/h2>\n\n\n<p>Il est \u00e9galement important de tenir compte des d\u00e9pendances de votre notebook. Naturellement, il est possible d&#8217;utiliser la biblioth\u00e8que standard, mais cela n&#8217;est pas suffisant g\u00e9n\u00e9ralement. Plusieurs options&nbsp;s&#8217;offrent \u00e0 vous :<\/p>\n\n<ul>\n\n<li>Vous pouvez utiliser les d\u00e9pendances de votre projet afin que votre notebook ait acc\u00e8s aux m\u00eames classes.<\/li>\n\n\n<li>Il est possible d&#8217;utiliser les classes et d&#8217;autres entit\u00e9s de votre projet dans le notebook. Mais dans ce cas, le projet est examin\u00e9 pour v\u00e9rifier s&#8217;il y a eu des modifications et recompil\u00e9 si n\u00e9cessaire avant l&#8217;ex\u00e9cution de chaque cellule.<\/li>\n\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/D9T1xIjCE4Mdys51QmD1aRfRUff5hLu4g2HLihzTbla1LU2TZ3dGzPk_s42ZtRDZrwtDyV9LVMG0kQnDLgR39cI_w0gDgZp-K3l0gEo4t9tIIyyMIh5a31L3gmKiN-ZK56YUiIBbd9-CkdXTtQ1aNTE.png\" alt=\"\"\/><\/figure>\n\n\n\n<ul>\n<li>Vous pouvez charger l&#8217;une des biblioth\u00e8ques du d\u00e9p\u00f4t Maven en sp\u00e9cifiant ses coordonn\u00e9es avec une syntaxe de type Gradle dans n&#8217;importe quelle cellule.<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\">USE {\n  repositories {\n  maven {\n    url = &quot;https:\/\/my.secret.repo\/maven\/&quot;\n    credentials {\n      username = USER\n      password = TOKEN\n    } \n  }\n  dependencies {\n    val ktorVersion = &quot;2.0.3&quot;\n    implementation(&quot;my.secret:artifact:1.0-beta&quot;)\n    implementation(&quot;io.ktor:ktor-client-core-jvm:$ktorVersion&quot;)\n    implementation(&quot;io.ktor:ktor-client-apache-jvm:$ktorVersion&quot;)\n  }\n}<\/pre>\n\n\n\n<ul>\n<li>Vous pouvez \u00e9galement utiliser la version plus courte via l&#8217;annotation <code>DependsOn<\/code>&nbsp;:<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\">@file:DependsOn(\u201cio.ktor:ktor-client-core-jvm:$ktorVersion\u201c)<\/pre>\n\n\n\n<ul>\n<li>Se rappeler des coordonn\u00e9es Maven et les trouver peut \u00eatre fastidieux. Afin de simplifier ce processus, nous avons introduit une m\u00e9thode de chargement intelligente et pratique des biblioth\u00e8ques les plus courantes. Utilisez simplement la commande magique <code>%use<\/code> suivie par le nom d&#8217;une ou plusieurs biblioth\u00e8ques.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/a8DtL8btAh5gNc2YjMeFuDij8lthwAF16WL2QapFjdvq3vnKHww3FJvs61ebCzY0qcBYR8Pr3LD5I4nQ2UP8uVRYVDY7sYvrr_11FxdsRMkY8q9fVdyqm8ujqd3c3jAbY5zaJ6I8yWqAHhL5mZDoObc.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Lorsque l&#8217;instruction <code>%use<\/code> est ex\u00e9cut\u00e9e, non seulement elle t\u00e9l\u00e9charge les d\u00e9pendances de la biblioth\u00e8que, mais elle ajoute aussi des importations par d\u00e9faut au notebook. De plus, elle enregistre les g\u00e9n\u00e9rateurs de rendu pour les types de biblioth\u00e8ques et fournit diff\u00e9rentes fonctionnalit\u00e9s, dont nous parlerons dans la section suivante.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Int\u00e9grations de biblioth\u00e8ques<\/strong><\/h2>\n\n\n\n<p>Les notebooks Kotlin offrent de nombreuses possibilit\u00e9s d&#8217;int\u00e9gration de biblioth\u00e8ques.<\/p>\n\n\n\n<p>Pour les utilisateurs, en b\u00e9n\u00e9ficier est aussi simple que d&#8217;ajouter une ligne de code :<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">%use libraryName<\/pre>\n\n\n\n<p>Pour les cr\u00e9ateurs de biblioth\u00e8ques, cette commande pr\u00e9sente de nombreux avantages et leur permet:<\/p>\n\n\n\n<ul>\n<li>De t\u00e9l\u00e9charger les fichiers binaires de biblioth\u00e8ques \u00e0 partir de n&#8217;importe quel r\u00e9f\u00e9rentiel Maven.<\/li>\n\n\n\n<li>D&#8217;inclure les importations initiales.<\/li>\n\n\n\n<li>D&#8217;ex\u00e9cuter du code pendant l&#8217;initialisation.<\/li>\n\n\n\n<li>D&#8217;ex\u00e9cuter du code avant et apr\u00e8s chaque ex\u00e9cution de cellule.<\/li>\n\n\n\n<li>De pr\u00e9traiter le code de chaque cellule.<\/li>\n\n\n\n<li>De recourir \u00e0 une fonction de rappel lors de la cr\u00e9ation de variables de certains types.<\/li>\n\n\n\n<li>Cr\u00e9er des g\u00e9n\u00e9rateurs de rendu personnalis\u00e9s pour les diff\u00e9rents types d\u00e9finis dans la biblioth\u00e8que.<\/li>\n\n\n\n<li>Et bien plus.<\/li>\n<\/ul>\n\n\n\n<p>Tout cela ouvre des possibilit\u00e9s quasi illimit\u00e9es pour la cr\u00e9ation d&#8217;une exp\u00e9rience utilisateur interactive. Compte tenu des types statiques et AOT de Kotlin, la capacit\u00e9 de g\u00e9n\u00e9ration de code automatique \u00e0 la vol\u00e9e offre un niveau sup\u00e9rieur de flexibilit\u00e9 et d&#8217;adaptation.<\/p>\n\n\n\n<p>Une documentation tr\u00e8s compl\u00e8te est accessible <a href=\"https:\/\/github.com\/Kotlin\/kotlin-jupyter\/blob\/master\/docs\/libraries.md\" target=\"_blank\" rel=\"noopener\">ici<\/a>. Nous invitons les auteurs de biblioth\u00e8ques \u00e0 partager leurs int\u00e9grations dans le <a href=\"https:\/\/github.com\/Kotlin\/kotlin-jupyter-libraries\" target=\"_blank\" rel=\"noopener\">r\u00e9f\u00e9rentiel<\/a> commun afin de les mettre \u00e0 la disposition des utilisateurs de Kotlin Notebook. Plusieurs biblioth\u00e8ques, parmi lesquelles <a href=\"https:\/\/youtu.be\/wT31FB5t-UU\" target=\"_blank\" rel=\"noopener\">WebTau<\/a>,<a href=\"https:\/\/roboquant.org\" target=\"_blank\" rel=\"noopener\"> Roboquant<\/a> et <a href=\"https:\/\/github.com\/breandan\/galoisenne\" target=\"_blank\" rel=\"noopener\"> Kaliningraph<\/a>, b\u00e9n\u00e9ficient d\u00e9j\u00e0 de cette approche.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Partager<\/strong><\/h3>\n\n\n\n<p>Il est fr\u00e9quent de devoir partager des notebooks, que ce soit au sein de son \u00e9quipe ou en dehors. Les notebooks Kotlin adh\u00e9rant au format Jupyter universel, ils peuvent \u00eatre facilement distribu\u00e9s avec n&#8217;importe quelle visionneuse web. GitHub a notamment la capacit\u00e9 de g\u00e9n\u00e9rer le rendu des notebooks nativement.<\/p>\n\n\n\n<p>De plus, JetBrains dispose de la plateforme <a href=\"https:\/\/www.jetbrains.com\/fr-fr\/datalore\/\" target=\"_blank\" rel=\"noopener\">Datalore<\/a>, qui founrit une prise en charge de premier ordre des notebooks Kotlin. Datalore ne se limite pas au partage des capacit\u00e9s : elle permet \u00e9galement d&#8217;ex\u00e9cuter et de modifier les notebooks, et fournit des fonctionnalit\u00e9s avanc\u00e9es comme les rapports interactifs et la possibilit\u00e9 de planifier l&#8217;ex\u00e9cution des notebooks.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>En r\u00e9sum\u00e9<\/strong><\/h3>\n\n\n\n<p>Vous pouvez d\u00e8s maintenant essayer la premi\u00e8re version exp\u00e9rimentale du plugin Kotlin Notebook dans votre projet IntelliJ IDEA Ultimate!<\/p>\n\n\n\n<div id=\"installButton1\" style=\"margin: auto; width:245px; margin-bottom: 30px;\">\n<script src=\"https:\/\/plugins.jetbrains.com\/assets\/scripts\/mp-widget.js\"><\/script>\n<script>\n  \/\/ Please, replace #yourelement with a real element id on your webpage\n  MarketplaceWidget.setupMarketplaceWidget('install', 16340, \"#installButton1\");\n<\/script>\n<\/div>\n\n\n\n<p>Voici un exemple de notebook que vous pouvez t\u00e9l\u00e9charger pour vous familiariser de fa\u00e7on concr\u00e8te avec les bases des notebooks Kotlin:<\/p>\n\n\n\n<div class=\"buttons\">\n<div class=\"buttons__row\"><a class=\"btn\" href=\"https:\/\/datalore.jetbrains.com\/view\/notebook\/DMtWM05XWOT2Oi6yxZjVkJ\" target=\"_blank\" rel=\"noopener\">Voir l&#8217;exemple de notebook<\/a><\/div>\n<\/div>\n\n\n\n<p>Si vous cr\u00e9ez des biblioth\u00e8ques, nous vous invitons \u00e0 <a href=\"https:\/\/github.com\/Kotlin\/kotlin-jupyter\/blob\/master\/docs\/libraries.md\" target=\"_blank\" rel=\"noopener\">ajouter une int\u00e9gration<\/a> avec les notebooks Kotlin.<\/p>\n\n\n\n<p>En cas de probl\u00e8me ou de bug, contactez-nous en cr\u00e9ant un ticket <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KTNB\" target=\"_blank\" rel=\"noopener\">dans l&#8217;outil de suivi du projet<\/a>. Nous vous invitons \u00e9galement \u00e0 nous faire part de votre retour d&#8217;exp\u00e9rience sur le canal Slack <a href=\"https:\/\/kotlinlang.slack.com\/archives\/C05333T208Y\" target=\"_blank\" rel=\"noopener\">#notebook<\/a> de Kotlin.<\/p>\n\n\n\n<p><p><em>Nous esp\u00e9rons que vous appr\u00e9cierez Kotlin Notebook !<\/em><\/p>\n<!--\/wp:paragraph -->\n\n<p><em>Auteur de l&#8217;article original en anglais :<\/em><\/p>\n\n    <div class=\"about-author \">\n        <div class=\"about-author__box\">\n            <div class=\"row\">\n                <div class=\"about-author__box-img\">\n                    <img decoding=\"async\" src=\"https:\/\/secure.gravatar.com\/avatar\/?s=200&#038;r=g\" width=\"200\" height=\"200\" alt=\"\" loading=\"lazy\"  class=\"avatar avatar-200 wp-user-avatar wp-user-avatar-200 photo avatar-default\">\n                <\/div>\n                <div class=\"about-author__box-text\">\n                                                        <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n\n","protected":false},"author":813,"featured_media":369223,"comment_status":"closed","ping_status":"closed","template":"","categories":[952,826,4759,907],"tags":[],"cross-post-tag":[6284],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/kotlin\/379169"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/kotlin"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/types\/kotlin"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/users\/813"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/comments?post=379169"}],"version-history":[{"count":10,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/kotlin\/379169\/revisions"}],"predecessor-version":[{"id":623731,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/kotlin\/379169\/revisions\/623731"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media\/369223"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media?parent=379169"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/categories?post=379169"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/tags?post=379169"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/cross-post-tag?post=379169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}