{"id":671723,"date":"2025-12-31T02:31:01","date_gmt":"2025-12-31T01:31:01","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=kotlin&#038;p=671723"},"modified":"2026-01-05T23:24:01","modified_gmt":"2026-01-05T22:24:01","slug":"como-iniciar-a-adocao-do-kotlin-para-desenvolvedores-em-java","status":"publish","type":"kotlin","link":"https:\/\/blog.jetbrains.com\/pt-br\/kotlin\/2025\/12\/como-iniciar-a-adocao-do-kotlin-para-desenvolvedores-em-java\/","title":{"rendered":"Como iniciar a ado\u00e7\u00e3o do Kotlin para desenvolvedores em Java"},"content":{"rendered":"<p><em>Postagem convidada de <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>, Engenheiro de Software S\u00eanior e Instrutor de Kotlin certificado pela JetBrains. Para leitores que preferirem uma maneira mais estruturada de adquirir conhecimentos sobre Kotlin, Urs tamb\u00e9m dirige o\u00a0<\/em><a href=\"https:\/\/academy.xebia.com\/upskilling\/kotlin-academy\/\" target=\"_blank\" rel=\"noreferrer noopener\"><em>Programa de Qualifica\u00e7\u00e3o em Kotlin<\/em><\/a><em> da Xebia Academy.<\/em><\/p>\n<p><em>Esta postagem abre a s\u00e9rie <strong>O guia definitivo para a ado\u00e7\u00e3o bem-sucedida do Kotlin em um ambiente dominado pelo Java<\/strong>, que acompanha o processo de ado\u00e7\u00e3o do Kotlin por equipes reais, desde a curiosidade de um s\u00f3 desenvolvedor at\u00e9 uma transforma\u00e7\u00e3o geral da empresa.<\/em><\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n<p class=\"has-text-align-left\">&#8220;<em>Voc\u00ea n\u00e3o aperta simplesmente um bot\u00e3o e &#8216;muda para o Kotlin&#8217;.<\/em><\/p>\n<p class=\"has-text-align-left\"><em>Voc\u00ea elimina os riscos, faz medi\u00e7\u00f5es, celebra as vit\u00f3rias<\/em><\/p>\n<p class=\"has-text-align-left\"><em>e s\u00f3 ent\u00e3o dobra a aposta.<\/em>&#8220;<\/p>\n<p>Adotar o Kotlin em um ambiente com o uso estabelecido do Java n\u00e3o \u00e9 uma mera decis\u00e3o t\u00e9cnica \u2014 \u00e9 uma jornada que requer planejamento cuidadoso, pensamento estrat\u00e9gico e o mais importante: ganhar os cora\u00e7\u00f5es e mentes dos seus colegas.\u00a0<\/p>\n<p>Depois de treinar mais de 1.000 desenvolvedores e ajudar in\u00fameras organiza\u00e7\u00f5es a fazerem uma transi\u00e7\u00e3o bem-sucedida para o Kotlin, pude ver o que funciona e o que n\u00e3o funciona. Este guia ajudar\u00e1 voc\u00ea a percorrer receitas bem-sucedidas que coletei ao longo do tempo para adotar o Kotlin, desde as suas primeiras experi\u00eancias sem compromisso at\u00e9 uma transforma\u00e7\u00e3o da organiza\u00e7\u00e3o em larga escala.<\/p>\n<p>Esta \u00e9 a jornada que esta s\u00e9rie percorrer\u00e1 com voc\u00ea:<\/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\">Tudo sempre come\u00e7a com uma fa\u00edsca iniciada por voc\u00ea!<\/a><\/li>\n<li><a href=\"#the-play-around-stage-start-small-\u2013-with-tests\">O est\u00e1gio da brincadeira: come\u00e7ando pequeno \u2014 com testes<\/a><\/li>\n<li>O est\u00e1gio de avalia\u00e7\u00e3o: o Kotlin como mais que uma brincadeira<\/li>\n<li>Pregando a palavra: ganhe os cora\u00e7\u00f5es e mentes dos seus colegas desenvolvedores<\/li>\n<li>Convencendo a administra\u00e7\u00e3o: cria\u00e7\u00e3o do caso de neg\u00f3cios a favor do Kotlin<\/li>\n<li>Fatores de sucesso para a ado\u00e7\u00e3o do Kotlin em larga escala<\/li>\n<li>Usar ou n\u00e3o o Kotlin: que tipo de empresa voc\u00ea quer ser?<\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\"><strong>Tudo sempre come\u00e7a com uma fa\u00edsca iniciada por voc\u00ea!<\/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=\"Tudo sempre come\u00e7a com uma fa\u00edsca iniciada por voc\u00ea!\" width=\"1586\" height=\"526\" \/><\/figure>\n<p><em>Por que se dar ao trabalho de mudar para o Kotlin? Por que n\u00e3o ficar com o Java e ir em frente?\u00a0<\/em><\/p>\n<p>A resposta depende de in\u00fameros fatores. Embora os dados mostrem vantagens claras do Kotlin em v\u00e1rias \u00e1reas, a decis\u00e3o n\u00e3o \u00e9 puramente t\u00e9cnica. A subjetividade (&#8220;gosto da minha linguagem porque sim&#8221;) e o ceticismo em rela\u00e7\u00e3o a algo novo, o que geralmente \u00e9 uma coisa boa, desempenham um papel importante.\u00a0<\/p>\n<p>Por\u00e9m, a evolu\u00e7\u00e3o das linguagens de programa\u00e7\u00e3o mostra que nossas prefer\u00eancias e necessidades mudam com o tempo. Crucialmente, cada nova gera\u00e7\u00e3o de linguagens incorpora novos paradigmas \u2014 seguran\u00e7a (nula), sintaxe concisa e leve, fun\u00e7\u00f5es tratadas como cidad\u00e3s de primeira classe, uma rica biblioteca-padr\u00e3o, simultaneidade ass\u00edncrona, suporte a v\u00e1rias plataformas, adequa\u00e7\u00e3o \u00e0 IA gerativa, etc. \u2014 que d\u00e3o vantagens decisivas aos desenvolvedores e \u00e0s organiza\u00e7\u00f5es.\u00a0<\/p>\n<p>Sem essa evolu\u00e7\u00e3o natural, ainda estar\u00edamos programando tudo em COBOL ou em outra linguagem arcaica, sem podermos atender \u00e0s demandas de hoje. Portanto, a evolu\u00e7\u00e3o n\u00e3o \u00e9 opcional; ela faz parte da hist\u00f3ria do nosso setor.<\/p>\n<p>Por\u00e9m, para essa evolu\u00e7\u00e3o se enraizar em uma empresa, \u00e9 preciso mais que m\u00e9rito t\u00e9cnico. \u00c9 preciso que haja facilitadores \u2014 pessoas dispostas a explorar, defender e mostrar na pr\u00e1tica o valor desses novos paradigmas. Na minha experi\u00eancia, tipicamente, h\u00e1 tr\u00eas tipos de engenheiros que catalisam a ado\u00e7\u00e3o do Kotlin:<\/p>\n<ol>\n<li><strong>Engenheiros de Java pragm\u00e1ticos, com foco na produtividade<\/strong>: desenvolvedores experientes que consideram o Java uma ferramenta, n\u00e3o uma religi\u00e3o. Est\u00e3o sempre procurando maneiras melhores de fazer o trabalho mais rapidamente.<\/li>\n<li><strong>Entusiastas de linguagens modernas com uma mentalidade voltada para a qualidade<\/strong>: engenheiros que d\u00e3o prioridade a um c\u00f3digo leg\u00edvel, conciso e f\u00e1cil de manter. Costumam ser os mesmos que, em outros tempos, teriam mudado para o Scala.<\/li>\n<li><strong>Desenvolvedores juniores<\/strong>, que fazem uma pergunta simples, mas poderosa: &#8220;Por que eu deveria usar Java, se posso usar Kotlin?&#8221; Para eles, sem a bagagem de anos de experi\u00eancia com Java, o Kotlin costuma ser uma solu\u00e7\u00e3o \u00f3bvia.<\/li>\n<\/ol>\n<p>A qual grupo voc\u00ea pertence?\u00a0<\/p>\n<p>Esses pioneiros iniciam o primeiro est\u00e1gio. Mas como come\u00e7ar? Continue lendo\u2026 ;-)\u00a0<\/p>\n<h2 class=\"wp-block-heading\"><strong>O est\u00e1gio da brincadeira: come\u00e7ando pequeno \u2014 com testes<\/strong><\/h2>\n<p>Voc\u00ea ouviu falar sobre o Kotlin e quer experiment\u00e1-lo, sem compromisso imediato.\u00a0<\/p>\n<p>A primeira coisa de que voc\u00ea precisa \u00e9 uma ferramenta de desenvolvimento na qual voc\u00ea possa plantar as suas primeiras sementes do Kotlin. Algumas op\u00e7\u00f5es s\u00e3o:<\/p>\n<ul>\n<li><a href=\"https:\/\/play.kotlinlang.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/play.kotlinlang.org\/<\/a> \u00e9 um grande playground on-line. Basta digitar e executar c\u00f3digo em Kotlin, n\u00e3o s\u00f3 na JVM, mas tamb\u00e9m em v\u00e1rias outras plataformas (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=\"Kotlin Playground\" width=\"1462\" height=\"660\" \/><\/li>\n<\/ul>\n<ul>\n<li>Os <a href=\"https:\/\/kotlinlang.org\/docs\/kotlin-notebook-overview.html\" target=\"_blank\" rel=\"noreferrer noopener\">notebooks de Kotlin<\/a> s\u00e3o um recurso poderoso do IntelliJ IDEA, que permite que voc\u00ea facilmente importe depend\u00eancias, execute c\u00f3digo e at\u00e9 trabalhe com dados, trace gr\u00e1ficos, etc. Veja este exemplo, que mostra como \u00e9 f\u00e1cil fazer uma chamada REST com o RestClient do Spring:<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=\"Notebooks de Kotlin\" width=\"1600\" height=\"1035\" \/><\/li>\n<\/ul>\n<ul>\n<li>O IntelliJ IDEA tem suporte de primeira ao Kotlin. Isso n\u00e3o \u00e9 nenhuma surpresa, pois \u00e9 a JetBrains que desenvolve o Kotlin e grande parte do IntelliJ IDEA \u00e9 escrita nessa linguagem. Ent\u00e3o, \u00e9 muito f\u00e1cil come\u00e7ar a usar o Kotlin no <a href=\"https:\/\/www.jetbrains.com\/help\/idea\/get-started-with-kotlin.html#add-kotlin-dependency\" target=\"_blank\" rel=\"noreferrer noopener\">IntelliJ IDEA<\/a> \u2014 at\u00e9 no seu projeto j\u00e1 existente em Java:\n<ul>\n<li>Com o <a href=\"https:\/\/kotlinlang.org\/docs\/maven.html\" target=\"_blank\" rel=\"noreferrer noopener\">Maven<\/a>, basta configurar o <code>kotlin-maven-plugin<\/code> e a biblioteca-padr\u00e3o do Kotlin, <code>kotlin-stdlib<\/code>.<\/li>\n<li>Com o <a href=\"https:\/\/kotlinlang.org\/docs\/gradle-configure-project.html\" target=\"_blank\" rel=\"noreferrer noopener\">Gradle<\/a>, voc\u00ea configura o plug-in &#8220;kotlin&#8221;.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>E \u00e9 s\u00f3 isso!<\/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>E ainda h\u00e1 mais! Recentemente, a JetBrains lan\u00e7ou o Kotlin Language Server, que leva uma experi\u00eancia de desenvolvimento em Kotlin, com todos os recursos, para outros IDEs al\u00e9m do IntelliJ IDEA, como o VS Code. D\u00ea uma olhada: <a href=\"https:\/\/github.com\/Kotlin\/kotlin-lsp\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/Kotlin\/kotlin-lsp<\/a>\u00a0<\/li>\n<\/ul>\n<p>Agora voc\u00ea pode programar em Kotlin no seu ambiente favorito de desenvolvimento. Como avaliar a linguagem em um contexto do mundo real, com o m\u00ednimo de impacto e o m\u00e1ximo de insights? Usando a su\u00edte de testes de um projeto j\u00e1 existente em Java!\u00a0<\/p>\n<p>Esta \u00e9 uma abordagem segura e realista da experimenta\u00e7\u00e3o com o Kotlin e oferece v\u00e1rias vantagens:<\/p>\n<ul>\n<li><strong>Baixo risco<\/strong>: os testes n\u00e3o afetam o c\u00f3digo de produ\u00e7\u00e3o.<\/li>\n<li><strong>Oportunidade de aprendizado<\/strong>: voc\u00ea pode explorar os recursos da linguagem em um contexto familiar.<\/li>\n<li><strong>Introdu\u00e7\u00e3o gradual<\/strong>: os membros da equipe podem ir se acostumando sem press\u00e3o com a sintaxe do Kotlin.<\/li>\n<\/ul>\n<h3 class=\"wp-block-heading\"><strong>Dicas<\/strong><\/h3>\n<ol>\n<li>Experimente Kotest + MockK para sentir imediatamente a expressividade das DSLs (linguagens espec\u00edficas de dom\u00ednios) do Kotlin, como as asser\u00e7\u00f5es cheias de recursos [<code>shouldHaveSize(...)<\/code>, infix (<code>value shouldBe 1<\/code>), etc.].<\/li>\n<li>Use as concisas e poderosas Kotlin Collections, em vez de Java Streams.<\/li>\n<li>Brinque com v\u00e1rios recursos da linguagem, como os tipos &#8220;nullable&#8221;, desestrutura\u00e7\u00e3o, imutabilidade (<code>val<\/code>, <code>data classes<\/code>), construtos de express\u00f5es (<code>when<\/code>, <code>try-catch<\/code>, <code>if else<\/code>) e v\u00e1rios outros.<\/li>\n<\/ol>\n<p>O que voc\u00ea obt\u00e9m com isso:<\/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\">Em seguida nesta s\u00e9rie<\/h3>\n<p>Geralmente, a ado\u00e7\u00e3o do Kotlin come\u00e7a com uma pessoa explorando a linguagem e alguns testes mostrando sua utilidade. Naturalmente, esses primeiros momentos de descoberta levam a algo maior: avaliar o Kotlin em um projeto real.<\/p>\n<p>A pr\u00f3xima postagem desta s\u00e9rie descreve esse est\u00e1gio e explica como testar o Kotlin em ambientes de produ\u00e7\u00e3o.<\/p>\n<p><em>Artigo original em ingl\u00eas por:<\/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 \u00e9 um calejado engenheiro de software, arquiteto de solu\u00e7\u00f5es, palestrante e instrutor, com mais de 20 anos de experi\u00eancia no desenvolvimento de sistemas resilientes, escal\u00e1veis e cr\u00edticos, a maioria envolvendo Kotlin e Scala.<\/p>\n<p>Al\u00e9m de seu trabalho como consultor, ele tamb\u00e9m \u00e9 um instrutor apaixonado e autor de uma grande variedade de treinamentos, desde cursos das linguagens Kotlin e Scala at\u00e9 treinamentos em arquiteturas como microsservi\u00e7os e arquiteturas dirigidas por eventos.<\/p>\n<p>Sendo uma pessoa por natureza voltada para outras pessoas, ele adora compartilhar conhecimentos, inspirar e ser inspirado por colegas em encontros e congressos. Urs \u00e9 um instrutor de Kotlin certificado pela 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":1086,"featured_media":671724,"comment_status":"closed","ping_status":"closed","template":"","categories":[],"tags":[],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/kotlin\/671723"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/kotlin"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/types\/kotlin"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/users\/1086"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/comments?post=671723"}],"version-history":[{"count":4,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/kotlin\/671723\/revisions"}],"predecessor-version":[{"id":672140,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/kotlin\/671723\/revisions\/672140"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/media\/671724"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/media?parent=671723"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/categories?post=671723"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/tags?post=671723"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/cross-post-tag?post=671723"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}