Kotlin

## Introdução

Kotlin é uma linguagem de programação apresentada durante o evento Google I/O de 2017, onde foi anunciado que Kotlin seria adotada como a linguagem oficial para desenvolvimento na plataforma Android. É estaticamente tipada e orientada a objetos, desenvolvida pela JetBrains, com uma sintaxe mais expressiva e concisa do que Java, pois a linguagem é baseada no jeito de programação funcional de ser e possibilita a construção de códigos mais elegantes do que em outras linguagens.

Kotlin roda sobre uma JVM e possui 100% de compatibilidade com a linguagem Java. Segundo os autores, a linguagem foi planejada como uma alternativa ao desenvolvimento Java com o objetivo de fazer códigos enxutos e elegantes. Além disso, Kotlin oferece uma curva de aprendizado menor e compartilha de vários conceitos de Scala e Java. Isso é essencialmente importante para as pessoas que estão migrando de linguagem e terão uma adaptação mais tranquila.

Aplicações como o Pinterest, Coursera, Netflix, Uber, Square, Trello e Basecamp já usam Kotlin em seu desenvolvimento, sendo a última desenvolvida usando 100% da linguagem. Em março de 2017 foi publicada da versão 1.1 da linguagem, onde já tinham sido feitas mais de 10 milhões de linhas de código e já estavam no GitHub, tudo isso em 8132 repositórios.

## Características

Kotlin foi desenvolvida como uma linguagem com dados fortemente tipados e utiliza-se bastante de inferência de tipos para facilitar o desenvolvimento, por conta disto, na sintaxe se usa o tipo de um dado se é necessário, definido após o nome de uma variável. Outra característica de sintaxe é a não obrigatoriedade do uso de ‘;’ ao final de cada instrução e em suas definições de escopo, um arquivo não está limitado a conter apenas uma única classe e a mesma não necessita ter o mesmo nome de seu arquivo.

Além de ser utilizado seguindos os conceitos de Orientação a Objetos (OO), por suportar receber funções como argumentos em outras funções, a programação com Kotlin é capaz de seguir o paradigma de programação funcional.

Algumas outras características que podemos citar:

* Interoperabilidade
* Multi-paradigma
* Segura
* Ser muito expressiva
* Ecosistema completo para suporte

## Comparações

Geralmente o primeiro programa que fazemos quando estamos aprendendo a programar em qualquer linguagem de programação é o famoso Hello World! ou Olá mundo! As diferenças deste código bem simples não é tão grande, porém existem algumas. Podendo serem citadas: a ausência do “;” ao final de cada instrução, o uso do Unit que em Kotlin é equivalente ao Void e na assinatura da função ou parâmetro, primeiro colocamos o nome e depois o tipo.

Figura 1. Programa “Olá mundo!” feito em JavaFigura 2. Programa “Olá mundo!” feito em Kotlin
## Performance

O script original em Java possuía

aproximadamente 5.491 métodos, 12.371 linhas de código. Enquanto o código em Kotlin possuía 4.897
métodos e cerca de 8.564 linhas de código. Abaixo será colocado um exemplo do resultado de um teste do pior cenário possível para ambas as linguagens, que estão rodando em uma build limpa, logo após o boot do computador, onde Java teve uma performance melhor que Kotlin em aproximadamente 17%.

## Referências

Enloque, P. (2017) Sintaxe básica do Kotlin
https://medium.com/kotlin-para-android/sintaxe-b%C3%A1sica-do-kotlin-7548a441f
5e5.

Borges, F. (2018) Uma breve introdução a Kotlinhttp://blog.triadworks.com.br/uma-breve-introducao-a-kotlin.

Zanella, J.R (2017) Kotlin, explorando uma nova linguagem https://medium.com/android-dev-br/kotlin-explorando-uma-nova-linguagem-%EF%
B8%8F-799ffc99a1a2.

Beyls, C. (2017) Kotlin singleton with argument https://medium.com/@BladeCoder/kotlin-singletons-with-argument-194ef06edd9e.

Marques, T. (2017) Kotlin ou Java? https://medium.com/@thiago.marques/kotlin-ou-java-f47c00ba6303.

Aj, Alt. Kotlin vs Java: Compilation Speed https://medium.com/keepsafe-engineering/kotlin-vs-java-compilation-speed-e6c174b39b5d.

Classes and Inheritance https://kotlinlang.org/docs/reference/classes.html