{"id":672566,"date":"2026-01-08T16:57:13","date_gmt":"2026-01-08T15:57:13","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=kotlin&#038;p=672566"},"modified":"2026-01-13T13:54:01","modified_gmt":"2026-01-13T12:54:01","slug":"premiers-pas-avec-kotlin-pour-les-developpeurs-java","status":"publish","type":"kotlin","link":"https:\/\/blog.jetbrains.com\/fr\/kotlin\/2026\/01\/premiers-pas-avec-kotlin-pour-les-developpeurs-java\/","title":{"rendered":"Premiers pas avec Kotlin pour les d\u00e9veloppeurs Java"},"content":{"rendered":"<p><em>Article de notre invit\u00e9 <a href=\"https:\/\/www.linkedin.com\/in\/urs-peter-70a2882\/\" target=\"_blank\" rel=\"noreferrer noopener\" data-type=\"link\" data-id=\"https:\/\/bit.ly\/urs-peter-linked-in\">Urs Peter<\/a>, Ing\u00e9nieur logiciel senior et Formateur Kotlin certifi\u00e9 JetBrains. Pour les lecteurs qui souhaitent une approche plus structur\u00e9e pour d\u00e9velopper leurs comp\u00e9tences en Kotlin, Urs anime \u00e9galement le <\/em><a href=\"https:\/\/academy.xebia.com\/upskilling\/kotlin-academy\/\" target=\"_blank\" rel=\"noreferrer noopener\"><em>Kotlin Upskill Program<\/em><\/a><em>\u00a0\u00e0 la Xebia Academy.<\/em><\/p>\n<p><em>Cet article est le premier d&#8217;une s\u00e9rie intitul\u00e9e <\/em><strong><em>Guide complet pour r\u00e9ussir l&#8217;adoption de Kotlin dans un environnement Java<\/em><\/strong><em>, qui explique concr\u00e8tement comment l&#8217;adoption de Kotlin peut \u00eatre progressivement d\u00e9ploy\u00e9e au sein d&#8217;une \u00e9quipe, en partant de la curiosit\u00e9 d&#8217;un d\u00e9veloppeur pour aboutir \u00e0 une transformation \u00e0 l&#8217;\u00e9chelle de l&#8217;entreprise.<\/em><\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n<p class=\"has-text-align-left\">\u00ab\u00a0<em>Passer \u00e0 Kotlin ne se fait pas du jour au lendemain.<\/em><\/p>\n<p class=\"has-text-align-left\"><em>On \u00e9limine les risques, on mesure, on c\u00e9l\u00e8bre les victoires,<\/em><\/p>\n<p class=\"has-text-align-left\"><em>et seulement alors on double la mise.<\/em> \u00bb<\/p>\n<p>Adopter Kotlin dans un environnement Java existant n&#8217;est pas qu&#8217;une d\u00e9cision technique. C&#8217;est un parcours qui requiert une planification minutieuse, une r\u00e9flexion strat\u00e9gique, et surtout, l&#8217;obtention de l&#8217;approbation et du soutien de vos pairs.<\/p>\n<p>Ayant form\u00e9 plus de 1\u00a0000\u00a0d\u00e9veloppeurs et aid\u00e9 de nombreuses organisations \u00e0 r\u00e9ussir leur transition vers Kotlin, j&#8217;ai vu ce qui fonctionne et ce qui ne fonctionne pas. Ce guide vous pr\u00e9sentera pas \u00e0 pas des recettes \u00e9prouv\u00e9es pour adopter Kotlin, que j&#8217;ai collect\u00e9es au fil du temps, depuis les premi\u00e8res exp\u00e9rimentations jusqu&#8217;\u00e0 la transformation d&#8217;organisations \u00e0 grande \u00e9chelle.<\/p>\n<p>Voici le parcours que nous allons suivre dans cette s\u00e9rie\u00a0:<\/p>\n<ul>\n<li><a href=\"#it-always-starts-with-a-spark,-initiated-by-you\" data-type=\"link\" data-id=\"https:\/\/blog.jetbrains.com\/#it-always-starts-with-a-spark,-initiated-by-you\">Tout commence par une \u00e9tincelle, et c&#8217;est vous qui l&#8217;allumez\u00a0!<\/a><\/li>\n<li><a href=\"#the-play-around-stage-start-small-\u2013-with-tests\">L&#8217;\u00e9tape d&#8217;exp\u00e9rimentation\u00a0: commencez petit, avec des tests<\/a><\/li>\n<li>L&#8217;\u00e9tape d&#8217;\u00e9valuation\u00a0: au-del\u00e0 de l&#8217;exp\u00e9rimentation avec Kotlin<\/li>\n<li>Faire passer le message\u00a0: convaincre vos coll\u00e8gues d\u00e9veloppeurs<\/li>\n<li>Convaincre la direction\u00a0: cr\u00e9ez une analyse de rentabilit\u00e9 pour Kotlin<\/li>\n<li>Facteurs de r\u00e9ussite pour l&#8217;adoption de Kotlin \u00e0 grande \u00e9chelle<\/li>\n<li>Kotlin ou pas Kotlin\u00a0: quel type d&#8217;entreprise voulez-vous \u00eatre\u00a0?<\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\"><strong>Tout commence par une \u00e9tincelle, et c&#8217;est vous qui l&#8217;allumez\u00a0!<\/strong><\/h2>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-647072\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/10\/unnamed-12.png\" alt=\"Tout commence par une \u00e9tincelle, et c'est vous qui l'allumez\u00a0!\" width=\"1586\" height=\"526\" \/><\/figure>\n<p><em>Pourquoi faire l&#8217;effort de passer \u00e0 Kotlin\u00a0? Pourquoi ne pas simplement continuer d&#8217;utiliser Java et passer sa route\u00a0?\u00a0<\/em><\/p>\n<p>La r\u00e9ponse d\u00e9pend de nombreux facteurs. Bien que les donn\u00e9es d\u00e9montrent clairement les avantages de Kotlin dans de multiples domaines, la d\u00e9cision n&#8217;est pas purement technique. La subjectivit\u00e9 (\u00ab\u00a0J&#8217;aime mon langage parce que je l&#8217;aime\u00a0\u00bb) et le scepticisme face \u00e0 la nouveaut\u00e9, qui est g\u00e9n\u00e9ralement une bonne chose, jouent un r\u00f4le important.<\/p>\n<p>L&#8217;\u00e9volution des langages de programmation d\u00e9montre toutefois que nos pr\u00e9f\u00e9rences et nos besoins \u00e9voluent avec le temps. Chaque nouvelle g\u00e9n\u00e9ration de langages int\u00e8gre de nouveaux paradigmes \u2013 s\u00e9curit\u00e9 (null), syntaxe concise et l\u00e9g\u00e8re, fonctions de premi\u00e8re classe, biblioth\u00e8ques standard riches, concurrence asynchrone, prise en charge multiplateforme, compatibilit\u00e9 avec l&#8217;IA g\u00e9n\u00e9rative, etc. \u2013 qui offrent des avantages d\u00e9cisifs aux d\u00e9veloppeurs et aux organisations.<\/p>\n<p>Sans cette \u00e9volution naturelle, nous utiliserions encore tous COBOL ou un autre langage archa\u00efque, incapable de r\u00e9pondre aux exigences actuelles. L&#8217;\u00e9volution n&#8217;est donc pas une option\u00a0; elle est inscrite dans l&#8217;histoire de notre secteur d&#8217;activit\u00e9.<\/p>\n<p>Mais les avantages techniques \u00e0 eux seuls ne suffisent pas pour que de tels changements s&#8217;enracinent dans une entreprise. Cela n\u00e9cessite des facilitateurs, des personnes d\u00e9sireuses d&#8217;explorer, de d\u00e9fendre et de d\u00e9montrer la valeur de ces nouveaux paradigmes en pratique. Mon exp\u00e9rience m&#8217;a montr\u00e9 que trois types d&#8217;ing\u00e9nieurs deviennent g\u00e9n\u00e9ralement ces catalyseurs pour l&#8217;adoption de Kotlin\u00a0:<\/p>\n<ol>\n<li><strong>Le d\u00e9veloppeur Java pragmatique et ax\u00e9 sur la productivit\u00e9<\/strong>\u00a0: des d\u00e9veloppeurs exp\u00e9riment\u00e9s qui consid\u00e8rent Java comme un outil, pas une religion. Ils cherchent toujours de meilleures fa\u00e7ons d&#8217;effectuer le travail plus rapidement.<\/li>\n<li><strong>Le passionn\u00e9 des langages modernes qui recherche avant tout la qualit\u00e9<\/strong>\u00a0: les ing\u00e9nieurs qui privil\u00e9gient un code lisible, concis et maintenable. Ce sont souvent les m\u00eames personnes qui seraient pass\u00e9es \u00e0 Scala par le pass\u00e9.<\/li>\n<li><strong>Le d\u00e9veloppeur junior<\/strong>\u00a0qui posent simplement la question\u00a0: \u00ab Pourquoi devrais-je utiliser Java si je peux utiliser Kotlin\u00a0? \u00bb N&#8217;ayant pas des ann\u00e9es d&#8217;exp\u00e9rience en Java, Kotlin leur appara\u00eet souvent une \u00e9vidence.<\/li>\n<\/ol>\n<p>\u00c0 quel groupe appartenez-vous\u00a0?<\/p>\n<p>Ces utilisateurs pr\u00e9coces initient la premi\u00e8re \u00e9tape vers le changement. Mais par o\u00f9 commencer\u00a0? Poursuivez la lecture\u2026 ;-)<\/p>\n<h2 class=\"wp-block-heading\"><strong>L&#8217;\u00e9tape d&#8217;exp\u00e9rimentation\u00a0: commencez petit, avec des tests<\/strong><\/h2>\n<p>Vous avez entendu parler de Kotlin et vous souhaitez l&#8217;essayer sans vous engager pour le moment.<\/p>\n<p>La premi\u00e8re chose dont vous avez besoin, c&#8217;est d&#8217;un outil de d\u00e9veloppement qui puisse vous aider \u00e0 planter vos premi\u00e8res graines Kotlin. Voici quelques possibilit\u00e9s\u00a0:<\/p>\n<ul>\n<li><a href=\"https:\/\/play.kotlinlang.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/play.kotlinlang.org\/<\/a> est un excellent terrain de jeu en ligne qui permet de saisir et d&#8217;ex\u00e9cuter du code Kotlin non seulement sur la JVM, mais aussi pour plusieurs autres plateformes (JS, WASM, etc.).<img decoding=\"async\" loading=\"lazy\" class=\"wp-image-647084\" style=\"width: 650px;\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/10\/unnamed-13.png\" alt=\"Zone d'essai de Kotlin\" width=\"1462\" height=\"660\" \/><\/li>\n<\/ul>\n<ul>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/kotlin-notebook-overview.html\" target=\"_blank\" rel=\"noreferrer noopener\">Kotlin Notebook<\/a> est une fonctionnalit\u00e9 puissante pour IntelliJ IDEA qui vous permet d&#8217;importer facilement des d\u00e9pendances, d&#8217;ex\u00e9cuter du code, et m\u00eame de travailler avec des donn\u00e9es, de cr\u00e9er des graphiques, etc. Voici un exemple qui montre \u00e0 quel point il est facile de r\u00e9aliser un appel REST avec le RestClient de Spring\u00a0:<img decoding=\"async\" loading=\"lazy\" class=\"wp-image-647095\" style=\"width: 650px;\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/10\/unnamed-11.png\" alt=\"Kotlin Notebook\" width=\"1600\" height=\"1035\" \/><\/li>\n<\/ul>\n<ul>\n<li>IntelliJ IDEA offre une prise en charge de premier ordre pour Kotlin. Cela n&#8217;est pas surprenant, puisque JetBrains est le cr\u00e9ateur de Kotlin, et qu&#8217;une grande partie d&#8217;IntelliJ IDEA est \u00e9crite dans ce langage. Alors, commencer \u00e0 utiliser Kotlin dans <a href=\"https:\/\/www.jetbrains.com\/help\/idea\/get-started-with-kotlin.html#add-kotlin-dependency\" target=\"_blank\" rel=\"noreferrer noopener\">IntelliJ IDEA<\/a> (m\u00eame dans votre projet Java existant) est un vrai jeu d&#8217;enfant\u00a0:\n<ul>\n<li>Pour <a href=\"https:\/\/kotlinlang.org\/docs\/maven.html\" target=\"_blank\" rel=\"noreferrer noopener\">Maven<\/a>, il vous suffit de configurer le <code>kotlin-maven-plugin<\/code> et la biblioth\u00e8que standard de Kotlin <code>kotlin-stdlib<\/code>.<\/li>\n<li>Pour <a href=\"https:\/\/kotlinlang.org\/docs\/gradle-configure-project.html\" target=\"_blank\" rel=\"noreferrer noopener\">Gradle<\/a>, configurez le plugin kotlin.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\u2026Et c&#8217;est parti\u00a0!<\/p>\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-647106\" style=\"aspect-ratio: 1.1216216216216217; width: 320px; height: auto;\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/10\/unnamed-14.png\" alt=\"\" width=\"498\" height=\"444\" \/><\/figure>\n<ul>\n<li>Et ce n&#8217;est pas tout\u00a0! JetBrains a r\u00e9cemment publi\u00e9 le Kotlin Language Server, qui apporte une exp\u00e9rience de d\u00e9veloppement Kotlin compl\u00e8te dans d&#8217;autres IDE qu&#8217;IntelliJ IDEA, comme VS Code. Voyez par vous-m\u00eame\u00a0: <a href=\"https:\/\/github.com\/Kotlin\/kotlin-lsp\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/Kotlin\/kotlin-lsp<\/a><\/li>\n<\/ul>\n<p>Maintenant, vous pouvez \u00e9crire en Kotlin dans votre environnement de d\u00e9veloppement pr\u00e9f\u00e9r\u00e9. Comment \u00e9valuer le langage dans une situation r\u00e9elle avec un impact minimal tout en obtenant un maximum d&#8217;informations ? Dans la suite de tests d&#8217;un projet Java existant\u00a0!<\/p>\n<p>Cette approche s\u00fbre et r\u00e9aliste pour exp\u00e9rimenter avec Kotlin offre plusieurs avantages\u00a0:<\/p>\n<ul>\n<li><strong>Faible risque<\/strong>\u00a0: les tests n&#8217;affectent pas le code de production.<\/li>\n<li><strong>Opportunit\u00e9 d&#8217;apprentissage<\/strong>\u00a0: vous pouvez explorer les fonctionnalit\u00e9s du langage dans un contexte familier.<\/li>\n<li><strong>Introduction progressive<\/strong>\u00a0: les membres de l&#8217;\u00e9quipe peuvent se familiariser avec la syntaxe de Kotlin sans pression.<\/li>\n<\/ul>\n<h3 class=\"wp-block-heading\"><strong>Astuces<\/strong><\/h3>\n<ol>\n<li>Essayez Kotest + MockK\u00a0: pour ressentir imm\u00e9diatement l&#8217;expressivit\u00e9 des DSL (Domain-Specific Language) de tests de Kotlin, comme les assertions riches en fonctionnalit\u00e9s (<code>shouldHaveSize(\u2026)<\/code>, infix (<code>value shouldBe 1<\/code>), etc.<\/li>\n<li>Utilisez la puissance et la concision de Kotlin Collections plut\u00f4t que Java Streams.<\/li>\n<li>Exp\u00e9rimentez avec les diverses fonctionnalit\u00e9s du langage comme les types nullables, la d\u00e9structuration, l&#8217;immutabilit\u00e9 (<code>val<\/code>, <code>data classes<\/code>), les constructions d&#8217;expressions (<code>when<\/code>, <code>try-catch<\/code>, <code>if else<\/code>), et bien plus encore.<\/li>\n<\/ol>\n<p>Voici ce que vous obtenez\u00a0:<\/p>\n<p><strong>Java<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Test\nvoid shouldGetAverageRating() {\n   when(productRepository.findAll()).thenReturn(products);\n\n   Map ratings = productService.averageRatings();\n\n   assertAll(\n           () -&gt; assertThat(ratings).hasSize(4),\n           () -&gt; assertEquals(ratings, products\n                   .stream()\n                   .collect(Collectors.groupingBy(\n                           Product::getName,\n                           Collectors.flatMapping(\n                                   p -&gt; p.getRatings()\n                                    .stream()\n                                    .mapToDouble(Integer::doubleValue)\n                                    .boxed(),   \n                              Collectors.averagingDouble(Double::doubleValue)\n                           )))\n           )\n   );\n   verify(productRepository).findAll();\n\n}\n<\/pre>\n<p><strong>Kotlin<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"kotlin\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Test\nfun `should get average rating`() { \/\/descriptive tests using ``\n   every { productRepository.findAll() } returns products\n\n   val ratings = productService.averageRatings()\n\n   assertSoftly(ratings) { \t\t\/\/powerful testing DSLs (Kotest)\n       shouldHaveSize(4)\n       this shouldBe productRepository.findAll()\n           .groupBy { it.name }   \t\t\t\/\/concise collections\n           .mapValues { (_, products) -&gt; \t\t\/\/destructuring\n                  products.flatMap { it.ratings }.average() }\n   }\n    verify { productRepository.findAll() }\n}<\/pre>\n<h3 class=\"wp-block-heading\">Suite de la s\u00e9rie<\/h3>\n<p>L&#8217;adoption de Kotlin commence g\u00e9n\u00e9ralement par une personne qui l&#8217;essaie et quelques tests qui prouvent son utilit\u00e9. Ces premiers moments de d\u00e9couverte m\u00e8nent naturellement \u00e0 quelque chose de plus cons\u00e9quent\u00a0: \u00e9valuer Kotlin dans un projet concret.<\/p>\n<p>Le prochain article de cette s\u00e9rie d\u00e9crira cette \u00e9tape et expliquera comment tester Kotlin dans des environnements de production.<\/p>\n<p><em>Auteurs de l&#8217;article original en anglais<\/em> :<\/p>\n<div class=\"about-author \">\n<div class=\"about-author__box\">\n<div class=\"row\">\n<div class=\"about-author__box-img\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/10\/a3f7-400o400o1-QYUavRYyARnAVJLCpM1m8M.webp\" alt=\"\" \/><\/div>\n<div class=\"about-author__box-text\">\n<h4>Urs Peter<\/h4>\n<p>Urs est un ing\u00e9nieur logiciel exp\u00e9riment\u00e9, architecte de solutions, conf\u00e9rencier et formateur avec plus de 20 ans d&#8217;exp\u00e9rience dans la cr\u00e9ation de syst\u00e8mes r\u00e9silients, \u00e9volutifs et critiques, dont la plupart impliquent Kotlin et Scala.<\/p>\n<p>Outre son activit\u00e9 de consultant, il est \u00e9galement un formateur passionn\u00e9 et l&#8217;auteur d&#8217;une grande vari\u00e9t\u00e9 de cours sur des sujets allant des langages Kotlin et Scala \u00e0 l&#8217;architecture comme les microservices et les architectures pilot\u00e9es par les \u00e9v\u00e9nements.<\/p>\n<p>Sociable de nature, il aime partager ses connaissances, inspirer et \u00eatre inspir\u00e9 par ses pairs lors de rencontres et de conf\u00e9rences. Urs est un formateur Kotlin certifi\u00e9 par JetBrains.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\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:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/08\/photo_2021-08-03_15-27-43-200x200.jpg\" width=\"200\" height=\"200\" alt=\"Alyona Chernyaeva\" 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                                            <h4>Alyona Chernyaeva<\/h4>\n                                                        <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n","protected":false},"author":813,"featured_media":672567,"comment_status":"closed","ping_status":"closed","template":"","categories":[],"tags":[],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/kotlin\/672566"}],"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=672566"}],"version-history":[{"count":4,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/kotlin\/672566\/revisions"}],"predecessor-version":[{"id":674427,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/kotlin\/672566\/revisions\/674427"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media\/672567"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media?parent=672566"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/categories?post=672566"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/tags?post=672566"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/cross-post-tag?post=672566"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}