Busca avançada

Do Java ao Kotlin - 5 diferenças entre as linguagens base do desenvolvimento Android – Parte 1

quinta-feira, 31 de janeiro de 2019 por Jefferson Silva
Do Java ao Kotlin - 5 diferenças entre as linguagens base do desenvolvimento Android – Parte 1

Com o crescimento do Kotlin no mercado, com sua expansão para outros meios de desenvolvimento além do mobile (server-side, javascript, native, etc...) e com a linguagem caindo na graça dos desenvolvedores por características como: concisão, segurança, interoperabilidade, entre outras, os olhos se voltaram rapidamente para ela. Que também chamou a atenção de desenvolvedores Java devido a interoperabilidade entre as linguagens e a possibilidade de uma migração menos dolorosa e por partes. Nessa série de artigos vou apresentar algumas das principais diferenças entre o Kotlin e o Java.

1 - Em Kotlin tudo são classes e objetos

Diferente do Java, no Kotlin não trabalhamos diretamente com os tipos primitivos, ao invés disso, variáveis básicas como inteiros, decimais, booleanos e caracteres são representadas como classes. Essa característica nos possibilita o trabalho com funções e propriedades definidos nessas classes. Apesar de no Java termos o recurso de “Classe Wraper”, para trabalhar com os tipos primitivos a nível de classe, a prática não é tão difundida quanto no Kotlin que já a adota por padrão.

2 - Variáveis implicitamente tipadas

No Kotlin temos a disposição o recurso de variáveis implicitamente tipadas, onde utilizamos a palavra-chave “var” no lugar da declaração do tipo da variável e o compilador infere o tipo. Ex:

JAVA

String nome = "Jefferson";

KOTLIN COM ATRIBUIÇÃO DE VALOR

var nome = "Jefferson"

KOTLIN SEM ATRIBUIÇÃO DE VALOR

var nome: String

Nesse momento, se você é um desenvolvedor Java atualizado com as últimas versões da linguagem, deve estar pensando: “Ué, mas a partir do Java 10 já temos essa possibilidade”, e você está correto, essa funcionalidade foi adicionada na linguagem, mas a nível de Android, a plataforma ainda não dá suporte completo as últimas versões do Java, enquanto no desenvolvimento Android com Kotlin isso já está disponível. E não, não errei a sintaxe, o Kotlin não precisa de ponto-e-vírgula no final dos comandos. laugh

3 - Casting implícito

Um ponto que, à primeira vista, desenvolvedores Java podem se sentir um pouco desconfortáveis no uso do Kotlin é devido ao fato do Kotlin não implementar o casting implícito. Tal recurso se trata de uma cadeia hierárquica, onde um tipo primitivo pode ser implicitamente convertido para outro.
 

CASTING IMPLÍCITO NO JAVA

int numero = 10;
long outroNumero = numero;

No Kotlin os castings são explícitos e utilizam os métodos com o prefixo “to” das classes que representam os tipos primitivos:

•    toByte()
•    toChar()
•    toShort()
•    toInt()
•    toLong()
•    toDouble()
•    toFloat()

CASTING NO KOTLIN

var numero = 10
var outroNumero: Long
outroNumero = numero.toLong();

4 - Smart Casts

Outro recurso disponível apenas no Kotlin é o Smart Cast. Utilizando o operador “is” do Kotlin, em um bloco “if” por exemplo, para checar o tipo da variável, o compilador já interpreta que, caso o bloco de código seja executado, a variável pode ser convertida para aquele tipo e disponibiliza as funções e propriedades do tipo. Ex:

var nome: Any
nome = "Jefferson"

if(nome is String)
   println(nome.length)

No código acima eu declarei a variável nome sendo do tipo “Any” e atribuí a ela uma String. No Kotlin, “Any” é o objeto raiz, equivalente ao “object” no Java. Na segunda linha atribuí o valor “Jefferson”, na terceira fiz um condicional com o operador “is” e dentro do if o compilador pressupõe que nome é de fato uma String, logo consigo chamar métodos e propriedades de String sem a necessidade de fazer uma conversão.

5 - Interpolação de Strings

Um recurso muito útil no Kotlin e que não se encontra presente no Java é o uso de Interpolação de Strings. Mas o que seria isso? É a prática de adicionar variáveis dentro do texto de uma String e ao executar, o compilador substituir o nome da variável ou o bloco pelo seu valor. Ex:

var nome = "Jefferson"
var msg = "Hello, $nome!"

Note o uso do “$” para indicar o que vai ser interpretado como valor. Além disso, caso necessário, é possível adicionar um bloco para indicar uma execução antes da interpretação. Ex:

var resultado = "2 + 3 = ${2 + 3}"

No Java existem formas de alcançar o mesmo resultado, porém nada tão elegante e simplificado como essa opção do Kotlin.
    
Gostou do Artigo? Então aproveita para deixar um comentário sobre o que mais você quer que seja explorado entre essas duas linguagens! Se você quiser se aprofundar ainda mais no assunto, você pode ler também a 2ª parte deste artigo, onde continuo enumerando algumas diferentas entre as duas linguagens de desenvolvimento Android.

Fontes
•    Documentação Kotlin
•    Documentação Java

 

Compartilhar

Jefferson Silva
Autor
Jefferson Silva

Desenvolvedor de Soluções da Code 21. É formado em Análise e Desenvolvimento de Sistemas pelo Centro Universitário Curitiba – Unicuritiba e pós-graduando em App Development pela Pontifícia Universidade Católica do Paraná. Já publicou artigos na área de tecnologia e é um entusiasta do desenvolvimento mobile e de UX. Se deseja viabilizar seu software web ou mobile, migrar para nuvem ou implantar ferramentas de TI, entre em contato com a Code 21.