Kotlin Multiplatform (KMP)
KMP là gì?
Kotlin Multiplatform (KMP) là công nghệ cho phép bạn viết code một lần và chạy trên nhiều nền tảng:
- 📱 Android
- 🍎 iOS
- 🖥️ Desktop (Windows, macOS, Linux)
- 🌐 Web
- ⚙️ Backend
Điểm khác biệt với các giải pháp cross-platform khác
| KMP | Flutter | React Native | |
|---|---|---|---|
| UI | Native hoặc Compose Multiplatform | Custom (Skia) | Native bridge |
| Performance | Native | Near-native | Bridge overhead |
| Logic sharing | ✅ Business logic | UI + Logic | UI + Logic |
| Native integration | Dễ dàng | Cần channel | Cần bridge |
| Language | Kotlin | Dart | JavaScript |
| By | JetBrains | Meta |
KMP vs Compose Multiplatform
- KMP: Chia sẻ business logic (networking, database, domain…)
- Compose Multiplatform: Chia sẻ cả UI bằng Jetpack Compose
┌─────────────────────────────────────────┐
│ Compose Multiplatform │
│ (UI chung cho Android, iOS, ...) │
├─────────────────────────────────────────┤
│ Kotlin Multiplatform (KMP) │
│ (Business logic, data, domain) │
├─────────────────────────────────────────┤
│ Platform Code │
│ (Android SDK, iOS SDK, JS, JVM) │
└─────────────────────────────────────────┘Tại sao nên học KMP?
1. Giảm thời gian phát triển
- Viết business logic một lần
- Cập nhật bug fix một chỗ
- Testing tập trung
2. Sử dụng Kotlin - ngôn ngữ hiện đại
- Nếu bạn đã biết Kotlin (từ Android), chuyển sang KMP rất nhanh
- Null safety, coroutines, extension functions…
3. Được Google và JetBrains hỗ trợ
- Google dùng KMP trong các app: Google Docs, Drive, Sheets
- JetBrains phát triển tích cực với Android Studio hỗ trợ tốt
4. Native Performance
- Code Kotlin được compile thành native code cho từng platform
- Không có overhead như các giải pháp bridge
5. Dễ tích hợp vào dự án hiện có
- Có thể thêm KMP vào app Android/iOS đang có
- Không cần viết lại từ đầu
Các use cases phù hợp
✅ Phù hợp
- Chia sẻ business logic giữa Android và iOS
- Backend cùng dùng Kotlin
- App có logic phức tạp cần consistency
- Team đã biết Kotlin
⚠️ Cần cân nhắc
- App đơn giản chỉ cần một platform
- Team không biết Kotlin
- Cần native UI phức tạp đặc thù từng platform
Bắt đầu từ đâu?
Prerequisites (Kiến thức cần có)
- Ngôn ngữ Kotlin - Bạn cần biết Kotlin trước
- Android cơ bản - Nếu làm mobile
Lộ trình học
Xem Lộ trình học KMP để có hướng dẫn chi tiết.
📚 Tài liệu tham khảo
Last updated on