Índice
Entender as principais características e vantagens das linguagens de programação voltadas para desenvolvimento mobile é fundamental para quem deseja atuar com aplicativos. No caso do desenvolvimento Android nativo, uma das principais comparações no meio é Java vs Kotlin.
O primeiro, talvez, seja a linguagem mais famosa do mercado. Enquanto o segundo é mais recente e menos conhecido.
Além disso, o Koin, uma ferramenta de injeção de dependência desenvolvida em Kotlin, também surgiu como alternativa ao Google Dagger. Ambas facilitam a vida de pessoas programadoras.
Todavia, elas têm diferenças. Quer saber quais são? Continue lendo e entenda mais sobre o assunto!
O que é Kotlin
Kotlin é uma linguagem orientada a objetos criada pela JetBrains, em 2011. Entre as suas principais características, temos o fato de ela ser uma linguagem multiplataforma. Visto que é possível desenvolver um aplicativo inteiro com ela. Isto é, desde o back-end até o front-end.
Além disso, ela é estaticamente tipada e compatível com Java. Desse modo, é possível migrar o desenvolvimento de um aplicativo de uma linguagem (Java) para a outra (Kotlin) gradualmente, classe por classe. Isso sem que o funcionamento do app seja prejudicado.
Java Vs Kotlin
Existem alguns motivos que tornam essa linguagem vantajosa. Confira alguns dos principais! 👇
1. Mais simplicidade
Para começar, há menos “verbosidade”. Isso porque, em Kotlin, dá para desenvolver funções isoladas, sem a necessidade de uma classe específica para isso. Dessa forma, em relação ao Java, é possível reduzir o número de linhas produzidas por ação.
2. Null Safety
Além disso, o Kotlin é null safety. Isso porque o sistema de tipos é capaz de diferenciar entre referências que não podem conter nulas (não nulas) e aquelas que podem conter (referências anuláveis).
Basicamente, a pessoa desenvolvedora define quais parâmetros ou variáveis podem ou não receber um valor nulo. Portanto, é possível evitar NullPointException. Dessa forma, a linguagem não dá esse erro de compilação.
3. Extensions
Outro ponto interessante é o recurso extension. Por causa dele, não é necessário criar uma classe específica, somente a função. Também não é preciso enviar o valor que se quer modificar ou tratar por parâmetro, pois ele acaba sendo uma extensão de uma string.
Dessa forma, quando você colocar string, “ponto” (o símbolo) e o nome da extension, qualquer string que você pegar depois, e incluir o ponto, permitirá que você consiga acessar a extension que criou.
Basicamente, o recurso extension possibilita ampliar uma classe com funcionalidades novas sem que seja necessário lidar com heranças. Também não é preciso empregar algum padrão Decorator.
4. Detalhes que facilitam a programação
Além disso, há detalhes que tornam mais fácil a vida de uma pessoa programadora no Kotlin, como a exclusão do ponto e vírgula depois da instrução, variáveis não tipadas e o uso da funcionalidade coroutines.
Este recurso permite desenvolver códigos assíncronos com maior facilidade, de modo sequencial e sem empregar o padrão de Callback. Em suma, coroutines são como threads mais leves.
Graças a isso, elas utilizam menos recursos computacionais. São voltadas para tarefas não bloqueantes e paralelas.
Injeção de dependência: Dagger e Koin
A injeção de dependência é uma técnica útil e muito usada em desenvolvimento Android, devido à possibilidade de reutilização de objetos. Essa técnica passa para o software a responsabilidade de inicializar dependências.
Ao utilizar um framework de injeção de dependência, ele próprio ficará encarregado, por exemplo, de instanciar as dependências em determinado momento do código.
O uso de injeção de dependência proporciona algumas vantagens para um projeto, como, baixo acoplamento, facilidade de refatoração e de testar unitariamente. Além, é claro, da reutilização de código.
O Dagger é uma ferramenta de injeção de dependência desenvolvida pelo Google. Como alternativa à ela, temos o Koin, desenvolvido em Kotlin.
Koin vs Dagger
Apesar de ser uma ferramenta “poderosa”, o Dagger é mais complexo de configurar. Isto, em projetos de software menores e mais simples, pode atrapalhar.
O mesmo vale para sua grande capacidade. Afinal, às vezes uma solução simples acaba sendo mais útil do que uma com mais recursos do que o necessário.
Essa maior complexidade também gera uma alta curva de aprendizagem. Ou seja, tende a demorar mais para aprender a mexer em suas configurações. Além disso, essa ferramenta pode ser encarada, de certo modo, como “verbosa”.
O Koin funciona basicamente por declarações de módulos. Além disso, ele apresenta alguns pontos positivos em relação ao Dagger, como facilidade de aprender sobre a ferramenta e de usá-la. No entanto, ele também apresenta desvantagens.
Por exemplo, certos erros relacionados a injeção de dependência poderão passar durante o processo de “buildar” o aplicativo, resultando em fechamento abrupto do app posteriormente quando você estiver nos fluxos relacionados a esses erros.
Por outro lado, no Dagger, eventuais esquecimentos poderão ser mostrados no tempo de compilação. Ou seja, quando você for “buildar” o app, ele dará erro e você poderá entender o que houve a fim de consertar.
Todavia, a utilização de Dagger tende a aumentar o processo de build de um app, pois todas as dependências seriam resolvidas no tempo de compilação.
Hilt e KMM
Vale destacar que o Kotlin e o Koin não significam o “fim” do Java e do Dagger. No caso do Java, é importante lembrar que ele é usado não só no desenvolvimento mobile, mas também para outros tipos de projetos. O próprio Kotlin roda em cima de uma JVM.
O Google, recentemente, lançou o Hilt, um “novo” Dagger. Uma das pretensões da ferramenta é simplificar a infraestrutura do Dagger.
Além disso, ela também tem o intuito de desenvolver um conjunto padrão de escopos e componentes para tornar mais fácil a legibilidade, a configuração e o compartilhamento de códigos entre aplicativos.
No entanto, há certos plugins no mercado que já fazem algumas funções que o Hilt se propõe a fazer. Por exemplo, o plug-in Anvil, uma biblioteca feita em cima do Dagger, justamente para facilitar a comunicação entre a ferramenta e o Android.
O Kotlin, por sua vez, tem um projeto chamado de “Kotlin Multiplatform Mobile” (KMM). Com ele, a pretensão é conquistar mais profissionais de desenvolvimento híbrido pois, com o KMM, será possível desenvolver apps tanto para Android quanto para iOS.
Na hora de comparar Java vs Kotlin e Koin vs Dagger para escolher quais dessas opções usar, lembre-se de testar todas. Dessa forma, você poderá tomar uma decisão mais acertada.
➕ Aproveite agora para conhecer mais sobre modularização Android e melhore seus conhecimentos sobre desenvolvimento mobile!