Kotlin e um futuro (ainda mais) brilhante

Imaginem um mundo muito estranho chamado “A JVM”.

(A partir deste momento, o melhor é ler com a voz de David Attenborough).

No início, existia uma única criatura. O seu nome era Java. A Java era divertida, nova, simples, poderosa… mas a Java não era suficiente. Outras espécies surgiram, tais como: Ceylon, Groovy, Scala, Clojure, Frege, Kotlin. Até a Java evoluiu com o tempo! Mas porquê tantas espécies? – é uma questão que vos pode surgir. Será que o Criador falhou na sua própria criação? Estariam os outros deuses (os programadores) descontentes? Talvez não estivessem felizes o suficiente… Quem sabe?

Então… Este é o caso de Kotlin.

Mas chega de analogias a A Vida na Terra. Ainda assim, podem continuar a ler com a voz do David Attenborough, todos sabemos o quão incrível é.

Ainda assim, a questão que se coloca é: mas porquê outra linguagem de programação para JVM? A isso não posso responder, porque não sei. No entanto, acredito ter alguns argumentos que possam ajudar a explicar porque é que Kotlin é um espécimen muito forte.

A Evolução de Kotlin

Embora pareça, a linguagem Kotlin não é totalmente nova. A sua primeira aparição aconteceu no dia 8 de novembro de 2010 e, desde então, tem amadurecido com o tempo, tal como um bom Whiskey.

A adoção desta linguagem tem aumentado significativamente ao longo dos últimos meses, impulsionada pela referência em grandes eventos, como o Spring Framework 5.0 ou o Google I/O 2017, no qual a Google anunciou o seu apoio oficial a Kotlin para a plataforma de Android. 2017 foi também o ano da primeira KotlinConf, na qual ficou claro que as potencialidades de Kotlin vão muito para além do mundo Android.

É curioso ver o número de questões relacionadas com Kotlin a aumentar no StackOverflow, depois do anúncio feito pela Google e pelo facto de agora aparecer no TIOBE Index.

Quanto aos projetos open source no GitHub – segundo o GitHut 2.0 – num ranking de 50, Kotlin pontua da seguinte forma:

  • 16º lugar para project stars, num total de 0.480%;
  • 17º lugar para issues, com um total de 0.489%;
  • 23º lugar nos pull requests, perfazendo um total de 0.351%;
  • 19º lugar para pushes, totalizando 0.424%.

Verifica-se que o crescimento, no geral, é bastante positivo.

Interoperabilidade com Java

Kotlin destaca-se em relação a outras linguagens de programação principalmente pela sua abilidade de interoperar de forma simples com Java no runtime JVM.

Esta linguagem tem também possibilidade de compilação para Java Bytecode e adiciona praticamente zero overhead, sendo possível compilar para versões 6, 7, 8 e 9 de Java Bytecode e, ao mesmo tempo, tentar extrair vantagens das características de cada versão. Um bom exemplo do poder de Kotlin é o suporte que dá às expressões Lambda, mesmo quando compiladas para Java Bytecode 6.

Tooling

Kotlin foi desenvolvida pela empresa JetBrains, que acabou por torná-la numa linguagem first-class citizen no IntelliJ IDE, Android Studio e CLion. Inclui features como refactoring, geração de código, code completion, compilação para bytecode e sneak-peeking ao bytecode on the fly, e, até mesmo, um conversor de Java para Kotlin. Tudo ao vosso dispor.

O compilador (kotlinc) tem um modo REPL que pode ser utilizado para testar facilmente alguns snippets de Kotlin the forma interactiva.

Targets Multiplataforma

Utilizando Kotlin é possível compilar para JVM, Javascript e LLVM.

Vou reformular a frase para que percebam o meu ponto:

“Programar em Kotlin e obter o código server-side para distribuir em JBoss, partilhar código referente à camada de lógica aplicacional com a aplicação Android, e, ainda, com a webapp JS/HTML. Oh! E não vamos esquecer aquele device de IoT, vamos partilhar algum código com ele também. Como assim? Também partilhar a lógica com a aplicação iOS? Claro, porque não!”

Kotlin/ Native tiram partido de LLVM de forma a facilitar o suporte de forma nativa de um vasto número de plataformas como Windows, Linux, OSX, iOS, Android e WebAssembly.

Kotlin para JavaScript permite a transpilação de Kotlin para linguagem JavaScript, tornando possível, por exemplo, a criação de web apps de React.

Um ótimo showcase destas características é a aplicação da KotlinConf 2017, que foi inteiramente implementada com recurso a Kotlin, desde o backend, ao frontend e aplicações móveis.

Aceitar Kotlin como uma equipa

Começar a utilizar Kotlin não tem de ser uma decisão arriscada! Por natureza, Kotlin funciona incrivelmente bem com o código Java existente e é até possível ter código Kotlin e Java no mesmo projeto. Desenvolver novas características em Kotlin num projeto existente pode ser uma excelente abordagem para proceder à adoção com um risco mínimo, já que não existe a necessidade de começar tudo de novo por causa de uma nova linguagem ou tecnologia.

Utilizar Kotlin tornou-se numa realidade diária para os Android developers. A maioria dos GDEs (Google Developer Experts) defende e utiliza Kotlin diariamente e pode ser encontrada bastante informação sobre esta linguagem na documentação oficial de Android.

Para os developers fora do universo mobile, por exemplo, os backend developers, Kotlin apresenta-se, não só como uma forma de alcançar os padrões standard de atuais linguagens de programação na JVM, mas também como um substituto para a linguagem Java na sua totalidade. Projetos como o TornadoFX, Ktor, Spring, entre muitos outros, oferecem as bases necessáras para que a linguagem Kotlin possa triunfar fora do domínio mobile. E uma vez que Kotlin é praticamente 100% interoperável com Java, os programadores podem continuar a utilizar as mesmas frameworks às quais já estão habituados mas com a felicidade que a sintaxe de Kotlin oferece!

As abordagens mais comuns para a adoção de Kotlin são:

  • Reescrever os testes de unidade Java com Kotlin. Muitos concordam que esta é uma ótima abordagem para começar a mexer em Kotlin, sem colocar em risco o código que vai para produção. Kotlin oferece alguns truques que permitem tornar os unit-tests mais legíveis e compactos.
  • Quando projetar novas características, em vez de utilizar Java, recorra a Kotlin!
  • Se o projeto em que está a trabalhar se deve a um refactor, aplique Kotlin à nova versão reescrita do código base.
  • Entregue-se totalmente a Kotlin e deixe para trás os dias tristes dizendo adeus a Java!

Linguagem Kotlin

Esta linguagem, em si, é maravilhosa. Kotlin é uma linguagem fortemente tipada, e que tem como principais objetivos ser concisa e legível.

Esta tenta também resolver um dos principais objetivos no mundo Java: NullPointerException. Torna a nulabilidade parte do sistema e força os developers a pensarem explicitamente sobre os seus impactos.

Outro aspeto que torna Kotlin uma linguagem extraordinária é o facto de permitir que os autores possam transportar as melhores carateríticas de outras linguagens para Kotlin. Para nomear algumas:

  • Extension Functions
  • Destructuring declarations
  • High Order Functions
  • Type Inference
  • Functional Facilities (map, filter, flatmap, etc)
  • Custom DSLs
  • Named parameters
  • Pattern Matching
  • Operator Overload

Sintaxe de Kotlin

Aqui ficam alguns trechos de código Kotlin. Um pequeno sneak peek. Estes tentam mostrar quão simples é a linguagem Kotlin, quando comparada a Java.

Java Kotlin

// Class definition

class Person {

private String name;

private int age;

public String getName(){

return name;
}

public int getAge(){
return this.age;
}

public Person(String name, int age) {
this.name = name;
this.age = age;
}

public String greet(){
return “Hi ” + this.name + “, how are you doing?”;
}
}

// Class definition

class Person(val name:String, val age:Int) {

public fun greet():String {

return “Hi $name, how are you doing?”

}

}

// A Typical unsafe Java Singleton

public class Singleton {

private static Singleton instance = null;

private String someProperty = “SOME_SINGLETON”;

private Singleton() {

}

public static Singleton getInstance() {

if (instance == null) {

instance = new Singleton();

}

return instance;

}

public String getSomeProperty() {

return someProperty;

}

public String appendSomethingToProperty(String something) {

return someProperty + something;

}

}

// A simple Kotlin Singleton

object Singleton {

val someProperty:String = “SOME_SINGLETON”

fun appendSomethingToProperty(something:String) = someProperty + something

}

O que se segue?

Se, através deste texto, consegui influenciar-vos a testar Kotlin, aqui ficam alguns locais onde podem experimentar e que servem como apoio:

  • Kotlin koans são uma série de pequenos desafios online e são uma ótima forma de começar a explorar a superfície desta linguagem;
  • Kotlinlang.org;
  • Kotlin for Android Developers é um livro de Antonio Leiva, e é uma excelente fonte de informação tanto sobre Kotlin como sobre Android em geral;
  • Kotlin in Action é outro livro, de Dimitry Jemerov e Svetlana Isakova, muito bom para que os Java developers possam crescer na linguagem Kotlin;
  • Kotlin for Java Developers é uma webtalk de Venkat Subramanian, e é um ótimo primer para Kotlin;
  • Kotlin Puzzlers de Anton Keks é uma viagem aos aspetos não tão fáceis de Kotlin.

João Gonçalves

Mobile Consultant, Xpand IT

João GonçalvesKotlin e um futuro (ainda mais) brilhante

Read more in

Xpand IT Visionaries

Readers also checked out

Do you want to receive amazing news about the IT industry's hot topics and the best articles about state-of-the-art technology?
Subscribe to our newsletter and be the first one to receive information to keep you constantly on edge.