O quê é Kotlin Native?
Tags: kotlin, jetbrains, backend, braziliandevs
Published: 2021-10-18 02:17:31

## Kotlinautas

Esse conteúdo é oferecido e distribuído pela comunidade [Kotlinautas](https://twitter.com/kotlinautas/), uma comunidade brasileira que busca oferecer conteúdo gratuito sobre a linguagem Kotlin em um espaço plural.

![capa Kotlinautas](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jreawpvk6whxigcpmctf.png)

## Kotlin Native

[Kotlin Native](https://kotlinlang.org/docs/native-overview.html) é uma tecnologia criada pela JetBrains para compilar código Kotlin em binários nativos do sistema, esses binários podem ser executados sem a necessidade de uma máquina virtual, pois esse binário pode ser executado diretamente pelo sistema.

Kotlin Native suporta as seguintes plataformas:

- macOS
- iOS, tvOS, watchOS
- Linux
- Windows
- Android

O executável criado pela Kotlin Native pode rodar em todas plataformas ao mesmo tempo (execeto se você utilizar alguma biblioteca exclusiva para uma plataforma, como uma biblioteca para criação de apps para iOS).

## Materiais

Será necessário ter o [IntelliJ](https://www.jetbrains.com/idea/) instalado na máquina e um conhecimento básico sobre a linguagem [Kotlin](https://kotlinlang.org/).

## Criando projeto

Primeiro precisamos criar o projeto. Esse projeto pode ser criado em em **File** > **New** > **Project**, depois, vá á seção **Kotlin**, e preencha o campo **Name** com o nome do projeto, como **native**, selecione a localização do projeto, e na seção **Project Template** selecione **Native Application**.

![Menu de criação do projeto com os campos preenchidos](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wdbo0defjyjqhcmykgu1.png)

Após isso,clique em **Finish** no proximo menu para criar o projeto.

![Segundo menu de criação do projeto](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3t3wpbx6frsiz1p0wdgo.png)

Após isso, o projeto foi criado com Kotlin Native.

## Criando nosso código

Por padrão, há um arquivo em `src/NativeMain/kotlin/main.kt` que é o arquivo principal da aplicação. Nesse arquivo há apenas um `println` que mostra a string `Hello, Kotlin/Native!` na tela:

```kotlin
fun main() {
	println("Hello, Kotlin/Native!")
}
```

Vamos modificar esse código. Vamos criar uma variável `texto` que irá armazenar uma string. Depois vamos mostrar algumas informações sobre essa string, como a quantidade de letras, quantidade de palavras,etc. E vamos mostrar essas informações na tela.

Primeiro, vamos criar essa variável `texto`:

```kotlin
fun main() {
	val texto = "Essa string é fixa"
}
```

Agora vamos criar uma série de variáveis que vão representar fatos sobre essa string, como o seu tamanho por exemplo:

```kotlin
fun main() {
	val texto = "Essa string é fixa"

	val tamanho = texto.length
	val quantidadeDePalavras = texto.split(" ").size
	val primeiraPalavra = texto.split(" ").first()
	val ultimaPalavra = texto.split(" ").last()
	val maiúsculo = texto.uppercase()
}
```

Agora vamos mostrar na tela essas variáveis que criamos de uma maneira intuitiva, usando as **Template Strings**:

```kotlin
fun main() {
	val texto = "Essa string é fixa"

	val tamanho = texto.length
	val quantidadeDePalavras = texto.split(" ").size
	val primeiraPalavra = texto.split(" ").first()
	val ultimaPalavra = texto.split(" ").last()
	val maiúsculo = texto.uppercase()

	println("O tamanho do texto é $tamanho, a quantidade de palavras é $quantidadeDePalavras, a primeira palavra é $primeiraPalavra, a ultima palavra é $ultimaPalavra, e o texto em maíúsculo é $maiúsculo")
}
```

## Rodando o código

Podemos rodar o código atual clicando na seta verde ao lado da função `main`. Rodando esse código, o resultado será:

```
> Task :runDebugExecutableNative
O tamanho do texto é 18, a quantidade de palavras é 4, a primeira palavra é Essa, a ultima palavra é fixa, e o texto em maíúsculo é ESSA STRING É FIXA

Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

See https://docs.gradle.org/7.1/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 8s
3 actionable tasks: 3 executed
Task execution finished 'runDebugExecutableNative'.
```

Podemos ver a parte referente ao nosso código na segunda linha, informando sobre o texto que criamos.

## Binário Final

O binário final está localizado em `/build/bin/native/debugExecutable/native.kexe`, esse binário pode ser executado diretamente via linha de comando com `native.kexe` no Windows e `./native.kexe` no Linux/MacOS.

## Finalização

Neste artigo, você aprendeu como utilizar Kotlin Native para criar binários nativos, podendo usar programas feitos em Kotlin sem a necessidade de uma JVM.

Busque agora fazer exercícios, ou idéias próprias usando Kotlin Native para praticar.

Muito obrigada por ler ❤️🏳️‍⚧️ e me segue nas redes, é tudo [@lissatransborda](https://twitter.com/lissatransborda) 👀