Kotlin 1.2: Compartilhando Código entre Plataformas

Walmyr Carvalho
6 min readNov 28, 2017

--

Esse texto é uma tradução direta e autorizada do post da JetBrains sobre o release do Kotlin 1.2, feito no blog oficial da linguagem. Caso alguém tenha alguma sugestão ou errata para a tradução, por favor, comente! :)

Hoje estamos lançando o Kotlin 1.2. Esse é um novo release importante e um grande passo no nosso caminho de proporcionar o uso do Kotlin por todos os componentes de uma aplicação moderna.

No Kotlin 1.1, nós lançamos oficialmente o target para Javascript, possibilitando você de compilar o seu código Kotlin para JS e rodar ele no seu browser. No Kotlin 1.2, nós adicionamos a possibilidade de reutilização de código entre a JVM e o JavaScript. Agora você pode escrever as regras de negócios da sua aplicação uma vez, e reutilizar elas por todas as camadas da sua aplicação - no backend, no frontend do browser e no app Android. Nós também estamos trabalhando em bibliotecas para ajudar você a reutilizar mais o código, como uma biblioteca de serialização cross-platform.

O Kotlin 1.2 já está embutido no IntelliJ IDEA 2017.3, que vai ser lançado nessa semana. Se você está usando o Android Studio ou uma versão antiga do IntelliJ IDEA, você pode instalar a versão nova através da janela acessível via Tools > Kotlin > Configure Kotlin Plugin Updates.

Esse release contém muito trabalho feito por contribuidores externos, e gostaríamos de agradecer a todos que nos enviaram feedbacks, reportaram issues e especialmente aos que submeteram pull requests.

Projetos Multiplataforma

Um projeto multiplataforma permite que você compile múltiplas camadas da sua aplicação - backend, frontend e app Android - da mesma base de código. Projetos desse tipo contém tanto módulos comuns, que possuem código independente de plataforma, quanto módulos específicos por plataforma, que possuem códigos para uma plataforma específica (JVM ou JS) e que pode usar bibliotecas específicas de plataforma também.

Para chamar um código específico de plataforma de um módulo comum, você pode especificar declarações esperadas - declarações para o qual todos os módulos específicos por plataforma precisam prover implementações reais.

Para mais informações sobre a feature, por favor veja a documentação.

Como mencionado anteriormente, nós estamos trabalhando num conjunto de bibliotecas comuns para permitir você mover mais da lógica para código comum.

  • kotlin.test, já embutido no Kotlin 1.2, permite que você escreva seu teste uma vez e rode ele na JVM e JS.
  • kotlinx.html suporta renderização isomórfica - usando o mesmo código para renderizar HTML no backend e no frontend
  • kotlinx.serialization permite que você navegue facilmente por objetos Kotlin entre diferentes camadas da sua aplicação, utilizando JSON ou ProtoBuf como formatos de serialização

Note que os projetos multiplataforma são uma feature experimental no momento; isso significa que a feature está pronta para uso, mas talvez nós precisemos mudar o design em um release subsequente (e se nós mudarmos, vamos prover ferramentas de migração para códigos existentes).

Performance de Compilação

Durante o período de desenvolvimento da 1.2, nós colocamos bastante esforço em tornar o processo de compilação mais rápido. Nós conseguimos alcançar aproximadamente 25% de melhoria sobre o Kotlin 1.1, e nós vemos bastante potencial para melhorias adicionais, que vão ser lançadas em updates 1.2.x.

Outras melhorias de Linguagem e Biblioteca

Nós também fizemos uma série de pequenas melhorias para a linguagem e para a biblioteca padrão:

  • Uma sintaxe mais concisa para passar múltiplos argumentos para uma anotação (array de literais)
  • Suporte do modificador lateinit em propriedades de alto nível e variáveis locais, assim como a checagem de quando uma variável lateinit é inicializada;
  • Smart casts mais inteligentes e inferência de tipo melhorada em certos casos;
  • Compatibilidade da biblioteca padrão com restrições de separação de pacotes introduzidas no Java 9;
  • Novo pacote kotlin.math na biblioteca padrão;
  • Novas funções na biblioteca padrão para trabalhar com sequências e coleções, incluindo um conjunto de funções para quebrar uma coleção ou sequência em potenciais grupos sobrepostos de um tamanho fixo.

Para mais informações e exemplos de código, por favor veja a página de documentação What's New In Kotlin 1.2 (em inglês).

Kotlin Pelo Mundo

Desde o release do Kotlin 1.1 em Março desse ano, a linguagem Kotlin teve diversos ganhos em adoção pelo mundo. O ponto culminante disso foi a KotlinConf, nossa primeira conferência internacional, com por volta de 1200 participantes juntos em San Francisco no dia 2 e 3 de Novembro. Nós gravamos todos os talks e os vídeos já estão disponíveis.

Kotlin é agora uma linguagem oficialmente suportada para desenvolvimento Android, com suporte já embutido no Android Studio 3.0, assim como samples oficiais e style guides publicados pelo Google. Como resultado, Kotlin já é usado em mais de 17% dos projetos no Android Studio 3.0, incluindo muitos apps de startups conhecidas assim como empresas da Fortune 500.

No lado do server, o Spring Framework 5.0 foi lançado com várias features de suporte a Kotlin, e o vert.x está suportando Kotlin desde o seu release de versão 3.4.0. Além disso, o Gradle agora vem com suporte para Kotlin DSL já embutido, e o projeto Kotlin DSL do Gradle está rapidamente se aproximando do release 1.0.

O número de linhas de código Kotlin open-source no GitHub passou os 25 milhões. E no StackOverflow, Kotlin é uma das linguagens de mais rápido crescimento e uma das menos odiadas.

A comunidade crescendo em torno do Kotlin é também muito incrível. Existem em torno de 100 grupos por todo o mundo, e tantos talks que nós temos dificuldade de rastrear todos eles - mas dos que a gente sabe sobre, o mapa de talks te dá uma boa ideia de quão difundido o uso do Kotlin realmente é.

E para aqueles que estão apenas começando a aprender Kotlin, existem um número cada vez maior de livros (incluindo nosso próprio livro "Kotlin in Action", agora disponível em Inglês, Russo, Japonês, Chinês e Português), cursos online, tutoriais e outros materiais.

Conheça o Time: Webinar e AMA no Reddit

Para compartilhar com vocês mais informações sobre o novo release, nós planejamos hospedar um webinar sobre projetos multiplataforma com Kotlin 1.2 no dia 7 de dezembro, às 18h00 (CET). Por favor, registre-se, as vagas são limitadas!

O time do Kotlin vai também conduzir um AMA (Ask Me Anything) no Reddit do Kotlin no dia 5 de dezembro. Nós vamos começar à tarde (CET), e vamos estar lá com você pelas próximas 24 horas.

Como Atualizar

Como sempre, você pode experimentar o Kotlin online no try.kotlinlang.org.

  • No Maven, Gradle e npm: Use 1.2.0 como o número de versão para o compilador e para a biblioteca padrão. Veja as docs aqui.
  • No IntelliJ IDEA: A versão 2017.3 já tem o Kotlin 1.2 embutido, em versões anteriores instale ou atualize o plugin para a versão 1.2.
  • No Android Studio: Instale ou atualize o plugin utilizando o Plugin Manager.
  • No Eclipse: Instale o plugin utilizando o Marketplace.
  • O compilador via linha de comando pode ser baixado da página de releases do GitHub.

Compatibilidade

No Kotlin 1.2 a linguagem e a biblioteca padrão são retrocompatíveis (modulo bugs). Se alguma coisa foi compilada e roda na 1.0 ou 1.1, ela vai continuar funcionando na 1.2. Para ajudar grandes times que atualizam gradualmente, nós fornecemos uma chave no compilador que desabilita novas features. Aqui tem um documento que detalha as possíveis armadilhas.

-

Tenha um ótimo Kotlin!

--

--

Walmyr Carvalho

trying my best ✨ • android @polaroid 📸 • road cyclist 🚴🏽 • beginner climber 🧗‍♀️ • community @androiddevbr @googledevexpert @googleforstartups 💬