Bab 1: Memulai Pengembangan Android dengan Kotlin
Kotlin adalah bahasa pemrograman statis (static programming language) yang memungkinkan kamu menulis kode yang ringkas dan aman. Bahasa ini merupakan bahasa yang direkomendasikan oleh Google untuk pengembangan Android.
Dalam bab ini, kamu akan mengenal Kotlin sebagai sebuah bahasa pemrograman. Kita juga akan membahas fitur-fitur Kotlin yang berguna untuk pengembangan Android serta pentingnya fitur-fitur tersebut bagi Android developer. Selain itu, dibahas juga cara melakukan migrasi dari Java ke Kotlin, beserta beberapa tips yang bermanfaat bagi developer yang berasal dari latar belakang Java.
Dalam bab ini, kita akan membahas topik-topik utama berikut:
- Pengantar Kotlin
- Sintaks Kotlin, tipe data, fungsi, dan class
- Migrasi dari Java ke Kotlin
- Fitur-fitur Kotlin untuk Android developer
Persyaratan Teknis
Untuk mengikuti instruksi dalam bab ini, kamu perlu menyiapkan hal-hal berikut:
- IntelliJ IDEA Community Edition (https://www.jetbrains.com/idea/download/)
- OpenJDK 11 atau versi yang lebih baru (https://openjdk.java.net/install/)
Kamu dapat menemukan kode untuk bab ini di https://github.com/PacktPublishing/Mastering-Kotlin-for-Android/tree/main/chapterone
Pengantar Kotlin
Kotlin adalah bahasa pemrograman yang berjalan di atas Java Virtual Machine (JVM) dan dikembangkan oleh JetBrains. Bahasa ini dikembangkan untuk mengatasi beberapa tantangan yang dimiliki Java, di antaranya sebagai berikut:
-
Verbosity: Java memiliki sintaks yang sangat verbose, artinya developer harus menulis banyak kode boilerplate bahkan untuk tugas-tugas yang sederhana.
-
Null pointer exceptions: Secara default, Java mengizinkan variabel memiliki nilai
null. Hal ini sering kali berujung pada null pointer exception, yang bahkan disebut sebagai billion-dollar mistake dalam Java karena banyak aplikasi terdampak oleh masalah ini. -
Concurrency: Java menyediakan mekanisme thread, tetapi pengelolaan concurrency dan thread safety sering kali menjadi tugas yang sulit. Kondisi ini dapat menimbulkan berbagai masalah performa dan memori, terutama pada aplikasi yang perlu menjalankan proses di luar main thread.
-
Adopsi fitur yang lambat: Siklus rilis Java tergolong lambat, dan penggunaan versi Java terbaru untuk pengembangan aplikasi Android tidaklah mudah karena harus memastikan kompatibilitas ke belakang. Akibatnya, Android developer kesulitan untuk dengan cepat mengadopsi fitur dan peningkatan bahasa terbaru karena masih terikat pada versi Java yang lebih lama.
-
Kurangnya dukungan pemrograman fungsional: Java bukanlah bahasa fungsional, sehingga developer kesulitan untuk menulis kode dengan paradigma fungsional. Fitur-fitur seperti higher-order functions atau memperlakukan fungsi sebagai first-class citizen sulit diterapkan di Java.
Seiring berjalannya waktu, Kotlin berkembang menjadi bahasa yang mendukung multiplatform dan server-side, serta digunakan pula dalam bidang data science. Beberapa fitur yang membuat Kotlin memiliki keunggulan dibandingkan Java diantaranya:
-
Conciseness: Sintaks Kotlin ringkas, sehingga mengurangi jumlah kode boilerplate yang perlu kamu tulis.
-
Null safety: Banyak developer Java sangat familiar dengan Null Pointer Exception yang menjadi sumber berbagai bug dan masalah pada aplikasi. Kotlin dirancang dengan konsep null safety sebagai fokus utama. Variabel yang dapat memiliki nilai
nullditandai secara eksplisit saat deklarasi, dan sebelum variabel tersebut digunakan, compiler Kotlin akan memaksa adanya pengecekan nullability. Dengan demikian, jumlah exception dan cra*sh dapat dikurangi secara signifikan. -
Dukungan coroutines: Kotlin memiliki dukungan bawaan untuk Kotlin coroutines. Coroutines merupakan lightweight threads yang dapat digunakan untuk menjalankan operasi asynchronous. Konsep ini relatif mudah dipahami dan diterapkan dalam aplikasi.
-
Data classes: Kotlin menyediakan konstruksi data class bawaan yang memudahkan pembuatan class terutama yang digunakan untuk menyimpan data. Data class secara otomatis menghasilkan method
equals(),hashCode(), dantoString(), sehingga mengurangi kebutuhan penulisan kode boilerplate. -
Extension functions: Kotlin memungkinkan developer menambahkan fungsi ke class yang sudah ada tanpa perlu mewarisinya melalui extension functions. Hal ini memudahkan penambahan fungsionalitas pada class yang ada dan mengurangi kebutuhan kode boilerplate.
-
Smart casting: Sistem smart casting pada Kotlin memungkinkan kamu melakukan casting variabel tanpa perlu menuliskannya secara eksplisit. Compiler akan secara otomatis mendeteksi kapan sebuah variabel aman untuk di-cast dan melakukan casting tersebut secara otomatis.
JetBrains juga merupakan perusahaan di balik IntelliJ IDEA. Dukungan bahasa di Integrated Development Environment (IDE) ini juga sangat baik, sehingga memberikan pengalaman pengembangan yang nyaman saat menulis kode Kotlin.
Seiring waktu, Kotlin terus berkembang dan kini mendukung berbagai platform berikut:
-
Kotlin Multiplatform: Digunakan untuk mengembangkan aplikasi yang menargetkan berbagai platform, seperti Android, iOS, dan aplikasi web.
-
Kotlin untuk server-side: Digunakan untuk menulis aplikasi backend, dengan berbagai framework yang mendukung pengembangan server-side.
-
Kotlin untuk Android: Google telah mendukung Kotlin sebagai bahasa kelas satu (first-class language) untuk pengembangan Android sejak tahun 2017.
-
Kotlin untuk JavaScript: Menyediakan dukungan untuk menulis kode Kotlin yang ditranspilasi menjadi library JavaScript yang kompatibel.
-
Kotlin/Native: Mengompilasi kode Kotlin menjadi binary native dan dapat dijalankan tanpa Java Virtual Machine (JVM).
-
Kotlin untuk data science: Kotlin dapat digunakan untuk membangun dan mengeksplorasi pipeline data.
Sebagai rangkuman, Kotlin menawarkan pendekatan pemrograman yang lebih modern dan ringkas dibandingkan Java, sambil tetap mempertahankan interoperabilitas dengan library dan kode Java yang sudah ada. Selain itu, kamu dapat menulis kode Kotlin dan menargetkan berbagai platform.
Setelah memahami gambaran umum Kotlin dan berbagai fiturnya, kita akan melanjutkan ke bagian berikutnya untuk mempelajari Kotlin sebagai bahasa pemrograman, termasuk sintaks, tipe data, fungsi, dan class.
Sintaks, Tipe Data, Fungsi, dan Class Kotlin
Pada bagian ini, kita akan membahas sintaks Kotlin dan mulai mengenal bahasa ini lebih dalam. Kotlin merupakan bahasa pemrograman yang strongly typed, di mana tipe data sebuah variabel ditentukan pada saat proses kompilasi. Kotlin memiliki sistem tipe data yang kaya, yang mencakup beberapa jenis tipe sebagai berikut:
-
Nullable types: Setiap tipe di Kotlin dapat bersifat nullable atau non-nullable. Nullable type ditandai dengan operator tanda tanya (
?), misalnyaString?. Sementara itu, non-nullable type merupakan tipe normal tanpa operator apa pun di akhir, misalnyaString. -
Basic types: Tipe-tipe data dasar ini mirip dengan yang ada di Java. Contohnya antara lain
Int,Long,Boolean,Double, danChar. -
Class types: Karena Kotlin merupakan bahasa pemrograman berorientasi objek, Kotlin mendukung penggunaan class, sealed class, interface, dan sebagainya. Kamu dapat mendefinisikan sebuah class menggunakan keyword
class, lalu menambahkan method, properti, dan constructor di dalamnya. -
Arrays: Kotlin mendukung array untuk tipe primitif maupun objek. Untuk mendeklarasikan array primitif, kamu menentukan tipe dan ukurannya, seperti pada contoh berikut:
val shortArray = ShortArray(10)Berikut adalah contoh pendefinisian array objek:
val recipes = arrayOf("Chicken Soup", "Beef Stew", "Tuna
Casserole")Kotlin akan secara otomatis melakukan type inference ketika kamu tidak menentukan tipe secara eksplisit.
-
Collections: Kotlin menyediakan API collection yang lengkap seperti set, map, dan list. Collection ini dirancang agar ringkas dan ekspresif, serta menawarkan berbagai operasi seperti sorting, filtering, mapping, dan masih banyak lagi.
-
Enum types: Enum digunakan untuk mendefinisikan pilihan-pilihan yang tetap dan didefinisikan sejak awal. Kotlin menyediakan keyword
Enumuntuk mendeklarasikannya. -
Functional types: Kotlin juga merupakan bahasa fungsional, yang berarti fungsi diperlakukan sebagai first-class citizen. Kamu dapat menyimpan fungsi ke dalam variabel, mengembalikan fungsi sebagai nilai dari fungsi lain, serta mengirimkan fungsi sebagai argumen ke fungsi lain. Untuk mendefinisikan fungsi sebagai sebuah tipe, kamu dapat menggunakan notasi singkat
(Boolean) -> Unit. Contoh ini menerima sebuah argumen bertipeBooleandan mengembalikan nilaiUnit.
Kita telah mempelajari berbagai tipe yang tersedia di Kotlin. Pengetahuan ini akan digunakan pada bagian berikutnya untuk mendefinisikan beberapa tipe tersebut secara lebih praktis.
Membuat Program Kotlin
Ikuti langkah-langkah berikut ini untuk membuat program Kotlin pertamamu:
-
Buka IntelliJ IDEA. Di halaman welcome, klik New Project. Kamu akan diberikan dialog untuk membuat program baru seperti ditampilkan pada gambar di bawah ini:

Mari kita tentukan opsi-opsi yang diberikan dialog tersebut satu per satu:
- Kita mulai dengan memberikan program ini sebuah nama. Dalam contoh di atas namanya
chapterone. - Kita juga tentukan lokasi penyimpanannya. Ubah folder ke tempat yang diinginkan atau tetap gunakan lokasi bawaan.
- Selanjutnya tentukan bahasa yang diinginkan. Dalam contoh ini kita tentu pilih Kotlin.
- Pada tahap berikutnya adalah memilih build system. Kita pilih Gradle di sini.
- Kita juga perlu menentukan versi Java yang akan kita pakai. Kita pilih Java 11.
- Selanjutnya, tentukan Gradle DSL yang akan dipakai. Untuk program ini kita pilih Kotlin.
- Terakhir, tentukan GroupId dan ArtifactId yang ketika dikombinasikan menjadi satu identitas yang unik bagi setiap program yang kita buat.
- Kita mulai dengan memberikan program ini sebuah nama. Dalam contoh di atas namanya
-
Klik tombol Create untuk memulai program baru. IDE akan memulai proses pembuatannya yang mungkin memakan waktu beberapa menit. Setelah selesai, tampilannya kurang lebih seperti ini:

IDE akan membuatkan sebuah struktur seperti yang bisa kamu lihat di gambar. Untuk saat ini kita akan bekerja mayoritas di package
src/main/kotlin, tempat semua file Kotlin akan kita simpan. -
Mulai dengan klik kanan pada package
src/main/kotlin. -
Pilih New lalu New Kotlin Class/File. Pilih opsi File dari daftar yang muncul dan ketikkan
Mainsebagai nama file-nya. IDE kemudian akan membuatkan fileMain.kt.
Sekarang setelah kita berhasil memulai sebuah program Kotlin baru dan menambahkan sebuah file Kotlin, di tahapan berikutnya kita akan mulai membuat sebuah fungsi baru.
Membuat Fungsi di Kotlin
Dalam Kotlin, sebuah fungsi merupakan sekumpulan kode yang menjalankan tugas tertentu. Untuk mendefinisikan fungsi, kita menggunakan keyword fun. Nama fungsi sebaiknya ditulis dalam format camel case dan bersifat deskriptif agar menunjukkan dengan jelas apa yang dilakukan oleh fungsi tersebut. Fungsi dapat menerima argumen dan mengembalikan nilai.
Buat fungsi main() di dalam file Main.kt kamu sebagai berikut:
fun main() {
println("Hello World!")
}
Pada kode tadi, kita menggunakan keyword fun untuk mendefinisikan sebuah fungsi dengan nama main. Di dalam fungsi tersebut, terdapat perintah println yang mencetak pesan "Hello Word!".
Kamu dapat menjalankan fungsi tersebut dengan menekan ikon Run berwarna hijau di sebelah kanan fungsi. Setelah itu, jendela console akan muncul dan menampilkan pesan "Hello World!".
Kita telah mempelajari cara membuat fungsi dan menampilkan output ke console. Pada bagian berikutnya, kita akan mempelajari cara membuat class di Kotlin.
Membuat Class
Untuk membuat sebuah class di Kotlin kita lakukan dengan kata kunci class. Buatlah sebuah class Recipe seperti ini:
class Recipe {
private val ingredients = mutableListOf<String>()
fun addIngredient(name: String) {
ingredients.add(name)
}
fun getIngredients(): List<String> {
return ingredients
}
}
Mari kita uraikan class tersebut:
-
Kita menamai class tersebut dengan
Recipedan class ini tidak memiliki constructor. -
Di dalam class, terdapat sebuah variabel (member variable) bernama
ingredients, yang merupakan sebuahMutableListberisiString. Variabel ini bersifat mutable agar kita dapat menambahkan item ke dalam list. Pendefinisian variabel seperti ini di dalam class memungkinkan kita mengakses variabel tersebut dari mana saja di dalam class. -
Terdapat fungsi
addIngredient(name: String)yang menerima sebuah parametername. -
Di dalam fungsi tersebut, kita menambahkan argumen yang diterima ke dalam list
ingredients. -
Terakhir, terdapat fungsi
getIngredients()yang mengembalikan sebuah list string yang bersifat immutable. Fungsi ini hanya mengembalikan nilai dari listingredients.
Agar dapat menggunakan class tersebut, kita perlu memodifikasi fungsi main sebagai berikut:
fun main() {
val recipe = Recipe()
recipe.addIngredient("Rice")
recipe.addIngredient("Chicken")
println(recipe.getIngredients())
}
Perubahan yang dilakukan dapat dijelaskan sebagai berikut:
-
Pertama, kita membuat sebuah instance baru dari class
Recipedan menyimpannya ke dalam variabelrecipe. -
Kemudian, kita memanggil method
addIngredientpada variabelrecipedan mengirimkan string Rice sebagai argumen. -
Selanjutnya, kita kembali memanggil method
addIngredientpada variabelrecipedan mengirimkan string Chicken. -
Terakhir, kita memanggil method
getIngredientspada variabelrecipedan mencetak hasilnya ke console.
Jalankan kembali fungsi main, dan output yang dihasilkan seharusnya sebagai berikut:

Seperti yang dapat kamu lihat pada screenshot sebelumnya, output yang dihasilkan berupa daftar bahan yang telah kamu tambahkan. Sekarang kamu bisa menyiapkan hidangan nasi dan ayam yang lezat—tentu saja, dengan Kotlin!
Kotlin memiliki sangat banyak fitur, dan kita baru menyentuh sebagian kecil saja. Kamu juga dapat mengunjungi dokumentasi resmi Kotlin di https://kotlinlang.org/docs/home.html untuk mempelajari lebih lanjut. Seiring kamu mendalami buku ini, kamu akan menemukan lebih banyak fitur Kotlin lainnya.
Pada bagian ini, kita telah mempelajari cara membuat class, mendefinisikan variabel, dan menambahkan fungsi ke dalam class. Hal ini membantu kita memahami bagaimana class bekerja di Kotlin. Pada bagian selanjutnya, kita akan mempelajari cara memigrasikan class Java ke Kotlin serta berbagai tools yang tersedia untuk membantu proses migrasi tersebut.
Migrasi dari Java ke Kotlin
Apakah kamu seorang Java developer dan memiliki aplikasi yang ditulis menggunakan Java? Apakah kamu bertanya-tanya bagaimana cara memulai dengan Kotlin? Tenang saja, bagian ini dibuat untuk kamu. Kotlin menawarkan dua pendekatan berikut:
-
Migrasi Java ke Kotlin: IDE yang kita gunakan, IntelliJ IDEA, menyediakan program kecil untuk mengubah file Java yang sudah ada menjadi Kotlin.
-
Interoperabilitas: Kotlin memiliki interoperabilitas yang sangat baik dengan Java, yang berarti kamu dapat menggunakan kode Java dan Kotlin secara bersamaan dalam satu project. Kamu juga tetap bisa menggunakan library Java favoritmu di dalam project Kotlin.
Mari kita lihat bagaimana cara memigrasikan sebuah contoh class Java ke Kotlin menggunakan IntelliJ IDEA:
- Di dalam direktori
src/main/kotlin, buka class Song, yang berisi sejumlah fungsi Java (download file contoh terlebih dahulu). - Klik kanan pada file tersebut, lalu kamu akan melihat opsi Convert Java to Kotlin di bagian bawah. Pilih opsi ini, dan kamu akan disajikan dengan dialog konfirmasi seperti berikut:

Terkadang setelah proses konversi, kamu mungkin perlu melakukan beberapa penyesuaian. Itulah alasan mengapa dialog konfirmasi ini disediakan. Klik Yes untuk melanjutkan, dan kamu akan melihat bahwa kode kamu kini telah berubah menjadi Kotlin. Fitur ini sangat membantu karena menangani sebagian besar proses konversi ke Kotlin sekaligus membantu kamu memahami sintaks Kotlin.
Setelah mempelajari cara memigrasikan kode Java ke Kotlin, pada bagian berikutnya kita akan membahas beberapa fitur Kotlin yang menjadikannya sangat berguna bagi Android developer.
Fitur Kotlin untuk Developer Android
Setelah kamu mendapatkan pengenalan tentang Kotlin, sekarang mari kita lihat mengapa Kotlin menjadi bahasa yang sangat tepat, khususnya untuk pengembangan Android.
Google mengumumkan Kotlin sebagai bahasa kelas satu (first-class language) untuk menulis aplikasi Android sejak tahun 2017. Sejak saat itu, banyak upaya dilakukan untuk memastikan para developer memiliki semua yang dibutuhkan untuk mengembangkan aplikasi Android menggunakan Kotlin. Berikut adalah beberapa fitur yang dapat dimanfaatkan oleh Android developer:
-
Peningkatan produktivitas developer: Sintaks Kotlin yang ringkas dan ekspresif membantu developer menulis kode lebih cepat dan dengan lebih sedikit kesalahan, sehingga pada akhirnya meningkatkan produktivitas.
-
Null safety: Karena Kotlin dirancang dengan konsep nullability sejak awal, bahasa ini membantu menghindari crash yang berkaitan dengan Null Pointer Exception.
-
Dukungan IDE: Dukungan IDE terus mengalami peningkatan. Android Studio, yang dibangun di atas IntelliJ IDEA, telah menerima banyak fitur seperti peningkatan dukungan autocompletion untuk memberikan pengalaman pengembangan Kotlin yang lebih baik.
-
Jetpack libraries: Jetpack libraries tersedia dalam Kotlin, dan library yang lebih lama secara bertahap ditulis ulang menggunakan Kotlin. Jetpack merupakan kumpulan library dan tools yang membantu Android developer menulis lebih sedikit kode, mengatasi masalah umum yang sering dihadapi developer, serta meningkatkan efisiensi pengembangan.
-
Jetpack Compose: Jetpack Compose, framework UI baru, sepenuhnya ditulis menggunakan Kotlin dan memanfaatkan berbagai fitur bahasa Kotlin. Ini merupakan framework UI deklaratif yang memudahkan Android developer membangun antarmuka pengguna yang menarik untuk aplikasinya.
-
Kotlin Gradle DSL: Kamu kini dapat menulis file Gradle menggunakan Kotlin.
-
Dukungan coroutines: Banyak Jetpack Libraries yang mendukung coroutines. Sebagai contoh, class
ViewModelmenyediakanviewModelScopeyang dapat digunakan untuk membuat coroutine menyesuaikan dengan lifecycle ViewModel. Hal ini sejalan dengan prinsip Structured Concurrency pada coroutines, yang membantu membatalkan seluruh coroutine ketika sudah tidak dibutuhkan. Beberapa library seperti Room, Paging 3, dan DataStore juga mendukung Kotlin coroutines. -
Dukungan dari Google: Google terus berinvestasi pada Kotlin. Saat ini tersedia berbagai sumber belajar, mulai dari artikel, code lab, dokumentasi, video, hingga tutorial dari tim Android DevRel Google untuk membantu kamu mempelajari library dan arsitektur terbaru dalam pengembangan Android.
-
Komunitas dan tooling yang aktif: Kotlin memiliki komunitas developer yang besar dan aktif. Hal ini berarti tersedia banyak resource tidak resmi, library, serta tools yang dapat membantu proses pengembangan aplikasi Android.
Ringkasan
Pada bab ini, kita telah mempelajari bahasa pemrograman Kotlin beserta fitur-fiturnya. Kita juga mengeksplorasi fitur-fitur Kotlin yang berguna untuk pengembangan Android dan alasan mengapa Kotlin penting bagi Android developer. Selain itu, dibahas pula cara melakukan migrasi dari Java ke Kotlin serta beberapa tips yang bermanfaat bagi developer yang berasal dari latar belakang Java.
Pada bab berikutnya, kita akan mempelajari cara membuat aplikasi Android menggunakan Android Studio. Kita juga akan mengeksplorasi berbagai fitur yang ditawarkan Android Studio, serta mempelajari beberapa tips dan shortcut yang dapat membantu proses pengembangan.