﻿{"id":4547,"date":"2024-06-11T00:00:00","date_gmt":"2024-06-11T00:00:00","guid":{"rendered":"https:\/\/estatic-infotech.com\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/"},"modified":"2024-06-11T00:00:00","modified_gmt":"2024-06-11T00:00:00","slug":"explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante","status":"publish","type":"post","link":"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/","title":{"rendered":"Explorando o Kotlin 2.0: O que h\u00e1 de novo e interessante?"},"content":{"rendered":"<p>Apresentamos o Kotlin 2.0, a atualiza\u00e7\u00e3o mais recente na hist\u00f3ria de uma das linguagens de programa\u00e7\u00e3o mais populares para desenvolvimento de software. A cada lan\u00e7amento, ele expande os limites do desenvolvimento contempor\u00e2neo e oferece aos programadores uma fus\u00e3o de seguran\u00e7a, expressividade e concis\u00e3o. <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" style=\"display: block; margin-left: auto; margin-right: auto;\" src=\"\/Posts\/files\/over-80000-companies-worldwide-use-kotlin_638533395764516749.webp\" alt=\"mais-de-80000-empresas-no-mundo-usam-kotlin.webp\" width=\"1027\" height=\"250\" \/><\/p>\n<p> Neste artigo, exploramos os recursos e melhorias de ponta do Kotlin 2.0, que tem o potencial de transformar completamente a maneira como os desenvolvedores criam aplicativos. Vamos explorar as novidades e os aspectos interessantes da vers\u00e3o mais recente, desde conceitos avan\u00e7ados de sintaxe at\u00e9 o robusto suporte a ferramentas.<\/p>\n<h2> \u00cdndice<\/h2>\n<ul>\n<li> <a href=\"#whats-new-in-kotlin-2.0\">O que h\u00e1 de novo no Kotlin 2.0?<\/a><\/li>\n<ol>\n<li> <a href=\"#ide-support\">Suporte IDE<\/a><\/li>\n<li> <a href=\"#seamless-multiplatform-integration\">Integra\u00e7\u00e3o multiplataforma perfeita<\/a><\/li>\n<li> <a href=\"#new-k2-mode\">Novo Modo K2<\/a><\/li>\n<li> <a href=\"#improved-compilation-speed\">Velocidade de compila\u00e7\u00e3o aprimorada<\/a><\/li>\n<li> <a href=\"#complier-plugins-support\">Suporte a plugins de compilador<\/a><\/li>\n<li> <a href=\"#kotlin-jvm\">Kotlin\/JVM<\/a><\/li>\n<li> <a href=\"#kotlin-native\">Kotlin\/Nativo<\/a><\/li>\n<li> <a href=\"#kotlin-wasm\">Kotlin\/Wasm<\/a><\/li>\n<li> <a href=\"#kotlin-js\">Kotlin\/JS<\/a><\/li>\n<li> <a href=\"#gradle-improvements\">Melhorias no Gradle<\/a><\/li>\n<li> <a href=\"#standard-library\">Biblioteca padr\u00e3o<\/a><\/li>\n<\/ol>\n<li> <a href=\"#conclusion\">Conclus\u00e3o<\/a><\/li>\n<\/ul>\n<h2 id=\"whats-new-in-kotlin-2.0\"> O que h\u00e1 de novo no Kotlin 2.0?<\/h2>\n<p> Um novo modo de compilador K2, melhor suporte multiplataforma, compila\u00e7\u00e3o mais r\u00e1pida e diversas altera\u00e7\u00f5es para Kotlin\/JVM, Kotlin\/Native, Kotlin\/Wasm e Kotlin\/JS s\u00e3o apenas algumas das novidades interessantes da vers\u00e3o mais recente. Para acelerar ainda mais o processo de desenvolvimento, a integra\u00e7\u00e3o com o sistema de compila\u00e7\u00e3o Gradle foi otimizada e a biblioteca padr\u00e3o recebeu melhorias substanciais. <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"\/Posts\/files\/everything-about-kotlin-2-0_638533395765690372.webp\" alt=\"tudo-sobre-kotlin-2-0.webp\" width=\"1027\" height=\"250\" \/><\/p>\n<h3 id=\"ide-support\"> Suporte IDE<\/h3>\n<p> Os plugins que suportam Kotlin 2.0.0 est\u00e3o inclu\u00eddos nas vers\u00f5es mais recentes do Android Studio e do IntelliJ IDEA. N\u00e3o \u00e9 necess\u00e1rio atualizar o plugin no seu IDE. Basta modificar seus scripts de compila\u00e7\u00e3o para incorporar o Kotlin 2.0.0.<\/p>\n<h3 id=\"seamless-multiplatform-integration\"> Integra\u00e7\u00e3o multiplataforma perfeita<\/h3>\n<p> O suporte aprimorado para projetos multiplataforma \u00e9 um dos seus recursos mais not\u00e1veis. Com esta vers\u00e3o, compartilhar c\u00f3digo entre plataformas ficou mais simples do que nunca, reduzindo a duplica\u00e7\u00e3o e garantindo consist\u00eancia em todos os aplicativos. Independentemente do seu objetivo de desenvolvimento \u2014 JVM, Native, JavaScript ou a rec\u00e9m-lan\u00e7ada plataforma WebAssembly (Wasm) \u2014 o Kotlin 2.0 oferece as ferramentas e bibliotecas necess\u00e1rias para facilitar o desenvolvimento multiplataforma eficaz.<\/p>\n<h3 id=\"new-k2-mode\"> Novo Modo K2<\/h3>\n<p> Uma das principais funcionalidades do Kotlin 2.0 \u00e9 o novo modo de compilador K2, que proporciona um processo de compila\u00e7\u00e3o mais confi\u00e1vel e eficiente. Ele busca aprimorar a velocidade geral do compilador, oferecendo tempos de compila\u00e7\u00e3o mais r\u00e1pidos e diagn\u00f3sticos de erros mais precisos. Ao reduzir o tempo de espera para a conclus\u00e3o das compila\u00e7\u00f5es e simplificar o processo de identifica\u00e7\u00e3o e corre\u00e7\u00e3o de problemas, esse modo visa melhorar a experi\u00eancia do Kotlin para desenvolvedores Java.<\/p>\n<p> Os avan\u00e7os v\u00e3o al\u00e9m da velocidade de compila\u00e7\u00e3o. O modo K2 do IntelliJ IDEA, atualmente em vers\u00e3o alfa, est\u00e1 produzindo resultados promissores. Na base de c\u00f3digo do IntelliJ IDEA Ultimate, ele oferece uma colora\u00e7\u00e3o de c\u00f3digo cerca de 1,8 vezes mais r\u00e1pida e uma conclus\u00e3o de c\u00f3digo 1,5 vezes mais veloz, e sua comunidade continua determinada a aprimor\u00e1-lo ainda mais. No futuro, espera-se que o Kotlin se torne mais est\u00e1vel, oferecendo conclus\u00e3o e colora\u00e7\u00e3o de c\u00f3digo mais r\u00e1pidas.<\/p>\n<p> <a href=\"https:\/\/www.estatic-infotech.com\/contact-us\"><img loading=\"lazy\" decoding=\"async\" style=\"display: block; margin-left: auto; margin-right: auto;\" src=\"\/Posts\/files\/hire-our-skilled-kotlin-developers_638533395765977307.webp\" alt=\"contrate-nossos-desenvolvedores-kotlin-qualificados.webp\" width=\"1027\" height=\"163\" \/><\/a><\/p>\n<h3 id=\"improved-compilation-speed\"> Velocidade de compila\u00e7\u00e3o aprimorada<\/h3>\n<p> O Kotlin 2.0 possibilita ganhos significativos de desempenho na compila\u00e7\u00e3o, permitindo que os desenvolvedores trabalhem de forma mais produtiva e iterem rapidamente. Os tempos de compila\u00e7\u00e3o s\u00e3o reduzidos e o processo de desenvolvimento torna-se mais eficaz com a adi\u00e7\u00e3o do novo compilador K2 e outras melhorias de efici\u00eancia, especialmente para projetos maiores.<\/p>\n<h3 id=\"complier-plugins-support\"> Suporte a plugins de compilador<\/h3>\n<p> Com o suporte ampliado para plugins de compilador, os desenvolvedores agora podem criar plugins personalizados para expandir os recursos do compilador. Isso possibilita maior flexibilidade e a capacidade de personalizar o processo de compila\u00e7\u00e3o para atender a requisitos espec\u00edficos de cada projeto.<\/p>\n<p> Os seguintes plugins do compilador Kotlin s\u00e3o atualmente suportados pelo compilador K2:<\/p>\n<ul>\n<li> totalmente aberto<\/li>\n<li> At\u00f4micoFU<\/li>\n<li> jvm-abi-gen<\/li>\n<li> js-objetos-simples<\/li>\n<li> capit\u00e3o<\/li>\n<li> Lombok<\/li>\n<li> sem argumento<\/li>\n<li> Parcelizar<\/li>\n<li> SAM com receptor<\/li>\n<li> serializa\u00e7\u00e3o<\/li>\n<li> Afirma\u00e7\u00e3o de poder<\/li>\n<\/ul>\n<p> Al\u00e9m disso, o compilador Kotlin K2 oferece suporte a:<\/p>\n<ul>\n<li> O plugin de compila\u00e7\u00e3o Jetpack Compose 2.0.0 foi movido para o reposit\u00f3rio Kotlin.<\/li>\n<li> O plugin Kotlin Symbol Processing (KSP) desde o KSP2.<\/li>\n<\/ul>\n<h3 id=\"kotlin-jvm\"> Kotlin\/JVM<\/h3>\n<p> Esta vers\u00e3o traz as seguintes altera\u00e7\u00f5es:<\/p>\n<p> <strong>Gera\u00e7\u00e3o de fun\u00e7\u00f5es lambda usando invokedynamic<\/strong><\/p>\n<p> A vers\u00e3o mais recente introduz um novo m\u00e9todo padr\u00e3o para a gera\u00e7\u00e3o de fun\u00e7\u00f5es lambda do invokedynamic. Comparada \u00e0 gera\u00e7\u00e3o convencional de classes an\u00f4nimas, essa modifica\u00e7\u00e3o reduz o tamanho dos bin\u00e1rios das aplica\u00e7\u00f5es.<\/p>\n<p> As lambdas s\u00e3o geradas como classes an\u00f4nimas desde o seu lan\u00e7amento inicial. No entanto, a partir do Kotlin 1.5.0, a op\u00e7\u00e3o de compilador `-Xlambdas=indy` tornou poss\u00edvel invocar a gera\u00e7\u00e3o din\u00e2mica. O m\u00e9todo padr\u00e3o para cria\u00e7\u00e3o de lambdas agora \u00e9 `invokedynamic`. Ao usar essa t\u00e9cnica, os aplicativos podem aproveitar os aprimoramentos de velocidade atuais e futuros da JVM, al\u00e9m de gerar bin\u00e1rios mais leves e alinhar o Kotlin \u00e0s otimiza\u00e7\u00f5es da JVM.<\/p>\n<p> Atualmente, apresenta tr\u00eas desvantagens em rela\u00e7\u00e3o \u00e0 compila\u00e7\u00e3o lambda padr\u00e3o:<\/p>\n<ul>\n<li> Quando compilada em invokedynamic, uma express\u00e3o lambda n\u00e3o pode ser serializada.<\/li>\n<li> As express\u00f5es lambda criadas por invokedynamic n\u00e3o s\u00e3o suportadas pela API experimental reflect().<\/li>\n<li> Uma representa\u00e7\u00e3o de string menos leg\u00edvel \u00e9 produzida quando .toString() \u00e9 chamado em uma express\u00e3o lambda desse tipo:<\/li>\n<\/ul>\n<pre class=\"language-javascript\"> <code>fun main() { println({}) \/\/ With Kotlin 1.9.24 and reflection, returns \/\/ () -> kotlin.Unit \/\/ With Kotlin 2.0.0, returns \/\/ FileKt$$Lambda$13\/0x00007f88a0004608@506e1b77 }<\/code><\/pre>\n<p> Voc\u00ea tem duas op\u00e7\u00f5es se quiser continuar criando fun\u00e7\u00f5es lambda da mesma forma que antes:<\/p>\n<ul>\n<li> Use @JvmSerializableLambda para anotar lambdas.<\/li>\n<li> Para a t\u00e9cnica hist\u00f3rica de gerar todas as express\u00f5es lambda em um m\u00f3dulo, use a op\u00e7\u00e3o do compilador -Xlambdas=class.<\/li>\n<\/ul>\n<p> <strong>A biblioteca kotlinx-metadata-jvm agora est\u00e1 na vers\u00e3o est\u00e1vel.<\/strong><\/p>\n<p> A biblioteca kotlinx-metadata-jvm agora est\u00e1 est\u00e1vel na atualiza\u00e7\u00e3o mais recente. Voc\u00ea pode encontr\u00e1-la como kotlin-metadata-jvm, pois agora utiliza seu pr\u00f3prio pacote e coordenadas.<\/p>\n<p> A biblioteca kotlinx-metadata-jvm foi publicada anteriormente sob uma vers\u00e3o e m\u00e9todo de publica\u00e7\u00e3o diferentes. Mantendo as mesmas garantias de compatibilidade com vers\u00f5es anteriores, as altera\u00e7\u00f5es do kotlin-metadata-jvm agora ser\u00e3o produzidas e lan\u00e7adas como parte do ciclo de lan\u00e7amento do Kotlin.<\/p>\n<p> A biblioteca kotlin-metadata-jvm fornece uma API para ler e editar os metadados de arquivos bin\u00e1rios produzidos pelo compilador Kotlin\/JVM.<\/p>\n<h3 id=\"kotlin-native\"> Kotlin\/Nativo<\/h3>\n<p> A vers\u00e3o 2.0 do Kotlin\/Native traz melhorias significativas, como ferramentas aprimoradas, melhor interoperabilidade com C e Objective-C e desempenho otimizado. Esses avan\u00e7os facilitam o desenvolvimento de aplica\u00e7\u00f5es nativas de alto desempenho em diversas plataformas, incluindo sistemas embarcados e iOS.<\/p>\n<p> Esta vers\u00e3o traz as seguintes altera\u00e7\u00f5es:<\/p>\n<ul>\n<li> <strong>Monitoramento do desempenho do GC com indicadores<\/strong> :<\/li>\n<\/ul>\n<p> Uma melhoria significativa \u00e9 poss\u00edvel gra\u00e7as aos indicadores, que permitem aos desenvolvedores monitorar o desempenho da coleta de lixo (GC) com mais efici\u00eancia. Essa funcionalidade ajuda a otimizar o uso de recursos, oferecendo informa\u00e7\u00f5es valiosas sobre o gerenciamento de mem\u00f3ria.<\/p>\n<ul>\n<li> <strong>Resolvendo conflitos com m\u00e9todos Objective-C<\/strong><\/li>\n<\/ul>\n<p> Nesta vers\u00e3o, o Kotlin resolve conflitos com m\u00e9todos Objective-C, facilitando a interoperabilidade entre bases de c\u00f3digo Kotlin e Objective-C. Agora que a funcionalidade pode ser facilmente integrada a aplica\u00e7\u00f5es com componentes Objective-C preexistentes, os desenvolvedores podem melhorar a compatibilidade entre plataformas e agilizar o processo de desenvolvimento.<\/p>\n<ul>\n<li> <strong>Alterado o n\u00edvel de registro de logs para argumentos do compilador em Kotlin\/Native.<\/strong><\/li>\n<\/ul>\n<p> A vers\u00e3o X do Kotlin\/Native traz melhorias no registro de par\u00e2metros do compilador, oferecendo aos usu\u00e1rios mais controle e transpar\u00eancia sobre o processo de compila\u00e7\u00e3o. Os desenvolvedores podem personalizar sua experi\u00eancia de depura\u00e7\u00e3o para atender aos requisitos do projeto, modificando os n\u00edveis de registro, o que aumenta a produtividade e as habilidades de solu\u00e7\u00e3o de problemas.<\/p>\n<ul>\n<li> <strong>Depend\u00eancias de biblioteca padr\u00e3o e plataforma explicitamente adicionadas ao Kotlin\/Native.<\/strong><\/li>\n<\/ul>\n<p> Agora que o Kotlin\/Native foi atualizado, as depend\u00eancias da biblioteca padr\u00e3o e da plataforma est\u00e3o explicitamente inclu\u00eddas, garantindo cobertura completa de todas as partes necess\u00e1rias para o desenvolvimento de aplicativos nativos. Essa atualiza\u00e7\u00e3o facilita o gerenciamento de depend\u00eancias e a integra\u00e7\u00e3o do Kotlin\/Native em diversos contextos de projeto.<\/p>\n<ul>\n<li> <strong>Erro de tarefas no cache de configura\u00e7\u00e3o do Gradle<\/strong><\/li>\n<\/ul>\n<p> A vers\u00e3o X do Kotlin corrige problemas de tarefas que surgem durante o cache de configura\u00e7\u00e3o do Gradle, proporcionando maior estabilidade e confiabilidade ao processo de compila\u00e7\u00e3o. Ao trabalhar com projetos Kotlin no Gradle, os desenvolvedores podem desfrutar de compila\u00e7\u00f5es mais produtivas e maior efici\u00eancia, gra\u00e7as \u00e0 corre\u00e7\u00e3o desses problemas.<\/p>\n<p> <a href=\"https:\/\/www.estatic-infotech.com\/blog\/post\/kotlin-vs-java-which-one-is-better-for-app-development\"><img loading=\"lazy\" decoding=\"async\" style=\"display: block; margin-left: auto; margin-right: auto;\" src=\"\/Posts\/files\/kotlin-vs-java_638533395766493155.webp\" alt=\"kotlin-vs-java.webp\" width=\"1027\" height=\"163\" \/><\/a><\/p>\n<h3 id=\"kotlin-wasm\"> Kotlin\/Wasm<\/h3>\n<p> A vers\u00e3o 2.0.0 do Kotlin\/Wasm (WebAssembly) introduz diversos novos recursos e melhorias com o objetivo de aprimorar a interoperabilidade e a velocidade do JavaScript. Com esta vers\u00e3o, os desenvolvedores que buscam criar aplica\u00e7\u00f5es web de alto desempenho encontrar\u00e3o no Kotlin\/Wasm uma ferramenta ainda mais poderosa. Veja as novidades:<\/p>\n<p> <strong>Builds de produ\u00e7\u00e3o otimizados por padr\u00e3o usando Binaryen<\/strong><\/p>\n<p> O Binaryen agora \u00e9 usado por padr\u00e3o pelo Kotlin\/Wasm para compila\u00e7\u00f5es de produ\u00e7\u00e3o otimizadas. Sem exigir configura\u00e7\u00f5es adicionais, o Binaryen otimiza o c\u00f3digo WebAssembly (Wasm) para tornar seus aplicativos mais r\u00e1pidos e eficientes.<\/p>\n<p> <strong>Suporte para exporta\u00e7\u00e3o nomeada<\/strong><\/p>\n<p> Agora voc\u00ea pode utilizar exporta\u00e7\u00f5es nomeadas em seus m\u00f3dulos Wasm na vers\u00e3o mais recente. Isso facilita o gerenciamento e a integra\u00e7\u00e3o de m\u00f3dulos Kotlin\/Wasm em seus projetos JavaScript, permitindo exporta\u00e7\u00f5es mais claras e leg\u00edveis.<\/p>\n<p> <strong>Suporte para tipos primitivos n\u00e3o assinados em fun\u00e7\u00f5es com @JsExport<\/strong><\/p>\n<p> O suporte para tipos primitivos sem sinal em fun\u00e7\u00f5es marcadas com @JsExport foi estendido pelo Kotlin\/Wasm. Essa funcionalidade garante melhor compatibilidade com JavaScript, permitindo que os programadores usem tipos primitivos sem sinal. Trabalhe com n\u00fameros inteiros e outros tipos primitivos com facilidade em projetos multil\u00edngues.<\/p>\n<p> <strong>Gera\u00e7\u00e3o de arquivos de declara\u00e7\u00e3o TypeScript em Kotlin\/Wasm<\/strong><\/p>\n<p> A capacidade de criar arquivos de declara\u00e7\u00e3o TypeScript (.d.ts) diretamente do seu c\u00f3digo Kotlin\/Wasm \u00e9 um dos recursos mais not\u00e1veis desta ferramenta. Ao oferecer seguran\u00e7a de tipos e recursos de autocompletar em editores compat\u00edveis com TypeScript, isso possibilita uma melhor integra\u00e7\u00e3o com projetos TypeScript.<\/p>\n<p> Quaisquer fun\u00e7\u00f5es de n\u00edvel superior designadas com @JsExport s\u00e3o reunidas pelo compilador Kotlin\/Wasm, que ent\u00e3o cria automaticamente defini\u00e7\u00f5es TypeScript no arquivo adts.<\/p>\n<p> Adicione a fun\u00e7\u00e3o generateTypeScriptDefinitions() ao bloco wasmJs {} do seu arquivo build.gradle (.kts) para gerar defini\u00e7\u00f5es TypeScript:<\/p>\n<pre class=\"language-javascript\"> <code>kotlin { wasmJs { binaries.executable() browser { } generateTypeScriptDefinitions() } }<\/code><\/pre>\n<p> <strong>Suporte para armazenamento em cache de exce\u00e7\u00f5es JavaScript<\/strong><\/p>\n<p> Agora que o Kotlin\/Wasm consegue capturar exce\u00e7\u00f5es em JavaScript, seus m\u00f3dulos podem lidar com erros de forma mais robusta. Essa melhoria garante que erros provenientes do c\u00f3digo JavaScript possam ser tratados e respondidos adequadamente por seus aplicativos.<\/p>\n<p> <strong>Nova proposta de tratamento de exce\u00e7\u00f5es com suporte no \u00e2mbito da op\u00e7\u00e3o<\/strong><\/p>\n<p> O suporte para uma nova proposta de tratamento de exce\u00e7\u00f5es est\u00e1 inclu\u00eddo na vers\u00e3o mais recente e pode ser ativado por meio de uma op\u00e7\u00e3o dedicada. Esse recurso aprimora o tratamento de exce\u00e7\u00f5es do WebAssembly, oferecendo um m\u00e9todo mais padronizado e eficaz para lidar com erros.<\/p>\n<p> <strong>Fun\u00e7\u00e3o withWasm() dividida em variantes JS e WASI<\/strong><\/p>\n<p> Agora voc\u00ea tem maior flexibilidade e controle sobre seus m\u00f3dulos gra\u00e7as \u00e0 separa\u00e7\u00e3o da fun\u00e7\u00e3o `withWasm()` em vers\u00f5es JS e WASI. Devido a essa divis\u00e3o, os desenvolvedores podem selecionar o contexto que melhor se adapta aos seus aplicativos, independentemente de estarem sendo executados em um contexto de Interface de Sistema WebAssembly (WASI) ou em um ambiente JavaScript.<\/p>\n<h3 id=\"kotlin-js\"> Kotlin\/JS<\/h3>\n<p> Esta vers\u00e3o oferece suporte a mais recursos do padr\u00e3o ES2015 e adiciona compila\u00e7\u00e3o JS moderna ao Kotlin, entre outras modifica\u00e7\u00f5es.<\/p>\n<p> <strong>Novo alvo de compila\u00e7\u00e3o<\/strong><\/p>\n<p> Estamos adicionando o ES2015 como um novo alvo de compila\u00e7\u00e3o para Kotlin\/JS na vers\u00e3o 2.0. Este \u00e9 um novo m\u00e9todo que permite habilitar todos os recursos do ES2015 que o Kotlin suporta simultaneamente.<\/p>\n<p> Esta \u00e9 a forma como voc\u00ea pode configur\u00e1-lo no seu arquivo build.gradle (.kts):<\/p>\n<pre class=\"language-javascript\"> <code>kotlin { js { compilerOptions { target.set(\"es2015\") } } }<\/code><\/pre>\n<p> <strong>Suspender fun\u00e7\u00f5es como geradores ES2015<\/strong><\/p>\n<p> Com esta vers\u00e3o, os geradores ES2015 usados para compilar fun\u00e7\u00f5es de suspens\u00e3o agora possuem suporte experimental.<\/p>\n<p> O tamanho final do pacote do seu projeto dever\u00e1 aumentar se geradores forem usados em vez de m\u00e1quinas de estado. Por exemplo, ao utilizar os geradores do ES2015, a equipe da JetBrains conseguiu reduzir o tamanho do pacote do seu projeto Space em 20%.<\/p>\n<ul>\n<li> Passando argumentos para a fun\u00e7\u00e3o principal<\/li>\n<li> Compila\u00e7\u00e3o por arquivo para projetos Kotlin\/JS<\/li>\n<li> Interoperabilidade de coleta aprimorada<\/li>\n<\/ul>\n<p> <strong>Suporte para createInstance()<\/strong><\/p>\n<p> Voc\u00ea pode usar a fun\u00e7\u00e3o createInstance() do alvo Kotlin\/JS a partir do Kotlin 2.0.0. Anteriormente, ela era limitada \u00e0 JVM.<\/p>\n<p> Para obter a refer\u00eancia em tempo de execu\u00e7\u00e3o de uma classe Kotlin, use a fun\u00e7\u00e3o de interface KClass que gera uma nova inst\u00e2ncia da classe fornecida.<\/p>\n<p> <strong>Suporte para o gerenciador de pacotes npm<\/strong><\/p>\n<p> Anteriormente, a \u00fanica maneira de baixar e instalar depend\u00eancias do npm era atrav\u00e9s do plugin Multiplatform Gradle, usando o Yarn como gerenciador de pacotes. Voc\u00ea pode migrar para o npm como seu gerenciador de pacotes a partir do Kotlin 2.0.0. Ao usar o npm como gerenciador de pacotes, voc\u00ea elimina mais uma ferramenta da sua lista de configura\u00e7\u00f5es.<\/p>\n<p> O gerenciador de pacotes padr\u00e3o ainda \u00e9 o Yarn, por quest\u00f5es de compatibilidade com vers\u00f5es anteriores. No seu arquivo gradle.properties, defina a seguinte propriedade para utilizar o npm como gerenciador de pacotes:<\/p>\n<pre class=\"language-markup\"> <code>kotlin.js.yarn = false<\/code><\/pre>\n<p> <strong>Altera\u00e7\u00f5es nas tarefas de compila\u00e7\u00e3o<\/strong><\/p>\n<p> Os mesmos diret\u00f3rios foram previamente definidos como alvos das tarefas de compila\u00e7\u00e3o do webpack e do distributeResources. Al\u00e9m disso, o diret\u00f3rio `dist` foi especificado como diret\u00f3rio de sa\u00edda pela tarefa de distribui\u00e7\u00e3o. Isso resultou em sa\u00eddas sobrepostas e um aviso de compila\u00e7\u00e3o.<\/p>\n<p> A partir do Kotlin 2.0.0, aplicamos as seguintes modifica\u00e7\u00f5es:<\/p>\n<ul>\n<li> A pasta de destino para a opera\u00e7\u00e3o do webpack foi alterada.<\/li>\n<li> A tarefa distributeResources foi eliminada.<\/li>\n<li> A pasta dist \u00e9 o destino da tarefa de distribui\u00e7\u00e3o, que agora tem o tipo de c\u00f3pia.<\/li>\n<\/ul>\n<p> <strong>Descontinua\u00e7\u00e3o de artefatos JAR legados do Kotlin\/JS<\/strong><\/p>\n<p> A partir da vers\u00e3o 2.0, a distribui\u00e7\u00e3o n\u00e3o inclui mais arquivos Kotlin\/JS legados com a extens\u00e3o .jar. Esses arquivos legados s\u00e3o sup\u00e9rfluos para o compilador IR que usa o formato klib e eram utilizados no antigo compilador Kotlin\/JS, que j\u00e1 n\u00e3o existe mais.<\/p>\n<h3 id=\"gradle-improvements\"> Melhorias no Gradle<\/h3>\n<p> O Gradle 6.8.3 at\u00e9 o 8.5 \u00e9 totalmente compat\u00edvel com o Kotlin 2.0. At\u00e9 a vers\u00e3o mais recente, voc\u00ea ainda pode usar vers\u00f5es do Gradle, mas, nesse caso, esteja ciente de que alguns recursos novos do Gradle podem n\u00e3o funcionar ou que voc\u00ea pode receber avisos de obsolesc\u00eancia.<\/p>\n<p> As seguintes melhorias est\u00e3o inclu\u00eddas nesta vers\u00e3o:<\/p>\n<ul>\n<li> Nova DSL do Gradle para op\u00e7\u00f5es de compilador em projetos multiplataforma<\/li>\n<li> Novo plugin do Gradle para o compilador Compose<\/li>\n<li> Aumentando as vers\u00f5es m\u00ednimas suportadas.<\/li>\n<li> Novo atributo para distinguir bibliotecas publicadas na JVM e no Android.<\/li>\n<li> Melhoria no tratamento de depend\u00eancias do Gradle para CInteropProcess em Kotlin\/Native<\/li>\n<li> Altera\u00e7\u00f5es de visibilidade no Gradle<\/li>\n<li> Novo diret\u00f3rio para dados Kotlin em projetos Gradle<\/li>\n<li> O compilador Kotlin\/Native \u00e9 baixado quando necess\u00e1rio.<\/li>\n<li> Descontinua\u00e7\u00e3o das formas antigas de definir op\u00e7\u00f5es de compilador.<\/li>\n<li> Aumentada a vers\u00e3o m\u00ednima compat\u00edvel com AGP.<\/li>\n<li> Nova propriedade do Gradle para experimentar a vers\u00e3o mais recente da linguagem.<\/li>\n<li> Novo formato de sa\u00edda JSON para relat\u00f3rios de compila\u00e7\u00e3o.<\/li>\n<li> As configura\u00e7\u00f5es do kapt herdam processadores de anota\u00e7\u00f5es das superconfigura\u00e7\u00f5es.<\/li>\n<li> O plugin Kotlin Gradle n\u00e3o utiliza mais conven\u00e7\u00f5es Gradle obsoletas.<\/li>\n<\/ul>\n<h3 id=\"standard-library\"> Biblioteca padr\u00e3o<\/h3>\n<p> Com esta vers\u00e3o, a biblioteca padr\u00e3o torna-se ainda mais est\u00e1vel e mais funcionalidades tornam-se universais em todas as plataformas:<\/p>\n<ul>\n<li> Substitui\u00e7\u00e3o est\u00e1vel da fun\u00e7\u00e3o gen\u00e9rica do valor da classe enum<\/li>\n<li> Interface est\u00e1vel com fechamento autom\u00e1tico<\/li>\n<li> Propriedade protegida comum AbstractMutableList.modCount<\/li>\n<li> Fun\u00e7\u00e3o protegida comum AbstractMutableList.removeRange<\/li>\n<li> String comum.toCharArray(destino)<\/li>\n<\/ul>\n<h2 id=\"conclusion\"> Conclus\u00e3o<\/h2>\n<p> O lan\u00e7amento do Kotlin 2.0 serve como prova do desenvolvimento cont\u00ednuo da linguagem e da dedica\u00e7\u00e3o em fornecer aos desenvolvedores ferramentas e recursos de \u00faltima gera\u00e7\u00e3o. Com melhorias para JVM, Native, JavaScript e WebAssembly, entre outras plataformas, o Kotlin 2.0.0 cria novas oportunidades para criatividade e desenvolvimento multiplataforma. Com a adi\u00e7\u00e3o do modo de compilador K2 e aprimoramentos no suporte a middleware, velocidade de compila\u00e7\u00e3o e integra\u00e7\u00e3o com Gradle, este lan\u00e7amento marca um importante ponto de virada para o projeto. Ao adotar a vers\u00e3o mais recente, os programadores embarcam em uma jornada infinitamente gratificante, impulsionada pela engenhosidade, produtividade e pelas possibilidades ilimitadas inerentes ao desenvolvimento de software contempor\u00e2neo.<\/p>\n<p> Por fim, gostar\u00edamos de mencionar que esta plataforma traz uma s\u00e9rie de melhorias e recursos que a tornam uma ferramenta indispens\u00e1vel para o desenvolvimento de software moderno. Como uma empresa l\u00edder <a href=\"https:\/\/www.estatic-infotech.com\/hire-kotlin-developer\" target=\"_blank\" rel=\"noopener\">em contrata\u00e7\u00e3o de desenvolvedores de aplicativos Kotlin na \u00cdndia<\/a> , estamos entusiasmados com as possibilidades que esta atualiza\u00e7\u00e3o abre, especialmente para <a href=\"https:\/\/www.estatic-infotech.com\/services\/android-app-development-company\" target=\"_blank\" rel=\"noopener\">ag\u00eancias de desenvolvimento de aplicativos Kotlin e Android<\/a> . Para desenvolvedores Java que buscam uma transi\u00e7\u00e3o tranquila, esta vers\u00e3o oferece ferramentas robustas e integra\u00e7\u00e3o, tornando-a uma excelente escolha para o seu pr\u00f3ximo projeto. Seja para criar solu\u00e7\u00f5es empresariais complexas ou aplicativos m\u00f3veis inovadores, adotar esta vers\u00e3o mais recente permitir\u00e1 que voc\u00ea entregue aplicativos de alta qualidade, eficientes e escal\u00e1veis.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Prepare-se para impulsionar sua jornada na programa\u00e7\u00e3o com nossa empolgante explora\u00e7\u00e3o do Kotlin 2.0. Este blog revela as inova\u00e7\u00f5es mais recentes no desenvolvimento de software.<\/p>\n","protected":false},"author":2,"featured_media":775,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"content-type":"","footnotes":""},"categories":[17,3],"tags":[],"class_list":["post-4547","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kotlin-development","category-mobile-app-development"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Explorando o Kotlin 2.0: O que h\u00e1 de novo e interessante? -<\/title>\n<meta name=\"description\" content=\"Explorando o Kotlin 2.0: O que h\u00e1 de novo e interessante?\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Explorando o Kotlin 2.0: O que h\u00e1 de novo e interessante? -\" \/>\n<meta property=\"og:description\" content=\"Explorando o Kotlin 2.0: O que h\u00e1 de novo e interessante?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/\" \/>\n<meta property=\"og:site_name\" content=\"Estatic Infotech\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/estaticinfotech\" \/>\n<meta property=\"article:published_time\" content=\"2024-06-11T00:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/estatic-infotech.com\/wp-content\/uploads\/2025\/09\/4ee82d48-7f75-4e1f-ba87-83154eb32554.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1027\" \/>\n\t<meta property=\"og:image:height\" content=\"579\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Mansi Senjaliya\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Estaticinfotech\" \/>\n<meta name=\"twitter:site\" content=\"@Estaticinfotech\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mansi Senjaliya\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/\"},\"author\":{\"name\":\"Mansi Senjaliya\",\"@id\":\"https:\/\/estatic-infotech.com\/pt-br\/#\/schema\/person\/de3ff274c0ab0e3b3828e0cf2f9232fd\"},\"headline\":\"Explorando o Kotlin 2.0: O que h\u00e1 de novo e interessante?\",\"datePublished\":\"2024-06-11T00:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/\"},\"wordCount\":2944,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/estatic-infotech.com\/pt-br\/#organization\"},\"image\":{\"@id\":\"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/estatic-infotech.com\/eipl-app\/uploads\/2025\/09\/4ee82d48-7f75-4e1f-ba87-83154eb32554.png\",\"articleSection\":[\"Kotlin Development\",\"Mobile App Development\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/\",\"url\":\"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/\",\"name\":\"Explorando o Kotlin 2.0: O que h\u00e1 de novo e interessante? -\",\"isPartOf\":{\"@id\":\"https:\/\/estatic-infotech.com\/pt-br\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/estatic-infotech.com\/eipl-app\/uploads\/2025\/09\/4ee82d48-7f75-4e1f-ba87-83154eb32554.png\",\"datePublished\":\"2024-06-11T00:00:00+00:00\",\"description\":\"Explorando o Kotlin 2.0: O que h\u00e1 de novo e interessante?\",\"breadcrumb\":{\"@id\":\"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/#primaryimage\",\"url\":\"https:\/\/estatic-infotech.com\/eipl-app\/uploads\/2025\/09\/4ee82d48-7f75-4e1f-ba87-83154eb32554.png\",\"contentUrl\":\"https:\/\/estatic-infotech.com\/eipl-app\/uploads\/2025\/09\/4ee82d48-7f75-4e1f-ba87-83154eb32554.png\",\"width\":1027,\"height\":579},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/estatic-infotech.com\/pt-br\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Explorando o Kotlin 2.0: O que h\u00e1 de novo e interessante?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/estatic-infotech.com\/pt-br\/#website\",\"url\":\"https:\/\/estatic-infotech.com\/pt-br\/\",\"name\":\"Estatic Infotech\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/estatic-infotech.com\/pt-br\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/estatic-infotech.com\/pt-br\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/estatic-infotech.com\/pt-br\/#organization\",\"name\":\"Estatic Infotech Pvt Ltd\",\"url\":\"https:\/\/estatic-infotech.com\/pt-br\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/estatic-infotech.com\/pt-br\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/estatic-infotech.com\/wp-content\/uploads\/2025\/09\/cropped-favicon.png\",\"contentUrl\":\"https:\/\/estatic-infotech.com\/wp-content\/uploads\/2025\/09\/cropped-favicon.png\",\"width\":512,\"height\":512,\"caption\":\"Estatic Infotech Pvt Ltd\"},\"image\":{\"@id\":\"https:\/\/estatic-infotech.com\/pt-br\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/estaticinfotech\",\"https:\/\/x.com\/Estaticinfotech\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/estatic-infotech.com\/pt-br\/#\/schema\/person\/de3ff274c0ab0e3b3828e0cf2f9232fd\",\"name\":\"Mansi Senjaliya\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/4ae94401f8a8cd09e37fcea485422949837ec0f03c2846e7302fd41f3ff56a26?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/4ae94401f8a8cd09e37fcea485422949837ec0f03c2846e7302fd41f3ff56a26?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/4ae94401f8a8cd09e37fcea485422949837ec0f03c2846e7302fd41f3ff56a26?s=96&d=mm&r=g\",\"caption\":\"Mansi Senjaliya\"},\"url\":\"https:\/\/estatic-infotech.com\/pt-br\/author\/mansi-senjaliya\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Explorando o Kotlin 2.0: O que h\u00e1 de novo e interessante? -","description":"Explorando o Kotlin 2.0: O que h\u00e1 de novo e interessante?","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/","og_locale":"pt_BR","og_type":"article","og_title":"Explorando o Kotlin 2.0: O que h\u00e1 de novo e interessante? -","og_description":"Explorando o Kotlin 2.0: O que h\u00e1 de novo e interessante?","og_url":"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/","og_site_name":"Estatic Infotech","article_publisher":"https:\/\/www.facebook.com\/estaticinfotech","article_published_time":"2024-06-11T00:00:00+00:00","og_image":[{"width":1027,"height":579,"url":"https:\/\/estatic-infotech.com\/wp-content\/uploads\/2025\/09\/4ee82d48-7f75-4e1f-ba87-83154eb32554.png","type":"image\/png"}],"author":"Mansi Senjaliya","twitter_card":"summary_large_image","twitter_creator":"@Estaticinfotech","twitter_site":"@Estaticinfotech","twitter_misc":{"Escrito por":"Mansi Senjaliya","Est. tempo de leitura":"12 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/#article","isPartOf":{"@id":"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/"},"author":{"name":"Mansi Senjaliya","@id":"https:\/\/estatic-infotech.com\/pt-br\/#\/schema\/person\/de3ff274c0ab0e3b3828e0cf2f9232fd"},"headline":"Explorando o Kotlin 2.0: O que h\u00e1 de novo e interessante?","datePublished":"2024-06-11T00:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/"},"wordCount":2944,"commentCount":0,"publisher":{"@id":"https:\/\/estatic-infotech.com\/pt-br\/#organization"},"image":{"@id":"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/#primaryimage"},"thumbnailUrl":"https:\/\/estatic-infotech.com\/eipl-app\/uploads\/2025\/09\/4ee82d48-7f75-4e1f-ba87-83154eb32554.png","articleSection":["Kotlin Development","Mobile App Development"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/","url":"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/","name":"Explorando o Kotlin 2.0: O que h\u00e1 de novo e interessante? -","isPartOf":{"@id":"https:\/\/estatic-infotech.com\/pt-br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/#primaryimage"},"image":{"@id":"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/#primaryimage"},"thumbnailUrl":"https:\/\/estatic-infotech.com\/eipl-app\/uploads\/2025\/09\/4ee82d48-7f75-4e1f-ba87-83154eb32554.png","datePublished":"2024-06-11T00:00:00+00:00","description":"Explorando o Kotlin 2.0: O que h\u00e1 de novo e interessante?","breadcrumb":{"@id":"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/#primaryimage","url":"https:\/\/estatic-infotech.com\/eipl-app\/uploads\/2025\/09\/4ee82d48-7f75-4e1f-ba87-83154eb32554.png","contentUrl":"https:\/\/estatic-infotech.com\/eipl-app\/uploads\/2025\/09\/4ee82d48-7f75-4e1f-ba87-83154eb32554.png","width":1027,"height":579},{"@type":"BreadcrumbList","@id":"https:\/\/estatic-infotech.com\/pt-br\/blog\/post\/explorando-o-kotlin-2-0-o-que-ha-de-novo-e-interessante\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/estatic-infotech.com\/pt-br\/"},{"@type":"ListItem","position":2,"name":"Explorando o Kotlin 2.0: O que h\u00e1 de novo e interessante?"}]},{"@type":"WebSite","@id":"https:\/\/estatic-infotech.com\/pt-br\/#website","url":"https:\/\/estatic-infotech.com\/pt-br\/","name":"Estatic Infotech","description":"","publisher":{"@id":"https:\/\/estatic-infotech.com\/pt-br\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/estatic-infotech.com\/pt-br\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/estatic-infotech.com\/pt-br\/#organization","name":"Estatic Infotech Pvt Ltd","url":"https:\/\/estatic-infotech.com\/pt-br\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/estatic-infotech.com\/pt-br\/#\/schema\/logo\/image\/","url":"https:\/\/estatic-infotech.com\/wp-content\/uploads\/2025\/09\/cropped-favicon.png","contentUrl":"https:\/\/estatic-infotech.com\/wp-content\/uploads\/2025\/09\/cropped-favicon.png","width":512,"height":512,"caption":"Estatic Infotech Pvt Ltd"},"image":{"@id":"https:\/\/estatic-infotech.com\/pt-br\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/estaticinfotech","https:\/\/x.com\/Estaticinfotech"]},{"@type":"Person","@id":"https:\/\/estatic-infotech.com\/pt-br\/#\/schema\/person\/de3ff274c0ab0e3b3828e0cf2f9232fd","name":"Mansi Senjaliya","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/4ae94401f8a8cd09e37fcea485422949837ec0f03c2846e7302fd41f3ff56a26?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4ae94401f8a8cd09e37fcea485422949837ec0f03c2846e7302fd41f3ff56a26?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4ae94401f8a8cd09e37fcea485422949837ec0f03c2846e7302fd41f3ff56a26?s=96&d=mm&r=g","caption":"Mansi Senjaliya"},"url":"https:\/\/estatic-infotech.com\/pt-br\/author\/mansi-senjaliya\/"}]}},"_links":{"self":[{"href":"https:\/\/estatic-infotech.com\/pt-br\/wp-json\/wp\/v2\/posts\/4547","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/estatic-infotech.com\/pt-br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/estatic-infotech.com\/pt-br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/estatic-infotech.com\/pt-br\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/estatic-infotech.com\/pt-br\/wp-json\/wp\/v2\/comments?post=4547"}],"version-history":[{"count":0,"href":"https:\/\/estatic-infotech.com\/pt-br\/wp-json\/wp\/v2\/posts\/4547\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/estatic-infotech.com\/pt-br\/wp-json\/wp\/v2\/media\/775"}],"wp:attachment":[{"href":"https:\/\/estatic-infotech.com\/pt-br\/wp-json\/wp\/v2\/media?parent=4547"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/estatic-infotech.com\/pt-br\/wp-json\/wp\/v2\/categories?post=4547"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/estatic-infotech.com\/pt-br\/wp-json\/wp\/v2\/tags?post=4547"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}