Apa Itu Kotlin Multiplatform (KMP)?
Kotlin Multiplatform (KMP) adalah teknologi dari JetBrains yang memungkinkan sharing kode Kotlin antara berbagai platform: Android, iOS, Web, Desktop, dan Server. Berbeda dengan Flutter atau React Native yang fokus pada UI, KMP fokus pada sharing business logic sementara UI tetap native.
Mengapa KMP?
- Share Business Logic – Satu kode untuk logic, native UI
- Native Performance – Compiled to native code
- Native UI – Gunakan SwiftUI (iOS) dan Jetpack Compose (Android)
- Gradual Adoption – Bisa ditambahkan ke project existing
- Kotlin Ecosystem – Gunakan library Kotlin yang ada
- Google & JetBrains Backing – Didukung oleh Google dan JetBrains
KMP vs Flutter vs React Native
| Aspek | KMP | Flutter | React Native |
|---|---|---|---|
| UI | Native (SwiftUI/Compose) | Custom (Skia) | Native components |
| Shared Code | Business logic only | Full app (UI + logic) | Full app (UI + logic) |
| Bahasa | Kotlin | Dart | JavaScript/TypeScript |
| Performance | Native | Near-native | Near-native |
| Learning Curve | Tinggi (perlu Kotlin + Swift) | Sedang | Rendah (jika tahu React) |
| Adoption | Gradual (bisa partial) | Full rewrite | Full rewrite |
Roadmap Belajar KMP
Level 1: Beginner
- Kotlin Basics – Variabel, fungsi, class, null safety
- KMP Setup – Kotlin Multiplatform plugin, project structure
- Shared Module – commonMain, androidMain, iosMain
- Expect/Actual – Platform-specific implementations
- Basic Networking – Ktor client untuk HTTP requests
- Serialization – kotlinx.serialization
Level 2: Intermediate
- Coroutines – Async programming di KMP
- Flow – Reactive streams
- Database – SQLDelight untuk local database
- Dependency Injection – Koin untuk KMP
- State Management – Shared ViewModel
- Testing – Unit tests di shared module
Level 3: Advanced
- Compose Multiplatform – Shared UI dengan Compose
- Web Target – Kotlin/JS, Kotlin/Wasm
- Desktop Target – Compose for Desktop
- CI/CD – Build untuk semua platform
- Publishing – Maven Central, npm
Level 4: Expert
- Architecture – Clean Architecture untuk KMP
- Performance – Optimization per platform
- Native Interop – Calling Swift/ObjC, JNI
- Migration – Migrasi dari native ke KMP
Contoh Kode KMP
// shared/src/commonMain/kotlin/ApiService.kt
import io.ktor.client.*
import io.ktor.client.request.*
import io.ktor.client.statement.*
import kotlinx.serialization.*
import kotlinx.serialization.json.*
@Serializable
data class User(val id: Int, val nama: String, val email: String)
class ApiService {
private val client = HttpClient()
suspend fun getUsers(): List {
val response = client.get("https://api.example.com/users")
return Json.decodeFromString(response.bodyAsText())
}
suspend fun getUser(id: Int): User {
val response = client.get("https://api.example.com/users/$id")
return Json.decodeFromString(response.bodyAsText())
}
}
// shared/src/commonMain/kotlin/Platform.kt
expect fun getPlatformName(): String
// shared/src/androidMain/kotlin/Platform.kt
actual fun getPlatformName(): String = "Android"
// shared/src/iosMain/kotlin/Platform.kt
actual fun getPlatformName(): String = "iOS"
// shared/src/commonMain/kotlin/Greeting.kt
class Greeting {
fun greet(): String = "Hello from ${getPlatformName()}!"
}
// Android: app/src/main/kotlin/MainActivity.kt
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Text(Greeting().greet())
}
}
}
// iOS: iosApp/ContentView.swift
struct ContentView: View {
var body: some View {
Text(Greeting().greet())
}
}
Tips Belajar KMP
- Pelajari Kotlin dulu – KMP adalah Kotlin untuk multiplatform
- Pahami expect/actual – Konsep fundamental KMP
- Mulai dengan shared module – Logic saja, UI tetap native
- Pelajari Ktor – HTTP client untuk KMP
- Gunakan SQLDelight – Database untuk KMP
- Baca KMP Docs – kotlinlang.org/docs/multiplatform.html
- Ikuti KMP Codelabs – JetBrains codelabs
Tools yang Dibutuhkan
| Tool | Deskripsi |
|---|---|
| Kotlin Multiplatform Plugin | IntelliJ/Android Studio plugin |
| Android Studio | Android development |
| Xcode | iOS development (Mac only) |
| Gradle | Build system |
| Ktor | HTTP client |
| SQLDelight | Database |
Kesimpulan
Kotlin Multiplatform adalah teknologi yang menjanjikan untuk sharing code antar platform. Dengan native UI dan shared business logic, KMP menawarkan yang terbaik dari kedua dunia. Mulai dari shared module sederhana!
“Kotlin Multiplatform allows you to share code between platforms while keeping the native UI.” – JetBrains




