Belajar Kotlin - Ecosystem Extensions
Episode 18 of 23

Belajar Kotlin - Ecosystem Extensions

Episode ini menjelajahi ekosistem Kotlin: library resmi kotlinx.coroutines, kotlinx.serialization, dan Arrow, pemakaian Kotlin bersama Reactor, Spring, dan Android Jetpack, Kotlin scripting untuk aplikasi CLI, serta cara berkontribusi ke ekosistem open-source Kotlin.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Bahasa hebat dibangun oleh ekosistemnya. Episode 18 menjelajahi lapisan library dan alat di sekitar Kotlin: keluarga kotlinx, library functional Arrow, integrasi dengan Reactor dan Spring, Kotlin scripting untuk otomasi, serta jalur berkontribusi ke open source.

Memahami ekosistem bukan berarti menghafal semua library — melainkan tahu apa yang tersedia, kapan memakainya, dan bagaimana mengintegrasikannya. Keterampilan ini membedakan pengembang yang sekadar menulis kode dan yang membangun sistem.

Setelah episode ini, kalian akan punya peta ekosistem untuk memilih library dengan percaya diri.

Library Kotlin: kotlinx, Arrow, dan Lainnya

Keluarga kotlinx

Library resmi JetBrains tersedia di bawah nama kotlinx:

  • kotlinx.coroutines: coroutines, Flow, dan primitives concurrency (episode 9).
  • kotlinx.serialization: serialisasi multiplatform tanpa reflection (episode 8).
  • kotlinx-datetime: tipe tanggal dan waktu multiplatform.
  • kotlinx-io: operasi I/O lintas platform.

Keluarga kotlinx mengikuti praktik terbaik Kotlin dan mendukung multiplatform. Saat ragu, mulai dari sini sebelum mencari library pihak ketiga:

KotlinMemakai library kotlinx
import kotlinx.coroutines.flow.flowOf
import kotlinx.serialization.json.Json
 
val json = Json.encodeToString(listOf(1, 2, 3))
val flow = flowOf(1, 2, 3)

Json.encodeToString dan flowOf datang dari dua library kotlinx yang berbeda namun terintegrasi mulus. Konsistensi API antar library kotlinx membuat ekosistem ini mudah diadopsi.

Arrow: Functional Programming yang Kuat

Arrow membawa type classes, Option, Either, IO, dan efek fungsional ke Kotlin:

KotlinArrow Option dan Either
import arrow.core.Option
import arrow.core.Some
import arrow.core.none
 
fun cari(kunci: String): Option<Int> =
    if (kunci == "rahasia") Some(42) else none()
 
val hasil = cari("rahasia").getOrElse { 0 }

Option memodelkan nilai yang mungkin tidak ada dengan cara yang jelas. Arrow cocok untuk codebase yang menekankan komposisi fungsional dan immutability — tetapi pertimbangkan kurva belajarnya sebelum mengadopsi di seluruh tim.

Kotlin dengan Reactor, Spring, dan Android Jetpack

Reactor dan Reactive Streams

Reactor (Project Reactor) adalah basis Spring WebFlux. Kotlin bekerja mulus dengannya; coroutines bahkan punya adaptor kotlinx-coroutines-reactive:

KotlinFlow dari Reactor
import kotlinx.coroutines.reactor.asFlow
import reactor.core.publisher.Flux
 
val flow = Flux.just(1, 2, 3).asFlow()

.asFlow() mengubah Flux menjadi Flow Kotlin, dan asFlux() melakukan sebaliknya. Kalian bisa menulis pipeline reactive dengan idioma Kotlin sambil tetap memakai Reactor di lapisan bawah.

Spring dan Android Jetpack

Kotlin adalah warga kelas satu di Spring — sejak Spring 5, seluruh framework mendukung Kotlin dengan DSL khusus dan API yang mengutamakan konstruktor. Di Android Jetpack, komponen seperti ViewModel, Room, dan Navigation mendukung Kotlin penuh, dengan KSP untuk code generation (episode 16). Kedua ekosistem ini memakai idioma Kotlin modern seperti data class dan coroutines.

Kotlin Scripting dan Aplikasi CLI

Script dengan .kts

Kotlin bisa ditulis sebagai script .kts untuk otomasi tanpa project penuh:

Menjalankan script Kotlin
kotlin -script skrip.kts

Script .kts bisa berisi dependensi dari Maven dengan anotasi @file:DependsOn dan langsung dijalankan. Ini membuat Kotlin praktis untuk task admin, generator, dan prototipe cepat.

Membangun CLI

Untuk CLI yang serius, library Clikt dan kotlinx-cli membantu parsing argumen:

KotlinCLI dengan kotlinx-cli
import kotlinx.cli.*
 
fun main(args: Array<String>) {
    val parser = ArgParser("alat")
    val nama by parser.option(ArgType.String, "nama", "Nama pengguna")
    parser.parse(args)
    println("Halo, $nama")
}

ArgParser mendeklarasikan opsi dengan cara yang declaratif, dan parser.parse(args) menangani input. CLI Kotlin menghasilkan binary JVM yang mudah didistribusikan atau dibungkus Docker.

Berkontribusi ke Ekosistem Open-source

Jalur Kontribusi

Ekosistem Kotlin tumbuh lewat kontribusi. Beberapa titik masuk yang ramah pemula:

  • Perbaiki bug dan dokumen di library kotlinx di GitHub.
  • Tulis library kecil yang mengisi celah yang kalian temui di project.
  • Terjemahkan dokumentasi dan tulis tutorial teknis.
  • Laporkan issue yang jelas dan reprodusibel.

Langkah Pertama Kontribusi

Fork dan buat perubahan
git clone https://github.com/JetBrains/kotlinx.coroutines.git
git checkout -b fix-dokumentasi
git add .
git commit -m "docs: perbaiki contoh pemakaian Flow"

Perintah git clone, git checkout -b, dan git commit di atas adalah alur kerja kontribusi standar. Mulai dari perubahan kecil yang terdokumentasi baik — konsistensi dan kesopanan dalam review dihargai sama tingginya dengan kode besar.

Penutup

Episode 18 menjelajahi ekosistem Kotlin: keluarga kotlinx yang resmi, library functional Arrow, integrasi dengan Reactor dan Spring, scripting untuk CLI, serta jalur berkontribusi ke open source.

Inti yang harus dibawa pulang:

  • kotlinx.coroutines dan kotlinx.serialization adalah fondasi library resmi.
  • Arrow menambah Option, Either, dan efek fungsional.
  • Reactor terhubung ke Flow lewat adaptor asFlow dan asFlux.
  • Spring dan Android Jetpack mendukung Kotlin sebagai warga kelas satu.
  • Script .kts dan Clikt cocok untuk otomasi dan CLI.
  • Kontribusi open source dimulai dari fork, branch, dan PR kecil.

Di episode 19 selanjutnya kita akan membahas operational readiness dan runbooks — runbook operasional untuk aplikasi Kotlin, monitoring logging dan error handling, deployment dengan containerization dan CI/CD, serta release management dan rollback yang aman.