Ketika ngoding android apa lagi menggunakan kotlin ataupun java, kita sering sekali berhubungan dengan gradle
, lalu gradle apa sih? gradle
ini biasa disebut sebuah build tools yang tugasnya itu untuk melakukan build secara otomatis.
Untuk kita yang sudah lama ngoding aplikasi Android, apa lagi android pertama sampai sekarang perubahan dalam gradle
dan DSL
sangat pesat, apa lagi yang menjadi bahasa utama sekarang yaitu kotlin.
Dan perubahan DSL pun ada dua yaitu kotlin DSL
damn Grovy DSL
, lalu apa perbedaannya mari kita bahas.
Bahasa Dasar
Untuk ke dua DSL ini memiliki bahasa yang berbeda:
- Grovy DSL ini menggunakan bahasa Grovy, yang bersifat dinamis (dynamic typing)
- Kotlin DSL ini sesuai dengan namanya yaitu menggunakan bahasa Kotlin
Karena Groovy bersifat dinamis, penulisan skripnya fleksibel dan ringkas, namun sulit dideteksi error-nya sebelum runtime. Kotlin, dengan sifat statisnya, memungkinkan validasi saat kompilasi sehingga lebih aman dan nyaman dipakai, terutama untuk proyek besar.
Autocompletion & IDE Support
Dalam penggunaan ke dua DSL ini memiliki kekurangan dalam autocomplete dan supportnya IDE di antaranya:
- Groovy DSL:
- Dukungan autocompletion kurang optimal.
- IDE (seperti IntelliJ/Android Studio) kesulitan memberi saran tipe atau nama properti yang tersedia.
- Kotlin DSL:
- Mendukung autocompletion penuh, navigasi kode, dan refactoring yang lebih baik di IDE.
- Error akan lebih cepat diketahui saat compile time.
Ini menjadikan Kotlin DSL lebih ramah bagi developer modern yang mengandalkan produktivitas melalui IDE seperti IntelliJ atau Android Studio.
Type Safety
Untuk type safety ke dua DSL ini sangatlah beda jauh antara lain:
- Groovy DSL: Tidak type-safe karena Groovy bersifat dinamis.
- Kotlin DSL: Type-safe, karena menggunakan Kotlin sebagai host language.
Type safety sangat membantu mencegah bug tersembunyi dan membuat kode lebih mudah dipelihara.
Performa
Performa konfigurasi build juga berbeda:
- Groovy DSL: Waktu konfigurasi build biasanya lebih lambat karena pemrosesan dinamis.
- Kotlin DSL: Cenderung lebih cepat karena compile-time checking.
Dengan demikian, Kotlin DSL memberikan waktu build yang lebih cepat dalam banyak kasus.
Sintaks dan Style
- Groovy DSL: Sintaks lebih fleksibel dan ringkas, tapi kadang membingungkan karena kurang eksplisit.
- Kotlin DSL: Lebih eksplisit dan verbose, tapi lebih konsisten dan predictable, terutama untuk developer Kotlin.
Dokumentasi & Komunitas
- Groovy DSL: Telah digunakan lebih lama, dokumentasi lebih lengkap, banyak legacy projects masih menggunakannya.
- Kotlin DSL: Sedang naik daun, terutama di Android development, tapi dokumentasi belum sebanyak Groovy.
Untuk pemula, Groovy lebih mudah ditemukan jawabannya di forum lama. Namun Kotlin DSL akan semakin populer seiring adopsi Kotlin yang makin luas.
Contoh Perbandingan
Groovy DSL (build.gradle):
plugins {
id 'com.android.application'
id 'kotlin-android'
}
android {
compileSdkVersion 33
defaultConfig {
applicationId "com.example.app"
minSdkVersion 21
targetSdkVersion 33
}
}
Kotlin DSL (build.gradle.kts):
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
}
android {
compileSdk = 33
defaultConfig {
applicationId = "com.example.app"
minSdk = 21
targetSdk = 33
}
}
Kesimpulan
Aspek |
Groovy DSL |
Kotlin DSL |
Bahasa |
Groovy (dinamis) |
Kotlin (statis) |
Type Safety |
❌ |
✅ |
Autocompletion |
Terbatas |
Baik |
Performa Build |
Lebih lambat |
Lebih cepat |
Dokumentasi |
Lebih matang |
Sedang berkembang |
Kesesuaian Android Dev |
Cukup |
Sangat baik |
Kalau kita ingin develop Android dan sudah familiar dengan Kotlin, Kotlin DSL adalah pilihan yang lebih modern dan produktif. Namun, jika kita bekerja dengan proyek lama, kemungkinan besar masih menggunakan Groovy DSL.