Kotlin vs Java - qual a diferença entre os dois?

Autor: John Stephens
Data De Criação: 24 Janeiro 2021
Data De Atualização: 1 Julho 2024
Anonim
Kotlin vs Java - qual a diferença entre os dois? - Aplicativos
Kotlin vs Java - qual a diferença entre os dois? - Aplicativos

Contente


Java ainda pode ser a primeira linguagem de programação que vem à mente quando você pensa no Android, mas você não ter usar Java para desenvolvimento Android. De fato, Kotlin é agora o Googlepreferidoidioma oficial para Android!

Para saber mais sobre Java, obtenha um curso introdutório gratuito sobre Java em Make Android Apps.

Hoje, o Android Studio é fornecido com o suporte Kotlin embutido, portanto, criar um projeto Android que entenda o código Kotlin é tão fácil quanto marcar uma caixa de seleção no assistente de criação de projeto do Android Studio. O apoio aumentou para a opção de horas extras demais, a ponto de que essa decisão agora se resume principalmente à preferência.

Mas se você mudar do Java para o Kotlin, o que exatamente você está ganhando? Quais recursos o Kotlin possui, que o Java não possui e vice-versa?


Neste artigo, veremos todas as principais diferenças entre Kotlin e Java.

Kotlin vs Java, o último oferece código mais sucinto - sem findViewByIds

Se você comparar uma classe Kotlin e uma classe Java que executam o mesmo trabalho, a classe Kotlin geralmente será muito mais concisa, mas há uma área em particular em que o Kotlin pode reduzir seriamente a quantidade de código padrão que você precisa escrever: findViewByIds.

As extensões Kotlin Android permitem importar uma referência a uma visualização para o arquivo da atividade, quando você poderá trabalhar com essa visualização como se ela fizesse parte da atividade. O resultado? Você nunca precisará escrever outro método findViewById novamente!

Antes de poder usar essas extensões, você precisará adicionar um plug-in extra ao arquivo build.gradle no nível do módulo (aplique o plugin: 'kotlin-android-extensions'), mas depois disso você estará pronto para começar a importar o Views, por Por exemplo, se seu arquivo activity_main.xml contivesse um TextView com o ID textView, você adicionaria o seguinte à sua Activity:


importar kotlinx.android.synthetic.main.activity_main.textView

Você pode acessar esse TextView usando apenas seu ID:

textView.setText ("Olá, mundo")

Isto é Muito de mais sucinto que o equivalente a Java:

TextView text = (TextView) findViewById (R.id.textView); text.setText ("Olá, mundo");

Kotlin é nulo seguro por padrão

NullPointerExceptions são uma enorme fonte de frustração para desenvolvedores Java. Java permite atribuir nulo a qualquer variável, mas se você tentar usar uma referência de objeto que tenha um valor nulo, prepare-se para encontrar uma NullPointerException!

Leia também: Kotiln for Android introdução

No Kotlin, todos os tipos são não anuláveis ​​(incapazes de manter um valor nulo) por padrão. Se você tentar atribuir ou retornar nulo no seu código Kotlin, ele falhará no momento da compilação; portanto, nenhuma das seguintes linhas será compilada:

nome do val: String = null

divertido getName (): String = null

Se vocês realmente deseja atribuir um valor nulo a uma variável no Kotlin, será necessário marcar explicitamente essa variável como anulável, adicionando um ponto de interrogação após o tipo:

número val: Int? = nulo

Isso torna quase impossível encontrar NullPointerExceptions no Kotlin - na verdade, se você encontrar essa exceção, é provável que tenha sido porque você pediu explicitamente ao Kotlin para lançar uma ou a NullPointerException é originária do código Java externo.

Funções de extensão

O Kotlin oferece aos desenvolvedores a capacidade de estender uma classe com novas funcionalidades, o que é ideal se houver uma classe que você sempre achou que estava faltando um método importante!

Essas "funções de extensão" não estão disponíveis em Java, embora estejam disponíveis em outras linguagens de programação que você pode usar para o desenvolvimento do Android, como C #.

Leia a seguir: Tutorial Java para iniciantes

Você cria uma função de extensão prefixando o nome da classe que deseja estender (como "String") para o nome da função que está criando ("styleString"), por exemplo:

divertido String.styleString (): String {// Estilize a string e retorne-a //}

Você pode chamar essa função em instâncias da classe estendida, via. notação, como se fosse parte dessa classe:

myString.styleString ()

As corotinas são cidadãos de primeira classe

Sempre que você inicia uma operação de longa execução, como E / S de rede ou trabalho intensivo da CPU, o encadeamento de chamada é bloqueado até que a operação seja concluída. Como o Android é um thread único por padrão, assim que você bloquear o thread principal, a interface do usuário do seu aplicativo irá congelar e permanecerá sem resposta até que a operação seja concluída.

Em Java, a solução tradicionalmente era criar um encadeamento em segundo plano, no qual você pode executar esse trabalho intensivo ou demorado, mas o gerenciamento de vários encadeamentos pode levar a códigos complexos e propensos a erros, e a criação de um novo encadeamento é uma operação cara.

Enquanto você pode criar threads adicionais no Kotlin, também pode usar corotinas. As corotinas executam tarefas de execução longa e intensiva suspendendo a execução em um determinado ponto sem bloquear o encadeamento e, em seguida, retomando essa função em um momento posterior, possivelmente em outro encadeamento. Isso permite criar código assíncrono sem bloqueio que parece síncrona e, portanto, mais clara, concisa e legível por humanos. As corotinas também são sem pilha, portanto, elas usam menos a memória em comparação com os threads e abrem a porta para estilos adicionais de programação assíncrona sem bloqueio, como async / waitit.

Não há exceções verificadas

O Kotlin não possui exceções verificadas, portanto, você não precisa capturar ou declarar nenhuma exceção.

Se isso é algo que atrai você para o Kotlin ou faz com que você queira ficar com o Java dependerá da sua opinião sobre exceções verificadas, pois esse é um recurso que divide a comunidade de desenvolvedores. Se você está cansado de blocos try / catch desordenando seu código Java, ficará satisfeito com essa omissão; no entanto, se você achar que as exceções verificadas o incentivam a pensar na recuperação de erros e, finalmente, o levam a criar mais robustos código, é mais provável que você veja isso como uma área em que o Java tem vantagem sobre o Kotlin.

Suporte nativo para delegação

O Kotlin, diferentemente do Java, suporta o padrão de design "composição por herança", via delegação de primeira classe (algumas vezes conhecida como delegação implícita). Delegação é o local em que um objeto de recebimento delega operações para um segundo objeto de delegação, que é um objeto auxiliar com o contexto original.

A delegação de classe de Kotlin é uma alternativa à herança que possibilita o uso de herança múltipla. Enquanto isso, as propriedades delegadas de Kotlin ajudam a impedir a duplicação de código, por exemplo, se você precisar reutilizar o mesmo código para getters e setters de várias propriedades, poderá extrair esse código em uma propriedade delegada. O representante da propriedade precisa definir a função do operador getValue e, opcionalmente, o operador setValue:

classe Delegado {operador divertido getValue (...) ... ... ...} operador divertido setValue (...) ... ... ...}}

Em seguida, ao criar uma propriedade, você pode declarar que as funções getter e setter para essa propriedade específica são tratadas por outra classe:

classe MyClass {propriedade var: String by Delegate ()}

Classes de dados

Não é incomum que um projeto tenha várias classes que não fazem nada além de reter dados. Em Java, você escreverá muito código padrão para essas classes, mesmo que as próprias classes tenham muito pouca funcionalidade. Normalmente, você precisa definir um construtor, campos para armazenar os dados, funções getter e setter para cada campo, além das funções hashCode (), equals () e toString ().

No Kotlin, se você incluir a palavra-chave "data" na definição de classe, o compilador executará todo esse trabalho para você, incluindo a geração de todos os getters e setters necessários:

data class (mês var: String, dia var: Int)

Elenco inteligente

Em Java, você geralmente precisa verificar o tipo e depois converter um objeto em situações nas quais já está claro que o objeto pode ser convertido.

As transmissões inteligentes de Kotlin podem lidar com essas transmissões redundantes para você, portanto, não é necessário transmitir uma declaração se você já a verificou com o operador "é" de Kotlin. Por exemplo, o compilador sabe que a seguinte conversão é segura:

if (olá é String) {printString (olá)}

Suporte para construtores

Ao contrário do Java, uma classe Kotlin pode ter um construtor primário e um ou mais construtores secundários, que você cria incluindo-os na sua declaração de classe:

construtor MainActivity da classe (firstName: String) {}

Não há suporte para conversões implícitas de aumento

Kotlin não suporta conversões implícitas de alargamento para números, para que tipos menores não sejam implicitamente convertidos em tipos maiores. No Kotlin, se você deseja atribuir um valor do tipo Byte a uma variável Int, precisará realizar uma conversão explícita, enquanto o Java tem suporte para conversões implícitas.

Anotação de processamento de bibliotecas com Kotlin

O Kotlin suporta todas as estruturas e bibliotecas Java existentes, incluindo estruturas avançadas que dependem do processamento de anotações, embora algumas bibliotecas Java já estejam fornecendo extensões do Kotlin, como o RxKotlin.

Se você deseja usar uma biblioteca Java que depende do processamento de anotações, adicioná-la ao seu projeto Kotlin é um pouco diferente, pois será necessário especificar a dependência usando o comando kotlin-kapt plug-in e, em seguida, use a ferramenta de processamento de anotações Kotlin (kapt) em vez de annotationProcessor. Por exemplo:

// Aplique o plugin // aplique plugin: kotlin-kapt // Adicione as respectivas dependências usando a configuração kapt // dependências {kapt "com.google.dagger: dagger-compiler: $ dagger-version" ... ... ...}

Intercambiabilidade com Java

Ao debater se deve usar o Kotlin ou Java para desenvolvimento no Android, você deve estar ciente de que existe uma terceira opção: use ambos. Apesar de todas as diferenças entre as duas linguagens, Java e Kotlin são 100% interoperáveis. Você pode chamar o código Kotlin a partir do Java e o código Java a partir do Kotlin, para que seja possível ter as classes Kotlin e Java lado a lado no mesmo projeto, e tudo ainda será compilado.

Essa flexibilidade de mover-se entre os dois idiomas é útil quando você inicia o Kotlin, pois permite introduzir o Kotlin em um projeto existente de forma incremental, mas você também pode preferir usar os dois idiomas permanentemente. Por exemplo, pode haver certos recursos que você prefere escrever no Kotlin e outros que você acha mais fáceis de escrever em Java. Como o Kotlin e o Java são compilados no bytecode, os usuários finais não conseguem dizer onde termina o código Java e o código do Kotlin começa. Portanto, não há motivo para não lançar um aplicativo que consiste em Java e Código Kotlin.

Se você quiser experimentar o Kotlin por conta própria, desde que tenha o Android Studio 3.0 Preview ou superior instalado, existem algumas maneiras de começar:

  • Crie um novo projeto do Android Studio. O método mais fácil é criar um novo projeto e marque a caixa de seleção "Incluir suporte Kotlin" no assistente de criação do projeto.

  • Adicione uma classe Kotlin a um diretório existente. Clique com a tecla Control pressionada no diretório em questão e selecione "Arquivo> Novo> Arquivo / classe Kotlin". O Android Studio exibirá um banner solicitando que você configure seu projeto para oferecer suporte ao Kotlin; clique no link "Configurar" e siga as instruções na tela.

  • Converta arquivos Java existentes em Kotlin. Você pode executar qualquer arquivo Java por meio de um conversor Kotlin, clicando com a tecla Control pressionada no arquivo e selecionando "Código> Converter arquivo Java em arquivo Kotlin".

Empacotando

Como você pode ver, existem muitas boas razões para preferir o Kotlin ao Java, no entanto, existem algumas áreas em que o Java tem vantagem. Talvez o mais notável: muitos desenvolvedores de Android estejam simplesmente mais familiarizados com Java neste momento. É provável que o debate Kotlin x Java não se resolva tão cedo, pois ambos têm seus próprios méritos. Então, você vai mudar para o Kotlin ou acha que o Java ainda é a melhor opção para o desenvolvimento do Android?

Leia a seguir: Uma introdução à sintaxe Java para desenvolvimento Android

A melhor parte da mudança para telefone verdadeiramente em moldura ão a oluçõe etranha e maluca para a quetão de onde colocar tudo o que cotumava viver acima e abaixo da tela....

6 de março de 2019 6 de março de 2019 O aplicativo da câmera pode criar ou quebrar uma experiência, epecialmente quando capturar o momento certo é uma quetão enív...

Publicações Interessantes