Kotlin: Configuração do Ambiente Kotlin e Estruturação de…
Última atualização: 2026-08-26
Do JDK ao Gradle, do REPL kotlinc ao IntelliJ IDEA — configure seu ambiente de desenvolvimento Kotlin em 5 minutos e faça o projeto OrderProcessor da Alice funcionar.
1. O que Você Aprenderá
- Instalação do JDK e configuração do
JAVA_HOME - Instalação do IntelliJ IDEA com o plugin Kotlin
- Estrutura de projeto com Gradle Kotlin DSL
escrever código→compilar→executar: Hello World- REPL / playground interativo
kotlinc
2. A História Real de um Iniciante
(1) Problema: Configuração de Ambiente Parece um Labirinto
Alice é uma nova desenvolvedora na equipe. Tarefa do primeiro dia: configurar o ambiente de desenvolvimento do OrderProcessor. Ela gastou 3 horas lutando com versões do JDK, configuração do Gradle e plugins da IDE — sem executar um único Hello World.
(2) Fluxo de Configuração Padronizado
# Passo 1: Instalar JDK 17 (LTS)
# Passo 2: Instalar IntelliJ IDEA
# Passo 3: Criar projeto Gradle com Kotlin DSL
# Passo 4: Executar Hello World em 5 minutos
Seguindo um fluxo padronizado, Alice completou a configuração do ambiente e executou seu primeiro programa em 5 minutos.
3. Instalação e Configuração do JDK
(1) Seleção de Versão do JDK
| Versão | Tipo | Recomendação | Observações |
|---|---|---|---|
| JDK 17 | LTS | ⭐⭐⭐ | Suporte de longo prazo, mínimo para Spring Boot 3.x |
| JDK 21 | LTS | ⭐⭐⭐ | LTS mais recente, suporte a virtual threads |
| JDK 8 | Legado | ⭐ | Manutenção de projetos legados, não para novos projetos |
| JDK 11 | LTS antigo | ⭐⭐ | Versão de transição; novos projetos devem usar 17+ |
(2) Instalação e Variáveis de Ambiente
# macOS (Homebrew)
brew install openjdk@17
# Ubuntu/Debian
sudo apt install openjdk-17-jdk
# Windows - baixe de adoptium.net
# Depois configure as variáveis de ambiente
# Verificar instalação
java -version
# openjdk version "17.0.x" ...
# Configurar JAVA_HOME (adicione ao ~/.bashrc ou ~/.zshrc)
export JAVA_HOME=$(/usr/libexec/java_home -v 17) # macOS
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk # Linux
flowchart TD
A[Baixar JDK 17] --> B[Instalar JDK]
B --> C[Configurar JAVA_HOME]
C --> D[Adicionar ao PATH]
D --> E{java -version OK?}
E -->|Sim| F[Prosseguir para IDE]
E -->|Não| G[Verificar configuração PATH]
G --> C
4. Instalação do IntelliJ IDEA
(1) Seleção de Versão
| Versão | Preço | Suporte Kotlin | Melhor Para |
|---|---|---|---|
| IDEA Ultimate | Pago | Completo (Spring/KMP/Compose) | Desenvolvedores corporativos |
| IDEA Community | Gratuito | Suporte básico Kotlin | Aprendizes individuais |
| Fleet | Preview | IDE de nova geração | Early adopters |
(2) Verificação do Plugin Kotlin
IntelliJ IDEA → Settings → Plugins → Installed
✅ Kotlin (incluso desde 2020.x)
✅ Gradle (incluso)
5. Configuração de Projeto com Gradle Kotlin DSL
(1) Estrutura do Projeto
order-processor/
├── build.gradle.kts # Configuração de build (Kotlin DSL)
├── settings.gradle.kts # Configurações do projeto
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── src/
│ ├── main/
│ │ └── kotlin/
│ │ └── com/order/
│ │ └── Main.kt
│ └── test/
│ └── kotlin/
│ └── com/order/
│ └── MainTest.kt
└── gradlew / gradlew.bat # Scripts wrapper do Gradle
(2) build.gradle.kts
// build.gradle.kts
plugins {
kotlin("jvm") version "1.9.22"
application
}
group = "com.order"
version = "1.0.0"
repositories {
mavenCentral()
}
dependencies {
implementation(kotlin("stdlib"))
testImplementation(kotlin("test"))
testImplementation("org.junit.jupiter:junit-jupiter:5.10.1")
}
tasks.test {
useJUnitPlatform()
}
application {
mainClass.set("com.order.MainKt")
}
kotlin {
jvmToolchain(17)
}
(3) settings.gradle.kts
// settings.gradle.kts
rootProject.name = "order-processor"
6. Seu Primeiro Programa Kotlin
(1) Escrever Main.kt
// src/main/kotlin/com/order/Main.kt
fun main() {
println("Hello, OrderProcessor!")
val orderCount = 1_500
val dailyRevenue = 89_500.50
// Template de string com expressão
println("Estatísticas de hoje: $orderCount pedidos, \$$dailyRevenue USD de receita")
}
(2) Comparação de Métodos de Execução
| Método | Comando | Caso de Uso |
|---|---|---|
| Gradle | ./gradlew run |
Padrão para projetos de produção |
| IDE | Clicar no triângulo verde | Desenvolvimento diário e depuração |
| kotlinc | kotlinc ... |
Empacotamento via CLI |
| REPL | kotlinc interativo |
Experimentação rápida |
(3) Saída Esperada
Hello, OrderProcessor!
Estatísticas de hoje: 1500 pedidos, $89500.50 USD de receita
7. Playground Interativo REPL
O Kotlin inclui um REPL (Read-Eval-Print Loop) integrado, perfeito para testar rapidamente trechos de código.
$ kotlinc
Welcome to Kotlin version 1.9.22
Type :help for help, :quit for quit
>>> val orderTotal = 299.99
>>> println("Total do pedido: \$$orderTotal USD")
Total do pedido: $299.99 USD
>>> "ORD-${1001}".also { println(it) }
ORD-1001
>>> :quit
(1) Comandos Rápidos do REPL
| Comando | Função |
|---|---|
:help |
Exibir ajuda |
:quit |
Sair do REPL |
:history |
Ver histórico de entrada |
:dump |
Ver classes definidas |
8. Exemplo Completo: Bootstrap do OrderProcessor da Alice
// ============================================
// OrderProcessor - Bootstrap do Projeto
// Funcionalidade: Inicializar projeto com modelos de domínio básicos
// ============================================
// Modelo de domínio
data class Order(val id: String, val total: Double, val status: String)
// Lógica de negócio
fun calculateTax(order: Order, rate: Double = 0.08): Double {
return order.total * rate
}
fun formatReceipt(order: Order, tax: Double): String {
val grandTotal = order.total + tax
return """
|========================================
| Recibo do Pedido
|========================================
| ID Pedido : ${order.id}
| Subtotal : $${order.total} USD
| Imposto (8%): $$tax USD
| Total Geral : $$grandTotal USD
| Status : ${order.status}
|========================================
""".trimMargin()
}
fun main() {
val order = Order("ORD-001", 299.99, "CONFIRMED")
val tax = calculateTax(order)
val receipt = formatReceipt(order, tax)
println(receipt)
// Processar múltiplos pedidos
val orders = listOf(
Order("ORD-002", 1_500.00, "PROCESSING"),
Order("ORD-003", 45.50, "SHIPPED"),
Order("ORD-004", 8_900.00, "CONFIRMED")
)
val totalRevenue = orders.sumOf { it.total }
println("\nReceita total: \$$totalRevenue USD em ${orders.size} pedidos")
}
Saída:
========================================
Recibo do Pedido
========================================
ID Pedido : ORD-001
Subtotal : $299.99 USD
Imposto (8%): $23.999200000000002 USD
Total Geral : $323.9892 USD
Status : CONFIRMED
========================================
Receita total: $10445.5 USD em 3 pedidos
❓ Perguntas Frequentes
P: Preciso usar o Gradle com Kotlin? Posso usar Maven? R: Você pode usar Maven, mas o Gradle Kotlin DSL é a recomendação oficial. A configuração de build com Kotlin DSL é ela mesma código Kotlin com segurança de tipos.
P: O Kotlin pode rodar no JDK 8? R: Sim. O Kotlin suporta JDK 8+, mas novos projetos devem usar JDK 17 LTS para melhor desempenho e suporte a recursos.
P: O IntelliJ IDEA Community é suficiente? R: Para aprendizado puro de Kotlin/JVM, sim. Mas desenvolvimento Spring Boot e KMP multiplataforma exigem a edição Ultimate.
P: E se o comando
kotlincnão for encontrado? R: O compilador Kotlin vem com o IntelliJ IDEA, ou você pode instalá-lo separadamente viasdkmanoubrew.
P: Qual a diferença entre Gradle Kotlin DSL e Groovy DSL? R: Kotlin DSL usa Kotlin para scripts de build, oferecendo dicas de tipos e verificação em tempo de compilação. Groovy DSL é mais flexível, mas não tem segurança de tipos. Kotlin DSL é recomendado para novos projetos.
P: E se eu receber "Main class not found" em tempo de execução? R: Verifique se o
mainClassembuild.gradle.ktsaponta para o nome correto da classe (note o sufixoKt:Main→MainKt).
▶ Exemplo: Instalar via sdkman
curl -s "https://get.sdkman.io" | bash
sdk install kotlin
kotlinc -version
Saída:
kotlinc-jvm 2.0.21 (JRE 17.0.11)
▶ Exemplo: Criar um Projeto Gradle
gradle init --type kotlin-application --dsl kotlin
./gradlew run
Saída:
BUILD SUCCESSFUL
▶ Exemplo: REPL Interativo
>>> val x = 10
>>> val y = 20
>>> x + y
30
Saída:
30
▶ Exemplo: Compilação direta com kotlinc
# Criar arquivo fonte
echo 'fun main() {
val name = "Kotlin"
println("Olá do $name!")
println("2 + 2 = ${2 + 2}")
}' > Ola.kt
# Compilar e executar
kotlinc Ola.kt -include-runtime -d Ola.jar
java -jar Ola.jar
Saída:
Olá do Kotlin!
2 + 2 = 4
▶ Exemplo: Executar script Kotlin diretamente
// script.main.kts
val orders = listOf(
"ORD-001" to 299.99,
"ORD-002" to 1500.00,
"ORD-003" to 50.00
)
orders.forEach { (id, total) ->
println("$id: \$$total USD")
}
val total = orders.sumOf { it.second }
println("---")
println("Total geral: \$$total USD")
kotlinc -script script.main.kts
Saída:
ORD-001: $299.99 USD
ORD-002: $1500.0 USD
ORD-003: $50.0 USD
---
Total geral: $1849.99 USD
▶ Exemplo: REPL multilinha
>>> data class Order(val id: String, val total: Double)
>>> val orders = listOf(
... Order("A", 10.0),
... Order("B", 20.0),
... Order("C", 30.0)
... )
>>> orders.sumOf { it.total }
60.0
>>> orders.filter { it.total > 15.0 }.map { it.id }
[B, C]
Saída:
60.0
[B, C]
▶ Exemplo: Verificar instalação
// verificar.kt - execute para validar a instalação
fun main() {
val jdk = System.getProperty("java.version")
val os = System.getProperty("os.name")
val user = System.getProperty("user.name")
println("=== Ambiente Kotlin ===")
println("JDK: $jdk")
println("OS: $os")
println("Usuário: $user")
println("Kotlin: ${KotlinVersion.CURRENT}")
}
Saída:
=== Ambiente Kotlin ===
JDK: 17.0.11
OS: Windows 11
Usuário: alice
Kotlin: 1.9.22
📖 Resumo
- JDK 17 LTS é a versão recomendada para desenvolvimento Kotlin;
JAVA_HOMEdeve ser configurado - IntelliJ IDEA já vem com o plugin Kotlin integrado e é a melhor IDE de desenvolvimento
- Gradle Kotlin DSL fornece configuração de build com segurança de tipos
- O ponto de entrada do programa Kotlin é
fun main(), sem necessidade de classe envolvente - O REPL é ótimo para experimentação rápida e validação de trechos de código
data class+ templates de string + parâmetros padrão tornam o código mais conciso
📝 Exercícios
- Iniciante (⭐) : Instale JDK 17 + IntelliJ IDEA, crie um projeto Gradle Kotlin DSL e execute Hello World. Dica: consulte a Seção 6
- Intermediário (⭐⭐) : Modifique o
build.gradle.ktspara adicionar a dependênciakotlinx.coroutines. Dica:implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3") - Desafio (⭐⭐⭐) : Escreva um script com
kotlincque leia argumentos de linha de comando e imprima um resumo de pedido. Dica:argsfornece argumentos CLI,kotlinc -scriptexecuta