Kotlin serve para backend?
Serve e serve muito bem! Se você acha que Kotlin é só pra Android, está na hora de rever esse conceito. A linguagem vem conquistando cada vez mais espaço no desenvolvimento do lado do servidor, e com razão.
Por que usar Kotlin no backend?
Kotlin roda na JVM, então herda toda a robustez e o ecossistema maduro do Java. Mas vai além, oferecendo:
- Código mais enxuto: menos boilerplate significa mais produtividade
- Null safety: adeus
NullPointerExceptionem produção às 3 da manhã - Coroutines: programação assíncrona eficiente e elegante
- Interoperabilidade com Java: use qualquer biblioteca Java existente
Se você quer entender melhor o que são coroutines, temos um glossário completo sobre o tema. E para quem quer se aprofundar no conceito de null safety, vale a leitura também.
Os frameworks mais populares
Ktor
Criado pela JetBrains, é um framework leve e assíncrono feito sob medida pra Kotlin. Ideal pra microsserviços e APIs:
import io.ktor.server.application.*
import io.ktor.server.engine.*
import io.ktor.server.netty.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
fun main() {
embeddedServer(Netty, port = 8080) {
routing {
get("/") {
call.respondText("Fala, dev! A API tá no ar!")
}
get("/produtos") {
val produtos = listOf(
mapOf("id" to 1, "nome" to "Notebook", "preco" to 3500.0),
mapOf("id" to 2, "nome" to "Mouse", "preco" to 89.90)
)
call.respond(produtos)
}
}
}.start(wait = true)
}
Ktor brilha especialmente quando você quer ter controle total sobre o que está incluído no projeto. Diferente de frameworks opinados, ele funciona como um conjunto de plugins que você adiciona conforme a necessidade: autenticação, serialização, CORS, WebSockets. Se o seu cenário é construir microsserviços enxutos ou APIs de alta performance, Ktor é uma escolha excelente. Temos um guia completo de Ktor para backend e também um tutorial prático de Ktor para quem quer começar.
Spring Boot
O framework mais usado no mundo corporativo tem suporte oficial a Kotlin desde 2017. Se você já conhece Spring em Java, a transição é suave:
@RestController
class ProdutoController(private val repository: ProdutoRepository) {
@GetMapping("/produtos")
fun listarTodos(): List<Produto> = repository.findAll()
@PostMapping("/produtos")
fun criar(@RequestBody produto: Produto): Produto = repository.save(produto)
}
Spring Boot é a escolha natural para projetos corporativos de grande porte. Ele traz um ecossistema gigante com soluções para segurança (Spring Security), mensageria (Spring AMQP), batch processing e muito mais. Se você quer se aprofundar, confira nosso guia de Spring Boot com Kotlin e o tutorial de Spring Boot.
Comparando Ktor e Spring Boot
| Aspecto | Ktor | Spring Boot |
|---|---|---|
| Tamanho do projeto | Leve, modular | Robusto, muitas dependências |
| Curva de aprendizado | Mais simples para quem conhece Kotlin | Mais simples para quem já conhece Spring |
| Coroutines | Suporte nativo | Suporte via WebFlux/coroutines |
| Ecossistema | Em crescimento | Maduro e vasto |
| Ideal para | Microsserviços, APIs rápidas | Aplicações enterprise, monolitos |
Quem usa Kotlin no backend?
Empresas de peso já adotaram Kotlin no servidor:
- Amazon usa Kotlin em vários serviços internos
- Netflix migrou partes do backend pra Kotlin
- Mercado Livre tem times utilizando Kotlin no backend
- Nubank (que é muito forte em Clojure) também tem frentes com Kotlin
No Brasil, startups e fintechs estão puxando essa tendência, mas empresas maiores também estão entrando nessa. Bancos digitais, plataformas de e-commerce e empresas de logística têm adotado Kotlin para novos serviços, especialmente quando precisam de alta performance e código mais legível.
Banco de dados e ORM
Pra trabalhar com banco de dados em Kotlin, as opções não faltam:
- Exposed: ORM feito pela JetBrains, leve e idiomático
- Spring Data JPA: funciona perfeitamente com Kotlin
- jOOQ: geração de código type-safe pra consultas SQL
Aqui vai um exemplo prático com Exposed, mostrando como definir uma tabela e fazer uma consulta:
object Produtos : Table() {
val id = integer("id").autoIncrement()
val nome = varchar("nome", 255)
val preco = double("preco")
override val primaryKey = PrimaryKey(id)
}
fun listarProdutosBaratos(): List<String> {
return transaction {
Produtos.select { Produtos.preco less 100.0 }
.map { it[Produtos.nome] }
}
}
Para entender melhor como classes e collections funcionam em Kotlin (conceitos fundamentais para trabalhar com ORMs), vale consultar nosso glossário.
Deploy e infraestrutura
Uma vantagem enorme do Kotlin no backend é que o deploy funciona exatamente como qualquer aplicação JVM. Você pode:
- Gerar um JAR executável e rodar em qualquer servidor com Java instalado
- Empacotar com Docker usando imagens baseadas em OpenJDK
- Fazer deploy em serviços de nuvem como AWS, GCP ou Azure sem nenhuma configuração especial
- Usar GraalVM para compilação nativa e tempo de startup ultrarrápido
Se você quer aprender mais sobre containerização, temos um guia de Kotlin com Docker e um guia de CI/CD que cobrem esse fluxo completo. Para quem está interessado em arquitetura de microsserviços, o guia de microsserviços com Kotlin é leitura obrigatória.
Vale a pena migrar?
Se você já tem um backend em Java, a migração pode ser feita gradualmente, arquivo por arquivo, graças à interoperabilidade. Não precisa reescrever tudo de uma vez. Muitos times começam escrevendo os novos módulos em Kotlin e vão convertendo o código antigo aos poucos.
Uma estratégia comum em empresas brasileiras é definir que todo código novo deve ser escrito em Kotlin, enquanto o código Java existente só é convertido quando precisa de manutenção significativa. Dessa forma, a migração acontece organicamente, sem interromper entregas.
Para quem está pensando em dar esse passo, nosso guia completo de Kotlin cobre desde os fundamentos até tópicos avançados, e o artigo sobre Kotlin ou Java pode ajudar a convencer o time.
O Kotlin no backend não é modinha: é uma tendência consolidada que traz ganhos reais de produtividade e qualidade de código. Se você está pensando em experimentar, o momento é agora.