Kotlin: Presente ou Futuro?

Tempo de leitura: 9 minutos

O Kotlin agora é uma linguagem de programação oficial para o desenvolvimento de aplicativos Android.

E agora? Largo o Java e foco no Kotlin? Aprendo as duas linguagens?

Certamente, neste momento você deve estar com muitas dúvidas em sua cabeça de qual caminho seguir e como começar a estudar a mais nova linguagem oficial do Android.

De fato, o Kotlin veio para revolucionar a maneira de criar aplicativos Android, mas devemos tomar muito cuidado na hora de escolher qual caminho seguir.

Então, continue lendo este artigo para entender sobre o Kotlin e aproveitar da melhor forma a linguagem:

O que é o Kotlin

O Kotlin é uma linguagem estaticamente tipada, desenvolvida pela JetBrains, cuja sintaxe é mais expressiva e concisa do que a do Java. Com recursos como expressões lambda, sobrecarga de operadores, templates de strings e muito mais.

Como o Java e o Kotlin são altamente interoperáveis, elas podem ser usadas juntas no mesmo projeto. Inclusive, o Kotlin tem como base, e é executado na Maquina Virtual do prório Java.

O Kotlin é muito intuitivo e fácil de aprender para desenvolvedores Java. A maioria das partes da linguagem são muito semelhantes ao que já sabemos, e as diferenças nos conceitos básicos podem ser aprendidas rapidamente.

Se você é um programador Java experiente, você será capaz de aprender o Kotlin de forma muito fácil, caso contrário, será como aprender qualquer outra linguagem.

Algumas caracteristicas interessantes da linguagem.

Expressiva

Esta é uma das suas qualidades mais importantes, você pode escrever mais com muito menos código.

Segura

Kotlin tem seguro contra valores nulos, o que significa pe validado situações de valores nulos em tempo de compilação, para evitar exceções em tempo de execução.

Funcional

O Kotlin é uma linguagem orientada a objetos, não uma linguagem funcional pura.

No entanto, como muitas outras linguagens modernas, ela usa muitos conceitos funcionais, como expressões lambda, para resolver alguns problemas de uma maneira muito mais fácil.

Outra característica interessante é a maneira como lida com coleções.

Funções de Extensão

Isso significa que podemos estender qualquer classe e adicionar novos recursos, mesmo se não tivermos acesso ao código-fonte.

Interoperável

Você pode continuar usando a maioria das bibliotecas e códigos escritos em Java, porque a interoperabilidade entre elas é excelente. É até possível criar projetos mistos, com os arquivos Kotlin e Java coexistindo.

Kotlin vs Java

Pode ser empolgante, mas também um pouco assustador para qualquer programador trocar de uma linguagem que você já tem uma certa experiência, por algo totalmente novo.

Nas comunidades de desenvolvimento Android, o Kotlin está sendo comparado ao Java da mesma maneira que o Swift foi comparado ao Objective-C.

Curva de Aprendizado

A curva de aprendizado para usar do Kotlin é bastante baixa: qualquer desenvolvedor Java experiente pode aprender em poucas horas. A documentação oficial da JetBrains é completa e muito bem feita.

Desenvolvedores C# também vão se sentir em casa trabalhando com a linguagem, uma vez que as duas línguas compartilham algumas características.

Suporte

Para desenvolvimento Android utilizando o Android Studio, existe um suporte muito bom, já que o Android Studio é baseado no IntelliJ, que também foi construído pela JetBrains.

Como ja falado, ele também interage perfeitamente com o Java podendo utilizar arquivos das duas linguagens no mesmo projeto.

O uso de bibliotecas Java em projetos Kotlin também é simples: ele simplesmente funciona.

O inverso também é verdade: você pode facilmente incluir qualquer biblioteca escrita em Kotlin dentro do código Java.

Principais Vantagens

Talvez a vantagem mais importante do Kotlin sobre o Java seja o conjunto de recursos. O Kotlin adiciona novas capacidades importantes nos projetos Android que ainda não é possível encontrar em Java.

Algumas capacidades incluem.

Proteção Contra Nulo (Null Safety)

Essa proteção elimina a maioria dos problemas referências nulas, tornando todos os tipos não nulos por padrão – o que significa que o compilador não permitirá que você use uma variável não inicializada, ou com possibilidade de nulo.

Se você precisar de uma variável nula, você deve declarar o tipo como “anulável”, adicionando um ponto de interrogação após o tipo.

Funções Estendidas

Você pode adicionar comportamentos a uma classe sem estendê-la diretamente. Através de uma função de extensão, você pode chamar uma função de um objeto como se fosse parte de sua classe.

Poderíamos criar uma função de extensão para String chamada novaFuncao e chamá-la de minhaString.novaFuncao(). Como sabemos, novaFuncao não é uma função de String, mas sintaticamente ela é.

Então, como isso funciona? Você só precisa adicionar a função a classe String conforme exemplo abaixo:

Lambdas

Se você estiver familiarizado com JavaScript (ou C# e muitos outros), você provavelmente já conhece sobre as funções lambdas.

Uma função lambda recebe funções como parâmetros ou retorna uma função. As funções podem ser armazenadas em variáveis para uso posterior, passadas como parâmetro ou criadas dentro de outra função.

Classes de Dados (Data Classes)

Este recurso traz uma grande economia de tempo. Pois a maioria das nossas aplicações são orientadas por dados, muitas vezes precisamos criar classes com apenas propriedades e campos para armazenar dados.

Em Java, isso é muito custoso, exigindo os métodos get/set para cada campo. Com o Kotlin, podemos declarar a classe e todas as suas propriedades em uma única linha. O compilador irá gerar todos os getters e setters.

Imutabilidade

Uma grande preocupação que os desenvolvedores precisam ter ao desenvolver aplicativos multithread é a administração do estado. Se uma variável é mutável, ela pode ser alterada por qualquer thread que possa acessá-la.

Isso significa que, se os dados puderem ser alterados por várias fontes, você precisará implementar manualmente a sincronização, o que evita a perda de dados, mas aumenta a complexidade do código e o tempo de execução. Se os dados nunca podem ser alterados, eles podme ser acessados por várias threads sem problema, uma vez que são imutáveis.

No Kotlin, você pode declarar variáveis com as palavras-chave var e val. O primeiro declara uma variável que pode ser alterada; O último uma variável que uma vez atribuído um valor nunca pode mudar.

Isso dá ao desenvolvedor e ao compilador confiança de que a variável não pode ser alterada. Em Java temos funcionalidade semelhante com palavra-chave final.

A biblioteca padrão do Kotlin inclui uma série de interfaces de coleções imutáveis e funções para ajudá-lo a escrever um código imutável. Por exemplo, a função listOf() cria uma lista imutavél.

Co-rotinas

Normalmente, quando os desenvolvedores precisam executar uma tarefa de longa execução, como uma chamada externa de rede ou carregar um arquivo do disco, a thread de chamada fica bloqueada aguardando a conclusão da operação.

As co-rotinas nos permitem executar esses tipos de operações sem bloquear seu código. Em vez disso, é utilizada uma operação mais leve chamada co-rotina.

Podemos escrever um código aparentemente síncrono que é, na verdade, assíncrono e durante a compilação, o código será transformado para assíncrono. Isso significa que essa técnica não depende da máquina virtual ou do sistema operacional.

Desvantagens

Embora desenvolver aplicativos Android utilizando o Kotlin, em muitos casos é melhor do que com Java, temos alguns desafios.

Por exemplo, um aplicativo construído com Kotlin provavelmente resultará em um tamanho de pacote de arquivos maior do que um construído puramente em Java. Isso ocorre porque o Kotlin tem sua própria biblioteca que é adicionada no seu aplicativo.

Além disso, o tempo de compilação de códigos Kotlin é um pouco mais lento usando o Gradle, que pode ser frustrante. Embora o Gradle também seja lento usando apenas Java, não é tão lento quanto com Kotlin.

Presente ou Futuro?

Como vimos, o Kotlin roda em cima da Maquina Virtual do Java e facilita muitas coisas para o desenvolvedor Android, então basicamente, ele ajuda a escrever códigos mais limpos e de forma mais fácil.

Depois disso, uma vez que o código está sendo executado, ele cria um arquivo de classe semelhante ao que é obtido quando o arquivo .java é executado.

Então, no final das contas, o Kotlin é um recurso complementar e um bônus para o desenvolvedor Android poder codificar de forma eficiente, com muito mais desempenho e de forma amigável.

Em um futuro a médio prazo, é provavél que a maioria dos aplicativos Android sejam desenvolvidos utilizando apenas o Kotlin, mas a chance disso acontecer em um futuro próximo é muito pequena.

Então, não precisamos sair de forma desesperada tentando aprender a nova linguagem e esquecer o Java completamente, permitindo os desenvolvedores fazerem essa transição de forma tranquila.

Para Quem Já Desenvolve Aplicativos

Espero que esse post tenha te ajudado a sanar várias dúvidas sobre o Kotlin.

Para você, que já desenvolve seus aplicativos Android utilizando Java, essa é uma ótima oportunidade de dar um upgrade nos seus conhecimentos, habilidades e diferenciar-se dos outros desenvolvedores.

Se você quiser aprender ainda mais sobre o Koltin e mergulhar nessa nova linguagem, dá uma olhada nesse Treinamento Completo que foi preparado para revelar absolutamente todos conceitos essenciais do Kotlin para desenvolvimento Android.

Depois é só juntar suas habilidades em desenvolvimento Android e começar a criar seus projetos com o Kotlin agora mesmo.

Para Quem Está Começando a Desenvolver Aplicativos

Minha recomendação, comece ou continue estudando o Java para desenvolver seus aplicativos Android e paralelo a isso, ao poucos, comece a estudar o Kotlin e fazer pequenas coisas com a linguagem.

Imagino que você já esteja estudando o Java (caso não, comece por aqui), e em paralelo, comece a estudar a linguagem Kotlin. Na hora de desenvolver seus projetos de estudo, fala duas versões, uma em Java e outra em Kotlin.

Gostou do conteúdo sobre o Kotlin?

Então compartilhe esse artigo com seus amigos e qualquer dúvida deixe nos comentários aqui em baixo.

  • Marcos Vinicius

    Olá! Parabéns pelo artigo. Precisamos de mais pessoas expandindo conhecimento.
    Só uma observação sobre a desvantagens quando você fala que tem que adicionar a biblioteca do kotlin. A JetBrains já pensou e no AS 3.0 já não precisa colocar mais a biblioteca.
    Desde já parabenizo por todo seu trabalho.

  • Obrigado pelo feedback @disqus_EZyCCocA57:disqus.
    Abraços.

  • Anderson Souza Francisco

    Estou aprendendo Android em JAVA. Quando vi o anuncio sobre o Kotlin quase tive um infarto!
    Esse seu artigo me deu um certo conforto, mas sinto que devo aprender logo em JAVA e já partir para o Kotlin e aproveitar que está tudo muito “fresco” no cérebro.

  • Marcos Moura Junior

    hahahahahah exatamente isso , aconteceu a mesma coisa comigo !

  • Rafael César Neves

    Não sou um expert no desenvolvimento para Android, estou aprendendo, mas já tentei estudar Java diversas vezes e sempre notava o quanto era trabalhoso para fazer qualquer coisa em Java, o quanto é difícil codar de forma “legível”, e isso sempre deixava a linguagem como ultima opção.. Vejo uma forte tendência nas outras linguagens com relação a se ter um código mais legível, de fácil interpretação, e que não exige comentários.. Por isso vejo o Kotlin como um upgrade para uma linguagem que há anos já estava implorando por essa mudança, que eu creio que vai aumentar muito a produtividade do programador, e com certeza isso vai alcançar novos adeptos..

    Parabéns pelo artigo, muito explicativo e esclarecedor, me ajudou muito a entender melhor a proposta do Kotlin..

  • Sammy San

    Mano não me arrependo de ter cadastrado meu email aqui !!! parabéns

  • Sammy San

    kkkkk vou parti para aprender também !!!

  • Nicolai

    Crl muito louco, parece uma mistura de C# com javascript, muito show

  • Tafarel Carvalho

    Resumindo tudo: Royaties…

  • Tiago Monteiro

    Acho que se é tão facil a curva de aprendizagem é bastante elevada e nao baixa como diz no artigo. Curva de aprendizagem é o que aprendemos em função do tempo.

  • Ola Tiago,

    o tempod e aprendizado vai de pessoa para pessoa, mas o Kotlin tem uma sintaxe mais simples e realmente é mais fácil de aprender.

    Abraços.

  • Falaa Sammy,

    Que bom que esta gostando das nossas dicas e conteudos sobre desenvolvimento Android.

    Continue acompanhando, abraços.

  • Rodrigo Cantelli

    Tiago, imagine um gráfico de linhas. Quanto maior a curva que a linha nesse gráfico fizer, maior serão os valores no gráfico. Essa é a ideia, quanto maior for a complexidade de aprendizado, mais a linha do gráfico se eleva. Logo, maior complexidade = maior curva de aprendizado. Menor complexidade, menos a curva da linha se eleva, tendo uma baixa curva de aprendizado.

  • Richard

    Oi, identifiquei um erro na ortografia do texto.

    Segura

    O Kotlin tem seguro contra valores nulos, o que significa pe validado situações de valores nulos em tempo de compilação, para evitar exceções em tempo de execução.

  • Jair Avilés

    Oi Fillipe,

    Achei bem massa seu artigo. Posso traduzir ele no espanhol e publicar no outro site? Com certeza vou fazer referencia em vocês como fonte de conteudo.