AGENDA
⇢ Motivação criação Kotlin
⇢ Utilização dentro do Mercado Livre
⇢ Kotlin vantagens e desvantagens
⇢ Features
A JetBrains (empresa criadora das famosas IDE``s como: IntelliJ, WebStorm, Goland, DataGrip, etc...)
estava atrás de uma linguagem mais produtiva, funcional e menos verbosa, características que Java
não possuia, o foco dessa procura era melhorar os aspectos de desenvolvimento de software das
ferramentas que desenvolvia, que eram todas feitas em Java, no ocorrido uma das soluções pensadas
e testadas foi Scala, que também roda sobre a JVM, mas Scala acabou sendo descartada porque sua
performance do aspecto compilação se tornou um impeditivo. Então em 2011 a JetBrains criou Kotlin
para resolver esse problemas, Kotlin então se tornou público e open em 2012 e teve sua primera
versão fechada (v 1.0) em 2016.
Atualmente Kotlin é mantido por um conjunto de empresas, como JetBrains, Google, Netflix etc, esse
grupo é chamado de Kotlin Fundation.
MOTIVAÇÃO
CRIAÇÃOKOTLIN
UTILIZAÇÃO DENTRO
DO MERCADO LIVRE
Além de grande uso em Android, dentro do Mercado Livre existem inúmeras iniciativas
utilizando Kotlin no desenvolvimento backend, em várias verticais de negócio como
Mercado Envios, Seller Invoice, Mercado Shops entre outras, são quase 200 projetos em
Kotlin e 100 aplicações e serviços em produção.
Vemos também um crescimento exponencial de novas aplicações sendo feitas em Kotlin.
IMPORTANTE
!
Para essa comparação foi utilizado Kotlin na sua última versão
oficial - 1.4 e Java na sua última versão LTS - 11
Set/2020
VANTAGENSKOTLIN
Apoiado e mantido por grandes empresas (Jetbrains, Google, Uber, Netflix etc)
Constantemente atualizado
Curva de aprendizado muito baixa para devs Java
Sintaxe simples, concisa e pouco verbosa
Interoperabilidade total com Java
Múltiplos Paradigmas (Funcional, OO)
Foco Imutabilidade
Features
Coroutines
Data Class
Default e Named Parameters
Delegations
Destructuring Declarations
Elvis Operator
Extension Function
Infix Function
Lazy Initialization
Null Safety por padrão
One Line Function
Receiver Function
Scope Function
Sealed Class
Smart Cast
Operator overloading
Template String
Type Alias
DESVANTAGENSKOTLIN
Foco muito grande em Android
A comunidade de JAVA é maior que a de Kotlin, sendo assim há mais material disponível para JAVA
Kotlin não possuí operador ternário
Velocidade de compilação inferior ao de JAVA
Existem muitos desenvolvedores Kotlin no mercado, porém poucos especialistas
Não possuí tipos primitivos
Não possui membros estáticos
Código Java
Código de exemplo Kotlin que chama o código Java
FEATURE
INTEROPERABILIDADE
TOTAL COM JAVA
Uma das melhores características da
linguagem de programação Kotlin é sua
total interoperabilidade com Java, que
atrai mais desenvolvedores de Java
para aprender Kotlin e também sua
baixa curva de aprendizado para
desenvolvedores Java. Com essa total
interoperabilidade conseguimos usar
todas as ferramentas, frameworks e
utilitários feitos em Java.
Obs.: Isso pode ser visto em mais detalhes aqui.
Código de exemplo Kotlin
FEATURE
NULL SAFETY POR
PADRÃO
O sistema de tipos da linguagem Kotlin
visa eliminar os perigos de referências
nulas do código, que é frequentemente
chamado de erro de bilhão de dólares.
Por exemplo, em Java, o acesso a um
membro de referência nula resulta em
uma exceção de referência nula, já no
Go um panic. Kotlin não compila código
que atribui ou retorna um nulo. Isso é
visto como uma das características
mais importantes do Kotlin.
Obs.: Isso pode ser visto em mais detalhes aqui.
Não existe código Java equivalente para isso.
Código Kotlin
FEATURE
ELVIS OPERATOR
Com Elvis Operator podemos trabalhar
com variáveis nulas de maneira muito
mais eficiente, também deixando o
código muito mais limpo e legível.
Obs.: Isso pode ser visto em mais detalhes aqui.
Não existe essa feature no Java, mas no próximo slide podemos ver um código equivalente com IFs.
FEATURE
Código equivalente emJava
ELVIS OPERATOR
Com Elvis Operator podemos trabalhar
com variáveis nulas de maneira muito
mais eficiente, também deixando o
código muito mais limpo e legível.
FEATURE
Código Kotlin
Código de exemplo Java equivalente
TEMPLATE STRING
As String em Kotlin podem conter
expressões de modelo. A expressão de
modelo é um pedaço de código que é
avaliado e seu resultado é concatenado
em string. Começa com um cifrão $ e
consiste em um nome de variável, caso
queira executar algo dentro disso é só
adicionar ${logica}
Obs.: Isso pode ser visto em mais detalhes aqui.
FEATURE
Código Kotlin
EXTENSION FUNCTION
Graças às funções de extensão do
Kotlin, você pode adicionar funções às
classes já existentes, sem fazer
alterações diretamente em seu código
fonte. Embora as funções de extensão
sejam frequentemente criticadas, as
vezes é muito útil. Isso nos permite
resolver um método / propriedade
estático em um objeto / classe que já
existe. Ou seja, chamamos o objeto
como se tivesse chamando o método
ou classe de origem.
Obs.: Isso pode ser visto em mais detalhes aqui.
Não existe código Java equivalente para isso.
FEATURE
Código Kotlin
Código de exemplo Java equivalente
DATA CLASS
O escopo do recurso e a necessidade
de uma classe são sempre discutidos
pelos designers de linguagem de
programação. Uma classe de dados
típica em Java tem toneladas de código
padrão que é necessário pular
enquanto descobre o uso real dessa
classe. No entanto, no Kotlin, você
pode escrever o equivalente do mesmo
código Java de uma maneira muito
simples e economizar toneladas de
digitação e esforço mental.
Obs.: Isso pode ser visto em mais detalhes aqui.
FEATURE
Código Kotlin
Código de exemplo Java equivalente
DEFAULT PARAMETER
Os parâmetros padrão no Kotlin são
bastante úteis quando você passa os
argumentos por nome, em vez de
índice.
Outra grande vantagem também
quando é necessário adicionar um
parâmetro em uma função já existente
e não gostaríamos de quebrar quem já
utiliza essa função.
Obs.: Isso pode ser visto em mais detalhes aqui.
FEATURE
Código Kotlin
NAMED PARAMETER
Parâmetros padrões se tornam mais
poderosos em combinação com
parâmetros nomeados.
Também melhoram a leitura do código
de quem está chamando a função.
Obs.: Isso pode ser visto em mais detalhes aqui.
Não existe código Java equivalente para isso.
FEATURE
Código Kotlin
DELEGATION
O padrão Delegation provou ser uma
boa alternativa à herança de
implementação, e o Kotlin o suporta
nativamente, exigindo zero código
padrão, isso é muito útil em casos de
uso, qual usamos uma estrutura de
camada onde Endpoint > Service > Dão
e normalmente em alguns métodos o
service apenas delega a chamada para
o Dao, porque o mesmo não possui
nenhuma lógica.
Obs.: Isso pode ser visto em mais detalhes aqui.
Código de exemplo Java equivalente
FEATURE
Código Kotlin
Código de exemplo Java equivalente
LAMBDAS
Expressões lambda e funções
anônimas são 'literais de função', isto é,
funções que não são declaradas, mas
são transmitidas imediatamente como
expressão.
Kotlin é considerado por muitos uma
linguagem com uma sintaxe lambda
muito intuitiva e concisa.
Obs.: Isso pode ser visto em mais detalhes aqui.
FEATURE
Código Kotlin
Código de exemplo Java equivalente
SMART CAST
Há duas formas de fazer casting de
valores de variáveis em Kotlin:
explicitamente e de forma automática.
O compilador Kotlin buca a palavra
reservada "is" e identifica valores
imutáveis para fazer o casting
automaticamente.
Obs.: Isso pode ser visto em mais detalhes aqui.
FEATURE
Código Kotlin
ONE LINE FUNCTIONS
Normalmente, uma função deve
declarar seu tipo de retorno; uma
exceção existe apenas para funções
que consistem em uma única
expressão. Freqüentemente, são
chamadas de funções de one line ou de
single line.
Essas funções podem usar uma sintaxe
abreviada que omite as chaves e usa o
= símbolo antes da expressão em vez
da return.
Esse recurso deixa o código bastante
legível.
Obs.: Isso pode ser visto em mais detalhes aqui.
Não existe código Java equivalente para isso.
FEATURE
Código Kotlin
SCOPE FUNCTION
A biblioteca padrão Kotlin contém
várias funções cujo único objetivo é
executar um bloco de código no
contexto de um objeto. Quando você
chama essa função em um objeto com
uma expressão lambda fornecida, ela
forma um escopo temporário. Nesse
escopo, você pode acessar o objeto
sem seu nome. Tais funções são
chamadas de funções de escopo . Há
vários deles, como: let, run, with, apply,
e also.
Basicamente, essas funções fazem o
mesmo: execute um bloco de código
em um objeto. O que é diferente é
como esse objeto fica disponível
dentro do bloco e qual é o resultado de
toda a expressão.
Obs.: Isso pode ser visto em mais detalhes aqui.
Não existe código Java equivalente para isso.
FEATURE
Código Kotlin Código de exemplo Java equivalente
EXPRESSÃO WHEN
A expressão when substitui o famoso
switch operator de linguagens
baseadas em C. when checa o
argumento de entrada contra todas as
opções sequencialmente até que
alguma seja verdadeira. when pode ser
usado ou como uma expressão ou
como uma declaração.
A opção else é executada se nenhuma
das outras opções são verdadeiras. Se
when é utilizado como uma expressão,
a opção else é obrigatório, a não ser
que o compilador tenha certeza que
todos os casos estão cobertos pela
opção (como por exemplo com um
enum)
Obs.: Isso pode ser visto em mais detalhes aqui.
FEATURE
Código Kotlin Código de exemplo Java equivalente
LAZY INITIALIZATION
Às vezes, precisamos construir
objetos que tenham um processo de
inicialização complicado. Além disso,
muitas vezes não podemos ter
certeza de que o objeto pelo qual
pagamos o custo da inicialização no
início de nosso programa será usado
em nosso programa.
Pensando nisso a equipe do Kotlin
desenvolveu o conceito de
"inicialização lenta" para impedir a
inicialização desnecessária de objetos.
Essa feature faz parte de um conjunto
de features chamadas Delegated
Properties.
Obs.: Isso pode ser visto em mais detalhes aqui.
FEATURE
Código Kotlin
ESPAÇOS EM NOMES
DE FUNÇÕES
Em Kotlin temos a possibilidade de
escrever os nomes das funções de
qualquer forma desde que esteja
dentro de crases, isso é muito utilizado
no escopo de teste.
Obs.: Isso pode ser visto em mais detalhes aqui.
Não existe código Java equivalente para isso.
FEATURE
Código Kotlin
INFIX FUNCTIONS
Devem ser métodos ou extension
functions;
Devem conter apenas um único
parâmetro;
O parâmetro não pode ser um
vararg and não pode conter um
default value;
Funções marcadas com o keyword
infix também podem ser chamadas
usando a notação infix (omitindo o
ponto e os parênteses na chamada).
Funções infix devem satisfazer os
seguintes requerimentos:
Obs.: Isso pode ser visto em mais detalhes aqui.
Não existe código Java equivalente para isso.
FEATURE
Código Kotlin
Código de exemplo Java equivalente
TYPE ALIAS
Há casos em que precisamos criar
nomes alternativos para tipos já
existentes. Isso pode acontecer caso o
nome é muito grande e vamos utilizar
muito durante nossa implementação,
por exemplo. Kotlin permite criar alias
para tipos utilizando a palavra chave
typealias.
Obs.: Isso pode ser visto em mais detalhes aqui.
FEATURE
Código Kotlin
SEALED CLASSES
Classes seladas são usadas para
representar hierarquias de classe
restritas, quando um valor pode ter um
dos tipos de um conjunto limitado, mas
não pode ter nenhum outro tipo. Elas
são, de certa forma, uma extensão de
classes de enum: o conjunto de valores
para um tipo de enum também é
restrito, mas cada constante de enum
existe apenas como uma única
instância, enquanto uma subclasse de
uma classe selada pode ter várias
instâncias que podem conter Estado.
Obs.: Isso pode ser visto em mais detalhes aqui.
FEATURE Código de exemplo Java equivalente
SEALED CLASSES
Classes seladas são usadas para
representar hierarquias de classe
restritas, quando um valor pode ter um
dos tipos de um conjunto limitado, mas
não pode ter nenhum outro tipo. Elas
são, de certa forma, uma extensão de
classes de enum: o conjunto de valores
para um tipo de enum também é
restrito, mas cada constante de enum
existe apenas como uma única
instância, enquanto uma subclasse de
uma classe selada pode ter várias
instâncias que podem conter Estado.
Operator overloading
Coroutines
Destructuring Declarations
Kotlin Test
Returns and Jumps
Generics
Object Expressions
Inline Classes
Inline Functions
Ranges and Progressions
Type-Safe Builders e DSLs
Function Receiver
Equality
OUTRAS
FEATURES
A SEREM
ESTUDADAS
LINKS
IMPORTANTES
Guia de desenvolvimento e boas praticas de Kotlin backend - Usado pela iniciativa Mercado Envios/FOS
Automation e Mercado Envios/YMS
Projeto de exemplo referência em Kotlin no Fury
Grupo de estudos Kotlin - Vídeos e códigos do grupo de estudos Kotlin
Guia de motivação para o uso de Kotlin - Esse documento foi usado para justificar o uso de Kotlin no
backend das aplicações do time YMS e UCS
Coding Conventions - Convenção de código Kotlin da própria linguagem
Post - Idiomatic Kotlin, Best Practices - Um post sobre boas práticas de Kotlin
Effective Kotlin - Livro sobre boas práticas em Kotlin
Projeto de exemplo Kotlin Rest (Kotlin v.1.2)
Projeto de exemplo Kotlin GraphQL (Kotlin v.1.2)
Exemplo de um problema resolvido em Kotlin, Java e Golang
Acessívelsomentea
membrosdoMercadoLivre
Acesse: https://gist.github.com/justiandre/6b478e9647be921b302f1c55d6146e63
Site
Linkedin: in/andrejusti
GitHub: justiandre
SlideShare: justiandre
E-mails
Pessoal: justi.andre@gmail.com
Meli: andre.justi@mercadolivre.com
ANDRÉ JUSTI
Obrigado

Java VS Kotlin

  • 2.
    AGENDA ⇢ Motivação criaçãoKotlin ⇢ Utilização dentro do Mercado Livre ⇢ Kotlin vantagens e desvantagens ⇢ Features
  • 3.
    A JetBrains (empresacriadora das famosas IDE``s como: IntelliJ, WebStorm, Goland, DataGrip, etc...) estava atrás de uma linguagem mais produtiva, funcional e menos verbosa, características que Java não possuia, o foco dessa procura era melhorar os aspectos de desenvolvimento de software das ferramentas que desenvolvia, que eram todas feitas em Java, no ocorrido uma das soluções pensadas e testadas foi Scala, que também roda sobre a JVM, mas Scala acabou sendo descartada porque sua performance do aspecto compilação se tornou um impeditivo. Então em 2011 a JetBrains criou Kotlin para resolver esse problemas, Kotlin então se tornou público e open em 2012 e teve sua primera versão fechada (v 1.0) em 2016. Atualmente Kotlin é mantido por um conjunto de empresas, como JetBrains, Google, Netflix etc, esse grupo é chamado de Kotlin Fundation. MOTIVAÇÃO CRIAÇÃOKOTLIN
  • 4.
    UTILIZAÇÃO DENTRO DO MERCADOLIVRE Além de grande uso em Android, dentro do Mercado Livre existem inúmeras iniciativas utilizando Kotlin no desenvolvimento backend, em várias verticais de negócio como Mercado Envios, Seller Invoice, Mercado Shops entre outras, são quase 200 projetos em Kotlin e 100 aplicações e serviços em produção. Vemos também um crescimento exponencial de novas aplicações sendo feitas em Kotlin.
  • 5.
    IMPORTANTE ! Para essa comparaçãofoi utilizado Kotlin na sua última versão oficial - 1.4 e Java na sua última versão LTS - 11 Set/2020
  • 6.
    VANTAGENSKOTLIN Apoiado e mantidopor grandes empresas (Jetbrains, Google, Uber, Netflix etc) Constantemente atualizado Curva de aprendizado muito baixa para devs Java Sintaxe simples, concisa e pouco verbosa Interoperabilidade total com Java Múltiplos Paradigmas (Funcional, OO) Foco Imutabilidade Features Coroutines Data Class Default e Named Parameters Delegations Destructuring Declarations Elvis Operator Extension Function Infix Function Lazy Initialization Null Safety por padrão One Line Function Receiver Function Scope Function Sealed Class Smart Cast Operator overloading Template String Type Alias
  • 7.
    DESVANTAGENSKOTLIN Foco muito grandeem Android A comunidade de JAVA é maior que a de Kotlin, sendo assim há mais material disponível para JAVA Kotlin não possuí operador ternário Velocidade de compilação inferior ao de JAVA Existem muitos desenvolvedores Kotlin no mercado, porém poucos especialistas Não possuí tipos primitivos Não possui membros estáticos
  • 8.
    Código Java Código deexemplo Kotlin que chama o código Java FEATURE INTEROPERABILIDADE TOTAL COM JAVA Uma das melhores características da linguagem de programação Kotlin é sua total interoperabilidade com Java, que atrai mais desenvolvedores de Java para aprender Kotlin e também sua baixa curva de aprendizado para desenvolvedores Java. Com essa total interoperabilidade conseguimos usar todas as ferramentas, frameworks e utilitários feitos em Java. Obs.: Isso pode ser visto em mais detalhes aqui.
  • 9.
    Código de exemploKotlin FEATURE NULL SAFETY POR PADRÃO O sistema de tipos da linguagem Kotlin visa eliminar os perigos de referências nulas do código, que é frequentemente chamado de erro de bilhão de dólares. Por exemplo, em Java, o acesso a um membro de referência nula resulta em uma exceção de referência nula, já no Go um panic. Kotlin não compila código que atribui ou retorna um nulo. Isso é visto como uma das características mais importantes do Kotlin. Obs.: Isso pode ser visto em mais detalhes aqui. Não existe código Java equivalente para isso.
  • 10.
    Código Kotlin FEATURE ELVIS OPERATOR ComElvis Operator podemos trabalhar com variáveis nulas de maneira muito mais eficiente, também deixando o código muito mais limpo e legível. Obs.: Isso pode ser visto em mais detalhes aqui. Não existe essa feature no Java, mas no próximo slide podemos ver um código equivalente com IFs.
  • 11.
    FEATURE Código equivalente emJava ELVISOPERATOR Com Elvis Operator podemos trabalhar com variáveis nulas de maneira muito mais eficiente, também deixando o código muito mais limpo e legível.
  • 12.
    FEATURE Código Kotlin Código deexemplo Java equivalente TEMPLATE STRING As String em Kotlin podem conter expressões de modelo. A expressão de modelo é um pedaço de código que é avaliado e seu resultado é concatenado em string. Começa com um cifrão $ e consiste em um nome de variável, caso queira executar algo dentro disso é só adicionar ${logica} Obs.: Isso pode ser visto em mais detalhes aqui.
  • 13.
    FEATURE Código Kotlin EXTENSION FUNCTION Graçasàs funções de extensão do Kotlin, você pode adicionar funções às classes já existentes, sem fazer alterações diretamente em seu código fonte. Embora as funções de extensão sejam frequentemente criticadas, as vezes é muito útil. Isso nos permite resolver um método / propriedade estático em um objeto / classe que já existe. Ou seja, chamamos o objeto como se tivesse chamando o método ou classe de origem. Obs.: Isso pode ser visto em mais detalhes aqui. Não existe código Java equivalente para isso.
  • 14.
    FEATURE Código Kotlin Código deexemplo Java equivalente DATA CLASS O escopo do recurso e a necessidade de uma classe são sempre discutidos pelos designers de linguagem de programação. Uma classe de dados típica em Java tem toneladas de código padrão que é necessário pular enquanto descobre o uso real dessa classe. No entanto, no Kotlin, você pode escrever o equivalente do mesmo código Java de uma maneira muito simples e economizar toneladas de digitação e esforço mental. Obs.: Isso pode ser visto em mais detalhes aqui.
  • 15.
    FEATURE Código Kotlin Código deexemplo Java equivalente DEFAULT PARAMETER Os parâmetros padrão no Kotlin são bastante úteis quando você passa os argumentos por nome, em vez de índice. Outra grande vantagem também quando é necessário adicionar um parâmetro em uma função já existente e não gostaríamos de quebrar quem já utiliza essa função. Obs.: Isso pode ser visto em mais detalhes aqui.
  • 16.
    FEATURE Código Kotlin NAMED PARAMETER Parâmetrospadrões se tornam mais poderosos em combinação com parâmetros nomeados. Também melhoram a leitura do código de quem está chamando a função. Obs.: Isso pode ser visto em mais detalhes aqui. Não existe código Java equivalente para isso.
  • 17.
    FEATURE Código Kotlin DELEGATION O padrãoDelegation provou ser uma boa alternativa à herança de implementação, e o Kotlin o suporta nativamente, exigindo zero código padrão, isso é muito útil em casos de uso, qual usamos uma estrutura de camada onde Endpoint > Service > Dão e normalmente em alguns métodos o service apenas delega a chamada para o Dao, porque o mesmo não possui nenhuma lógica. Obs.: Isso pode ser visto em mais detalhes aqui. Código de exemplo Java equivalente
  • 18.
    FEATURE Código Kotlin Código deexemplo Java equivalente LAMBDAS Expressões lambda e funções anônimas são 'literais de função', isto é, funções que não são declaradas, mas são transmitidas imediatamente como expressão. Kotlin é considerado por muitos uma linguagem com uma sintaxe lambda muito intuitiva e concisa. Obs.: Isso pode ser visto em mais detalhes aqui.
  • 19.
    FEATURE Código Kotlin Código deexemplo Java equivalente SMART CAST Há duas formas de fazer casting de valores de variáveis em Kotlin: explicitamente e de forma automática. O compilador Kotlin buca a palavra reservada "is" e identifica valores imutáveis para fazer o casting automaticamente. Obs.: Isso pode ser visto em mais detalhes aqui.
  • 20.
    FEATURE Código Kotlin ONE LINEFUNCTIONS Normalmente, uma função deve declarar seu tipo de retorno; uma exceção existe apenas para funções que consistem em uma única expressão. Freqüentemente, são chamadas de funções de one line ou de single line. Essas funções podem usar uma sintaxe abreviada que omite as chaves e usa o = símbolo antes da expressão em vez da return. Esse recurso deixa o código bastante legível. Obs.: Isso pode ser visto em mais detalhes aqui. Não existe código Java equivalente para isso.
  • 21.
    FEATURE Código Kotlin SCOPE FUNCTION Abiblioteca padrão Kotlin contém várias funções cujo único objetivo é executar um bloco de código no contexto de um objeto. Quando você chama essa função em um objeto com uma expressão lambda fornecida, ela forma um escopo temporário. Nesse escopo, você pode acessar o objeto sem seu nome. Tais funções são chamadas de funções de escopo . Há vários deles, como: let, run, with, apply, e also. Basicamente, essas funções fazem o mesmo: execute um bloco de código em um objeto. O que é diferente é como esse objeto fica disponível dentro do bloco e qual é o resultado de toda a expressão. Obs.: Isso pode ser visto em mais detalhes aqui. Não existe código Java equivalente para isso.
  • 22.
    FEATURE Código Kotlin Códigode exemplo Java equivalente EXPRESSÃO WHEN A expressão when substitui o famoso switch operator de linguagens baseadas em C. when checa o argumento de entrada contra todas as opções sequencialmente até que alguma seja verdadeira. when pode ser usado ou como uma expressão ou como uma declaração. A opção else é executada se nenhuma das outras opções são verdadeiras. Se when é utilizado como uma expressão, a opção else é obrigatório, a não ser que o compilador tenha certeza que todos os casos estão cobertos pela opção (como por exemplo com um enum) Obs.: Isso pode ser visto em mais detalhes aqui.
  • 23.
    FEATURE Código Kotlin Códigode exemplo Java equivalente LAZY INITIALIZATION Às vezes, precisamos construir objetos que tenham um processo de inicialização complicado. Além disso, muitas vezes não podemos ter certeza de que o objeto pelo qual pagamos o custo da inicialização no início de nosso programa será usado em nosso programa. Pensando nisso a equipe do Kotlin desenvolveu o conceito de "inicialização lenta" para impedir a inicialização desnecessária de objetos. Essa feature faz parte de um conjunto de features chamadas Delegated Properties. Obs.: Isso pode ser visto em mais detalhes aqui.
  • 24.
    FEATURE Código Kotlin ESPAÇOS EMNOMES DE FUNÇÕES Em Kotlin temos a possibilidade de escrever os nomes das funções de qualquer forma desde que esteja dentro de crases, isso é muito utilizado no escopo de teste. Obs.: Isso pode ser visto em mais detalhes aqui. Não existe código Java equivalente para isso.
  • 25.
    FEATURE Código Kotlin INFIX FUNCTIONS Devemser métodos ou extension functions; Devem conter apenas um único parâmetro; O parâmetro não pode ser um vararg and não pode conter um default value; Funções marcadas com o keyword infix também podem ser chamadas usando a notação infix (omitindo o ponto e os parênteses na chamada). Funções infix devem satisfazer os seguintes requerimentos: Obs.: Isso pode ser visto em mais detalhes aqui. Não existe código Java equivalente para isso.
  • 26.
    FEATURE Código Kotlin Código deexemplo Java equivalente TYPE ALIAS Há casos em que precisamos criar nomes alternativos para tipos já existentes. Isso pode acontecer caso o nome é muito grande e vamos utilizar muito durante nossa implementação, por exemplo. Kotlin permite criar alias para tipos utilizando a palavra chave typealias. Obs.: Isso pode ser visto em mais detalhes aqui.
  • 27.
    FEATURE Código Kotlin SEALED CLASSES Classesseladas são usadas para representar hierarquias de classe restritas, quando um valor pode ter um dos tipos de um conjunto limitado, mas não pode ter nenhum outro tipo. Elas são, de certa forma, uma extensão de classes de enum: o conjunto de valores para um tipo de enum também é restrito, mas cada constante de enum existe apenas como uma única instância, enquanto uma subclasse de uma classe selada pode ter várias instâncias que podem conter Estado. Obs.: Isso pode ser visto em mais detalhes aqui.
  • 28.
    FEATURE Código deexemplo Java equivalente SEALED CLASSES Classes seladas são usadas para representar hierarquias de classe restritas, quando um valor pode ter um dos tipos de um conjunto limitado, mas não pode ter nenhum outro tipo. Elas são, de certa forma, uma extensão de classes de enum: o conjunto de valores para um tipo de enum também é restrito, mas cada constante de enum existe apenas como uma única instância, enquanto uma subclasse de uma classe selada pode ter várias instâncias que podem conter Estado.
  • 29.
    Operator overloading Coroutines Destructuring Declarations KotlinTest Returns and Jumps Generics Object Expressions Inline Classes Inline Functions Ranges and Progressions Type-Safe Builders e DSLs Function Receiver Equality OUTRAS FEATURES A SEREM ESTUDADAS
  • 30.
    LINKS IMPORTANTES Guia de desenvolvimentoe boas praticas de Kotlin backend - Usado pela iniciativa Mercado Envios/FOS Automation e Mercado Envios/YMS Projeto de exemplo referência em Kotlin no Fury Grupo de estudos Kotlin - Vídeos e códigos do grupo de estudos Kotlin Guia de motivação para o uso de Kotlin - Esse documento foi usado para justificar o uso de Kotlin no backend das aplicações do time YMS e UCS Coding Conventions - Convenção de código Kotlin da própria linguagem Post - Idiomatic Kotlin, Best Practices - Um post sobre boas práticas de Kotlin Effective Kotlin - Livro sobre boas práticas em Kotlin Projeto de exemplo Kotlin Rest (Kotlin v.1.2) Projeto de exemplo Kotlin GraphQL (Kotlin v.1.2) Exemplo de um problema resolvido em Kotlin, Java e Golang Acessívelsomentea membrosdoMercadoLivre
  • 31.
    Acesse: https://gist.github.com/justiandre/6b478e9647be921b302f1c55d6146e63 Site Linkedin: in/andrejusti GitHub:justiandre SlideShare: justiandre E-mails Pessoal: justi.andre@gmail.com Meli: andre.justi@mercadolivre.com ANDRÉ JUSTI Obrigado