A Linguagem Java é líder de mercado no mundo corporativo e foi também a única forma de desenvolver aplicações nativas para Android. Em 2010, foi criada a linguagem de Programação Kotlin (que também roda na JVM – Java Virtual Machine) para resolver alguns problemas que os desenvolvedores enfrentam usando apenas a linguagem Java.
O objetivo deste artigo é comparar as duas linguagens, Java vs Kotlin, para te ajudar a decidir qual a melhor opção.
Quando e como surgiu Kotlin?
A JetBrains, empresa de desenvolvimento de software famosa por desenvolver ferramentas para desenvolvedores, como a IDE Intellij, estava procurando uma linguagem que tivesse algumas funcionalidades que Java não possuia.
Na época, uma solução pensada foi a linguagem Scala, que roda na JVM, mas ela logo foi descartada, pois sua compilação é muito lenta. Em 2010, a JetBrains criou o Kotlin e em 2016 – 2017 a linguagem se tornou pública e foi sendo adotada por vários desenvolvedores.
No campo do Android a evolução foi ainda maior da linguagem, o Android Studio começou a usar a plataforma do Intellij e o Google adotou o Kotlin como linguagem padrão para desenvolvimento Android.
Leia também > Extension functions em Kotlin!
Quais as vantagens do Kotlin?

JetBrains nos bastidores
A jetbrains é uma excelente empresa e seus produtos são de qualidade inegável. Eles estão diariamente propondo algo novo, empenhados em melhorar a linguagem e aumentar a popularidade do Kotlin e o uso do AndroidStudo, motivando a ainda pequena comunidade de usuários do Kotlin.
Interoperabilidade
A interoperabilidade é o objetivo principal de Kotlin.
Desde o início, a intenção do projeto foi usar o conhecimento e a experiência existentes para disponibilizar todas as bibliotecas aos programadores da Kotlin. Os desenvolvedores podem simplesmente escrever módulos no Kotlin que funcionam perfeitamente dentro do código Java existente. Ao emitir o Bytecode, um compilador Kotlin permite que os dois idiomas trabalhem em uníssono no mesmo projeto.
Sintaxe Limpa e Expressiva
Kotlin introduz várias melhorias que causam um impacto significativo na legibilidade do código, aumentando a produtividade e trazendo mais facilidade para manutenção do código gerado.
Para mencionar alguns:
- Ponto e vírgula são opcionais.
- Chaves “{}” são opcionais nos casos em que não são úteis.
- Getter/Setters são opcionais.
- Tudo é objeto – primitivos são usados nos bastidores automaticamente, se necessário.
- Mais consistente e menos verboso – Em algumas situações é possível ter o mesmo comportamento que no Java usando muito menos código, o exemplo abaixo a diferença é bem grande.
<p> CODE: https://gist.github.com/maluaraujo/c919d7855ab10506a9c04c6c38ead6fe.js</p>
<p> CODE: https://gist.github.com/maluaraujo/cee7a2232e9cd33af262c636faf9920f.js</p>
Kotlin is null safe por padrão
As variáveis não são nulas por padrão, permitindo a verificação nula durante o tempo de compilação, o que reduz bastante a ocorrência do temido NullPointerException durante o tempo de execução.
Se você quiser uma referência anulável, será necessário adicionar um ponto de interrogação ao seu tipo de dados da seguinte forma: var secret: String? nomedocampo = null.
Coroutines
É uma ótima maneira de escrever código assíncrono de forma mais natural. Eles são essencialmente threads mais claras e concisas.
Em Java, você normalmente criaria threads de segundo plano para gerenciar operações intensivas. Isso muitas vezes levou ao aumento da complexidade e da frequência das dores de cabeça. Coroutines também permitem muitas outras possibilidades, como simultaneidade, atores e muito mais.
Se você não tentou programação assíncrona em Java, pode não estar pulando de alegria, mas é louvável o excelente trabalho que a equipe da JetBrains decidiu adicionar corrotinas a Kotlin!
Quais as desvantagens de usar o Kotlin?

Experimentado e Testado
Existe uma comunidade extensa e engajada de desenvolvedores construindo todos os tipos de sistemas e aplicativos com Java há mais de 20 anos. O primeiro lançamento oficialmente estável do Kotlin foi no início de 2016, já o Java tem estabilidade e resistiu ao teste do tempo.
Podemos dizer o mesmo para o Kotlin?
Contratação de profissionais Kotlin
A contratação de profissional Sênior Java não é uma tarefa fácil, em muito dos casos.
A dificuldade de encontrar um programador Kotlin será muito maior e inevitavelmente uma opção é contratar um profissional de Java e aguardar uma leve curva de aprendizado para que ele consiga ser produtivo no Kotlin.
Java é muito mais que Android
Java continua sendo uma das principais linguagens para o desenvolvimento de servidores e aplicativos da web. Pesquisa do Google, Facebook, Amazon, YouTube, Gmail e Netflix são alguns dos sites populares que usam Java em sua pilha de tecnologia.
O amplo alcance e a flexibilidade do Java são particularmente valiosos para os desenvolvedores, pois podem mudar para o desenvolvimento de aplicativos da Web e do servidor se decidirem que o desenvolvimento do Android não é para eles.
Velocidade de compilação
Desenvolvedores informaram sobre a flutuação na velocidade de compilação de códigos Kotlin. Em alguns casos, é muito rápido e, em outros casos, é significativamente mais lento, mas não chegando a ser tão ruim quanto a linguagem Scala.
Java vs Kotlin Performance
Aqui, Kotlin e Java são praticamente iguais. Nós sentimos que a diferença no desempenho e tempo de compilação não é grande o suficiente para ser um fator decisivo, mas vamos aos detalhes:
Patrick Schwermer, em sua tese, fez comparações de benchmark sobre o desempenho de dois aplicativos idênticos e os estudos mostram que “Existem diferenças em eficiência de tempo de execução e consumo de memória entre implementações Java e Kotlin, Java também é mais performático no funcionamento do Garbage Collection”.
Conclusão
Em Maio de 2017, Kotlin foi definido pela Google como a linguagem principal para desenvolvimento Android e a ideia não foi comprada só por ela. A comunidade também está comprando a ideia de usar Kotlin e seu ganho de produtividade me faz ser tendencioso na escolha dele para o desenvolvimento Mobile, sem descartar a possibilidade de continuar com o Java por causa da grande dificuldade de contratação de novos profissionais.
Para desenvolvimento do lado do servidor sou muito reticente em adotar o Kotlin em larga escala por não estar maduro o suficiente e sem tantas integrações com diversos frameworks.
O Java também está evoluindo atualmente na sua versão 11 LTS (Long Team Suport) e também é disponibilizado em versões semestrais. Devemos avaliar também a possibilidade de atualizar a versão do Java em vez de migrar para Kotlin.
E você, entre java e kotlin, com qual você fica? Conta pra gente nos comentários o que você acha sobre cada um e suas vantagens!


Vagas em tecnologia
Aqui na Zup, nós acreditamos em profissionais fora da curva e que querem crescer exponencialmente. Você gosta de desafios? Veja nossas vagas em tecnologia.
