Kotlin
Kotlin | |
---|---|
Paradigma | |
Surgido em | 2010 (13–14 anos)[1] |
Última versão | 2.0.20 (22 de agosto de 2024[2]) |
Criado por | JetBrains |
Estilo de tipagem |
|
Influenciada por | |
Plataforma |
|
Sistema operacional | |
Licença | Apache 2.0 |
Extensão do arquivo |
|
Página oficial | kotlinlang |
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]
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 | editar código-fonte]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 | editar código-fonte]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 | editar código-fonte]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 | editar código-fonte]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.
DSL
[editar | editar código-fonte]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 | editar código-fonte]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 | editar código-fonte]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 | editar código-fonte]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 | editar código-fonte]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 | editar código-fonte]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 | editar código-fonte]Programa Olá Mundo
[editar | editar código-fonte]fun main() {
println("Olá, Mundo!")
}
Algoritmo de Trabb Pardo-Knuth
[editar | editar código-fonte]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 | editar código-fonte]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 | editar código-fonte]- Dart (linguagem de programação)
- Java (linguagem de programação)
- Scala (linguagem de programação)
- Swift (linguagem de programação)
- ↑ a b «FAQ - Kotlin Programming Language». kotlinlang.org (em inglês). Consultado em 13 de março de 2018
- ↑ «Release Kotlin 2.0.20 · JetBrains/kotlin». github.com (em inglês). 22 de agosto de 2024. Consultado em 9 de outubro de 2024
- ↑ a b «Kotlin/Native». kotlinlang.org (em inglês). Consultado em 13 de março de 2018
- ↑ a b c Zanella, Jonathan Rafael (20 de maio de 2017). «Kotlin: explorando uma nova linguagem ⚡️» (em inglês)
- ↑ «Kotlin anunciada como linguagem oficial do Android»
- ↑ 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
- ↑ a b «Kotlin on Android. Now official». Kotlin Blog (em inglês). 17 de maio de 2017
- ↑ «Stack Overflow Developer Survey 2018». Stack Overflow. Consultado em 16 de abril de 2018
- ↑ a b Krill, Paul (22 de julho de 2011). «JetBrains readies JVM language Kotlin». InfoWorld. Consultado em 2 de fevereiro de 2014
- ↑ Waters, John (22 de fevereiro de 2012). «Kotlin Goes Open Source». ADTmag.com/. 1105 Enterprise Computing Group. Consultado em 2 de fevereiro de 2014
- ↑ «Why JetBrains needs Kotlin».
we expect Kotlin to drive the sales of IntelliJ IDEA
- ↑ «Kotlin 1.0 Released: Pragmatic Language for JVM and Android». Kotlin Blog (em inglês). 15 de fevereiro de 2016
- ↑ 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
- ↑ «JVM Languages Report extended interview with Kotlin creator Andrey Breslav». zeroturnaround.com. 22 de abril de 2013. Consultado em 2 de fevereiro de 2014
- ↑ 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
- ↑ a b c «Vale a pena aprender KMP?». Alura. 11 de dezembro de 2023. Consultado em 10 de setembro de 2024
- ↑ «The Early Development of Programming Languages» (PDF) (em inglês). Stanford University. 1977. Consultado em 11 de dezembro de 2011
- ↑ «Tpk Algorithm» (em inglês). Consultado em 6 de dezembro de 2011
- ↑ 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
- ↑ 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
- ↑ 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
- ↑ «Configurar seu projeto do Android | Jetpack Compose». Android Developers. Consultado em 10 de setembro de 2024
Ligações externas
[editar | editar código-fonte]- Sítio oficial
- Kotlin no GitHub
- «Kotlin Docs - Kotlin Documentation» (em inglês). Documentação oficial
- «Kotlin Playground» (em inglês). Experimente Kotlin online