Kotlin

linguagem de programação

Kotlin é uma linguagem de programação multiplataforma, orientada a objetos e funcional, concisa e estaticamente tipada (variáveis com tipos específicos), desenvolvida em 2011 pela empresa tcheca JetBrains,[4] que compila para a Máquina virtual Java (JVM) e também traduzida para a linguagem JavaScript e compilada para código nativo (via LLVM).[5][6] Foi anunciada em 2017 pela Google como uma linguagem de desenvolvimento oficial do Android.[4][7]

Kotlin
Logo do Kotlin
Paradigma
Surgido em 2010 (13–14 anos)[1]
Última versão 1.9.24 (7 de maio de 2024; há 4 meses[2])
Criado por JetBrains
Estilo de tipagem
  • estática
  • forte
  • inferida
Influenciada por
Plataforma
Sistema operacional
Licença Apache 2.0
Extensão do arquivo
  • .kt
  • .kts
Página oficial kotlinlang.org

A versão da JVM (Java Virtual Machine) de sua biblioteca padrão depende da Java Class Library, mas a inferência de tipos permite que sua sintaxe seja mais concisa. Apesar de possuir uma sintaxe mais concisa e um pouco diferente da linguagem Java, Kotlin é projetada para ter uma interoperabilidade total com código Java, agilizando assim a sua adoção.[4]

Foi considerada pelo público a 2ª linguagem "mais amada", de acordo com uma pesquisa conduzida pelo site Stack Overflow em 2018.[8]

Etimologia

editar

Desenvolvida pela JetBrains, o termo "kotlin" é baseado no nome da ilha de Kotlin (em russo: Котлин), onde situa-se a cidade russa de Kronstadt, próximo a São Petersburgo.[6]

História

editar
 
Uma imagem 2D do mascote do Kotlin
 
Uma imagem 3D do mascote do Kotlin

Em julho de 2011 a JetBrains revelou o Projeto Kotlin, no qual já estava trabalhando havia um ano.[9] Dmitry Jemerov disse que a maioria das linguagens não possuíam as características que eles da empresa procuravam, com exceção da linguagem Scala, no entanto, Dmitry Jemerov citou que o tempo de compilação do Scala era lento, sendo uma deficiência óbvia.[9] Um dos objetivos declarados da Kotlin é compilar tão rápido quanto Java. Em Fevereiro de 2012, a JetBrains abriu o projeto Kotlin sob a Licença Apache de Código aberto.[10] A JetBrains disse acreditar que a sua nova linguagem irá dirigir as vendas da IntelliJ IDEA.[11]

Kotlin v1.0 foi lançada em 15 de fevereiro de 2016.[12] Este é considerado o primeiro lançamento oficialmente estável e a JetBrains comprometeu-se com a compatibilidade com versões anteriores a partir desta versão.

No Google I/O 2017, o Google anunciou que o Kotlin é oficialmente suportado pela Google para desenvolvimento móvel no Android. Desde o lançamento do Android Studio 3.0 em outubro de 2017, o Kotlin é incluído como uma alternativa ao compilador Java padrão. O compilador Kotlin do Android permite que o usuário escolha entre o código de bytes compatível com Java 6 ou Java 8.[7]

Kotlin v1.3 foi lançada em 29 de outubro de 2018, trazendo coroutines para programação assíncrona.

Em 7 de maio de 2019, Google anunciou que agora o Kotlin é a linguagem principal para desenvolvedores de aplicativo Android.[13]

Filosofia

editar

O líder de desenvolvimento, Andrey Breslav, disse que Kotlin é projetada para ser uma linguagem orientada a objeto de uso industrial, e que Kotlin deve ser uma linguagem melhor do que Java, mas ainda ser totalmente interoperável com código Java, permitindo que as empresas possam fazer uma migração gradual de Java para Kotlin.[14]

Design

editar

Os ponto-e-vírgulas são opcionais como um terminador de instrução; na maioria dos casos, uma nova linha é suficiente para o compilador deduzir que a instrução terminou.

Declarações de variáveis ​​do Kotlin e listas de parâmetros têm o tipo de dados vindo depois do nome da variável (e com um separador de dois-pontos), semelhante ao Pascal.

Variáveis ​​no Kotlin podem ser imutáveis, declaradas com a palavra-chave val, ou mutáveis, declaradas com a palavra-chave var.

Os membros da classe são públicos por padrão e as próprias classes são finais por padrão, o que significa que a criação de uma classe derivada é desativada, a menos que a classe base seja declarada com a palavra-chave aberta.

Além das classes e métodos (chamadas de funções-membro em Kotlin) de programação orientada a objetos, Kotlin também suporta programação procedural com o uso de funções.

As funções e construtores da linguagem suportam argumentos padrão, listas de argumentos de tamanho variável, argumentos nomeados e sobrecarga por assinatura única.

O Kotlin DSL, é uma "Linguagem de Domínio Específico" (do inglês "Domain-Specific Language", DSL) ou "linguagem de programação de propósito especial", serve para criar linguagens específicas para um domínio específico usando a linguagem Kotlin; desenvolvedores criam uma sintaxe intuitiva para resolver problemas específicos em suas aplicações, tornando o código mais legível e de fácil entendimento.[15] Ou seja, esse tipo de linguagem é criada para resolver problemas em um domínio particular (não resolve problemas fora de seu âmbito de atuação).[15] Popularmente usada em projeto com configuração complexa e em projeto com interação rica através de API (conjunto de funções implementadas em um programa de computador que podem ser usadas por outros programas).[15]

Vantagens

editar

As vantagens do uso do Kotlin DSL traz são: maior legibilidade do código; redução de erros; facilitação da colaboração entre equipes e, maior produtividade.[15] Com sintaxe mais clara, os desenvolvedores podem entender rapidamente o objetivo de cada parte do código, bem útil em projetos complexos.[15] E os desenvolvedores concentran-se em resolver problemas específicos sem preocupar-se com a complexidade da linguagem.[15]

Exemplos

editar

Um exemplo clássico de uso do Kotlin DSL é criar bibliotecas de construção de interfaces, como o Anko, para a criação de layouts de modo intuitivo. Outro exemplo é o uso em framework de teste, com sintaxe adaptada para descrever teste de maneira mais clara.[15] O exemplo mais conhecido é o Gradle, ferramenta de automação de compilação, que usa Kotlin DSL que ajuda os desenvolvedores escrevam scripts de construção de forma expressiva.[15]

Multiplataforma

editar

O frameworks cross-platform "Kotlin Multiplataforma" (KMP) usado para desenvolvimento de aplicações para o sistema Android, iOS e, Desktop usando o mesmo código e mesma IDE através da técnica de compilação cruzada; onde o código Kotlin é compilado para diferentes sistema operacionais ao mesmo tempo com os benefícios da programação nativa (aplicações cross-platform e multiplatform).[16]

Em novembro de 2023 foi liberado a primeira atualização estável do KMP, unificando o código base que implementa: networking, armazenamento, validações, computações, e outras lógicas da aplicação.[16] O KMP também fornece uma biblioteca de código nativo para cada sistema de destino, que contém funções e classes que são compiladas pelo kotlin.[16]

Aplicações

editar

Uma das aplicações óbvias do Kotlin é o desenvolvimento do Android. A plataforma ficou "presa" no Java 7 por um tempo (com alguns recursos de linguagem contemporâneos acessíveis através do uso de Retrolambda ou da Jack Toolchain) e Kotlin introduz muitos aprimoramentos para programadores como segurança de ponteiro nulo, funções de extensão e notação infixa.

Acompanhado de compatibilidade total com Java e bom suporte a IDE (Android Studio), ele visa melhorar a legibilidade do código, oferecer uma maneira mais fácil de estender as classes do Android SDK e acelerar o desenvolvimento.

O Kotlin foi anunciado como uma linguagem de desenvolvimento oficial para Android no Google I/O 2017, tornando-se a terceira linguagem totalmente suportada para Android, além de Java e C++.

Uso por outros desenvolvedores

editar

De acordo com o site da Kotlin, Prezi está usando o Kotlin no backend. DripStat fez um writeup de sua experiência com Kotlin. De acordo com o blog da JetBrains, o Kotlin é usado pela Amazon Web Services, pelo Coursera, pela Netflix, pelo Uber, pelo Trello, pelo Basecamp e outros. Segundo o Google, o Kotlin já foi adotado por vários grandes desenvolvedores - Expedia, Flipboard, Pinterest, Square e outros - em seus aplicativos de produção para Android.

Exemplos

editar

Programa Olá Mundo

editar
 Ver artigo principal: Programa Olá Mundo
fun main() {
    println("Olá, Mundo!")
}

Algoritmo de Trabb Pardo-Knuth

editar
 Ver artigo principal: Algoritmo de Trabb Pardo-Knuth

O algoritmo TPK é um programa computacional introduzido por Donald Knuth e Luis Trabb Pardo que ilustra a evolução das linguagens de programação.[17][18][19]

import kotlin.math.*

fun f(t: Double) = sqrt(abs(t)) + 5 * t.pow(3)

fun main() {
    val a = DoubleArray(11) { readLine()?.toDouble() ?: 0.0 }
	a.withIndex().reversed().forEach { (i, t) ->
        val y = f(t)
        println(if (y > 400) "$i TOO LARGE" else "$i $y")
    }
}

Jetpack Compose

editar
 Ver artigos principais: Interface gráfica do usuário e Android

Jetpack Compose é uma estrutura de interface gráfica da aplicação (framework UI) de código aberto desenvolvida pelo Google,[20] com primeira prévia anunciada em maio de 2019.[21] O compose é compatível com a versão Android 5.0 e posteriores, com suporte para Material Design 3.[22] Possui um modelo de programação de UI reativo semelhante ao Vue.js e React Native.[21]

Exemplo de programa "Olá Mundo" usando o Jetpack Compose:

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            Surface(modifier = Modifier.fillMaxSize()) {
                ContentView()
            }
        }
    }
}

@Composable
fun ContentView() {
    Box(contentAlignment = Alignment.Center) {
        Text(
            text = "Olá, Mundo!",
            style = MaterialTheme.typography.titleLarge
        )
    }
}

@Preview
@Composable
fun PreviewContentView() {
    Surface {
        ContentView()
    }
}

Ver também

editar

Referências

  1. a b «FAQ - Kotlin Programming Language». kotlinlang.org (em inglês). Consultado em 13 de março de 2018 
  2. «Release Kotlin 1.9.24 · JetBrains/kotlin». github.com (em inglês). 7 de maio de 2024. Consultado em 16 de maio de 2024 
  3. a b «Kotlin/Native». kotlinlang.org (em inglês). Consultado em 13 de março de 2018 
  4. a b c Zanella, Jonathan Rafael (20 de maio de 2017). «Kotlin: explorando uma nova linguagem ⚡️» (em inglês) 
  5. «Kotlin anunciada como linguagem oficial do Android» 
  6. a b Heiss, Janice (abril de 2013). «The Advent of Kotlin: A Conversation with JetBrains' Andrey Breslav». oracle.com. Oracle Technology Network. Consultado em 2 de fevereiro de 2014 
  7. a b «Kotlin on Android. Now official». Kotlin Blog (em inglês). 17 de maio de 2017 
  8. «Stack Overflow Developer Survey 2018». Stack Overflow. Consultado em 16 de abril de 2018 
  9. a b Krill, Paul (22 de julho de 2011). «JetBrains readies JVM language Kotlin». InfoWorld. Consultado em 2 de fevereiro de 2014 
  10. Waters, John (22 de fevereiro de 2012). «Kotlin Goes Open Source». ADTmag.com/. 1105 Enterprise Computing Group. Consultado em 2 de fevereiro de 2014 
  11. «Why JetBrains needs Kotlin». we expect Kotlin to drive the sales of IntelliJ IDEA 
  12. «Kotlin 1.0 Released: Pragmatic Language for JVM and Android». Kotlin Blog (em inglês). 15 de fevereiro de 2016 
  13. Hagos, Ted (2018). «Kotlin is now Google's preferred language for Android app development». Berkeley, CA: Apress. TechCrunch. Retrieved 8 May 2019: 33–61. Consultado em 17 de novembro de 2021 
  14. «JVM Languages Report extended interview with Kotlin creator Andrey Breslav». zeroturnaround.com. 22 de abril de 2013. Consultado em 2 de fevereiro de 2014 
  15. a b c d e f g h «O que é Kotlin DSL: Entenda sua Aplicação e Vantagens». Flamma Design. 10 de agosto de 2024. Consultado em 11 de setembro de 2024 
  16. a b c «Vale a pena aprender KMP?». Alura. 11 de dezembro de 2023. Consultado em 10 de setembro de 2024 
  17. «The Early Development of Programming Languages» (PDF) (em inglês). Stanford University. 1977. Consultado em 11 de dezembro de 2011 
  18. «Tpk Algorithm» (em inglês). Consultado em 6 de dezembro de 2011 
  19. Ryan Stansifer (12 de julho de 2011). «TPK Algorithm in Different Programming Languages» (em inglês). cs.fit.edu. Consultado em 6 de dezembro de 2011 
  20. Anderson, Tim (6 de agosto de 2021). «Does the world need another cross-platform framework? Tough, here's JetBrains with Compose Multiplatform. A different way of thinking about applications» [O mundo precisa de outra estrutura multiplataforma? Difícil, aqui está JetBrains com Compose Multiplatform. Uma maneira diferente de pensar sobre aplicações.]. The Register (em inglês). Consultado em 10 de setembro de 2024 
  21. a b Lardinois, Frederic (7 de maio de 2019). «Google launches Jetpack Compose, an open-source, Kotlin-based UI development toolkit» [Google lança Jetpack Compose, um kit de ferramentas de desenvolvimento de UI de código aberto baseado em Kotlin]. TechCrunch (em inglês). Consultado em 10 de setembro de 2024 
  22. «Configurar seu projeto do Android | Jetpack Compose». Android Developers. Consultado em 10 de setembro de 2024 

Ligações externas

editar
  Este artigo sobre informática é um esboço. Você pode ajudar a Wikipédia expandindo-o.