Em primeiro lugar, é importante dizer que o objetivo deste artigo é comparar as duas linguagens, Java vs Kotlin, para te ajudar a decidir qual a melhor opção e não enaltecer uma e diminuir outra.
Dessa forma, antes de mais nada, uma breve explicação: a linguagem Java é líder de mercado no mundo corporativo e foi também a única forma de desenvolver aplicações nativas para Android.
No entanto, em 2010, foi criada a linguagem de Programação Kotlin (que também roda na JVM – Java Virtual Machine) para resolver alguns problemas que pessoas desenvolvedoras enfrentam usando apenas a linguagem Java.
Dada essa breve introdução, vamos mergulhar nas duas duas linguagens e entender qual a melhor opção nesse conteúdo em relação a vantagens, desvantagens e performance de Java vs Kotlin.
Quando e como surgiu Kotlin?
Mesmo sendo um conteúdo voltado para comparação de Java vs Kotlin, é interessante ficar por dentro do surgimento das linguagens.
A JetBrains, empresa de desenvolvimento de software famosa por desenvolver ferramentas para pessoas desenvolvedoras, como a IDE Intellij, estava procurando uma linguagem que tivesse algumas funcionalidades que Java não possuía.
Em meio a isso, na época, uma solução pensada foi a linguagem Scala, que roda na JVM, mas ela logo foi descartada, pois sua compilação era muito lenta. Dessa forma, em 2010, a JetBrains criou o Kotlin e em 2016 – 2017 a linguagem se tornou pública e foi sendo adotada por devs.
Por outro lado, 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.
Vale um complemento de leitura, por exemplo, do artigo “Extension functions em Kotlin!”
Quais as vantagens do Kotlin?
Em primeiro lugar, é importante salientar que pessoas programadoras gostam do Kotlin por ser simples e possuir menos regras em comparação com o Java. Além disso, o Kotlin pode ser considerado como uma linguagem de programação de código aberto estática, compatível com programação orientada a objetos e funcional.
JetBrains nos bastidores
A Jetbrains é uma excelente empresa e seus produtos são de qualidade inegável. Sempre propondo algo novo, com o foco em melhorar a linguagem e aumentar a popularidade do Kotlin e o uso do Android Studio, motivando a ainda pequena comunidade de pessoas usuárias 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 para as pessoas programadoras Kotlin.
Dessa forma, pessoas Devs 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
O 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. Por exemplo:
- 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. No exemplo abaixo a diferença é bem grande.
Classe App em Java
Classe equivalente em Koltin
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 fáceis de entender e concisos.
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 ao adicionar corrotinas a Kotlin!
Quais as desvantagens de usar o Kotlin?
Nessa disputa, existem desvantagens! Pelo lado do Kotlin, veremos que elas passam por maior engajamento voltado para a linguagem Java até a dificuldade de contratação de profissionais.
Longevidade e consolidação do Java
Existe uma comunidade extensa e engajada de devs 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.
Dessa forma, podemos dizer o mesmo para o Kotlin?
Contratação de profissionais Kotlin
A contratação de profissionais sêniores Java não é uma tarefa fácil, em muitos dos casos. Porém, a dificuldade de encontrar uma pessoa programadora Kotlin é muito maior.
Dessa forma, é inevitável a opção de contratar alguém que trabalhe de forma direta com Java e aguardar uma leve curva de aprendizado para que essa pessoa consiga ser produtiva no Kotlin.
Em uma palestra do Zup Open Talks, revisitamos o estado atual das estruturas de back-end Kotlin, que acabam ilustrando um pouco dessa questão sobre a contratação de profissionais Java para produção Kotlin. Assista:
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 devs, pois podem mudar para o desenvolvimento de aplicativos da Web e do servidor, caso decidam que o desenvolvimento do Android não é adequado.
Velocidade de compilação
Pessoas desenvolvedoras 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. No entanto, não é tão ruim quanto a linguagem Scala.
Está gostando do conteúdo Java vs Kotlin? Já estamos na reta final desse artigo e se você não quer perder nenhum conteúdo como esse e outros da Zup no seu e-mail.
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”.
A tese completa você pode conferir aqui!
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.
Entretanto, não há possibilidade de descarte quando o assunto é continuar com o Java por conta da grande dificuldade de contratação de novas pessoas 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 e suas versões semestrais estão sendo lançadas regularmente. Além disso, conta com algumas versões LTS (Long Term Support, ou Suporte de Longo Prazo, em tradução livre) como o Java 11 e o Java 17.
Vale lembrar que também devemos avaliar a possibilidade de atualizar a versão do Java em vez de migrar para Kotlin.
Por fim, para concluir, indico ficar por dentro de tudo sobre o Java! Confere o episódio #11 do Zupcast, o podcast da Zup!
Nessa disputa de Java vs Kotlin, com quem você fica? Conta pra gente nos comentários o que você acha sobre cada um e suas vantagens!