REPL memungkinkan kita mengevaluasi kode baris demi baris tanpa harus menyimpan file dan mengompilasi ulang setiap kali ada perubahan. JDK sendiri menyertakan JShell sejak versi 9, dan Kotlin menyertakan REPL bawaan ketika kita memanggil kotlinc tanpa argumen. Pada chapter ini kita akan memakai kedua REPL tersebut, mendefinisikan function multi-baris, lalu membandingkan kapan memakai JShell dan kapan memakai REPL Kotlin.
Apa itu JShell #
JShell adalah REPL resmi untuk Java, didistribusikan sebagai bagian dari JDK sejak versi 9. JShell membaca cuplikan kode Java, mengevaluasinya, dan menyimpan state di antara cuplikan. Berbeda dengan program Java biasa yang wajib membungkus kode dalam class dan public static void main, JShell menerima statement lepas.
Untuk masuk ke JShell, jalankan perintah berikut di terminal.
jshellSesi JShell umumnya terlihat seperti berikut:
| Welcome to JShell -- Version 21
| For an introduction type: /help intro
jshell> int tahun = 2026
tahun ==> 2026
jshell> System.out.println("Tahun belajar: " + tahun)
Tahun belajar: 2026
jshell> /exitPerintah /exit mengakhiri sesi JShell. Berbeda dengan REPL Kotlin yang memakai :quit, JShell memakai tanda garis miring untuk perintah meta.
Apa itu REPL Kotlin #
REPL Kotlin dipanggil dengan menjalankan kotlinc tanpa argumen. Berbeda dari JShell yang menerima sintaks Java, REPL Kotlin menerima sintaks Kotlin penuh: function level tinggi, lambda, extension function, dan coroutines.
kotlincMendefinisikan Function Multi-baris #
Salah satu kegunaan paling sering dari REPL adalah mendefinisikan function untuk diuji secara cepat. Kita dapat mengetik function multi-baris dengan menekan Enter setelah kurung kurawal pembuka; REPL akan menunggu baris-baris berikutnya sampai kurung kurawal penutup diketik.
>>> fun sapa(nama: String) {
... val waktu = "pagi"
... println("Selamat $waktu, $nama")
... }
>>> sapa("Budi")
Selamat pagi, BudiTanda ... di awal baris menandakan REPL masih menunggu kelengkapan blok. Kita bebas menambahkan baris sampai kurung kurawal penutup.
Keluar dari REPL #
REPL Kotlin mengakhiri sesi dengan perintah :quit atau singkatnya :q. Sebelum keluar, REPL tidak menyimpan state; cuplikan yang sudah diketik akan hilang setelah sesi berakhir.
>>> :quitProgram Simulasi Sesi REPL #
Karena output sesi REPL tergantung input yang diketik, mari kita simulasikan sebuah sesi lengkap dengan program Kotlin biasa. Program ini mencetak baris-baris yang akan muncul jika kita mengetik cuplikan tertentu di REPL.
fun main() {
println("== Sesi REPL Kotlin ==")
println("ketik: val nama = \"Budi\"")
println("ketik: println(\"Halo, \$nama\")")
println()
println("Halo, Budi")
println()
println("ketik: :quit")
println("Sesi REPL selesai")
}Output yang Dihasilkan:
== Sesi REPL Kotlin ==
ketik: val nama = "Budi"
ketik: println("Halo, $nama")
Halo, Budi
ketik: :quit
Sesi REPL selesaiMari kita bedah beberapa bagian kode di atas:
println("ketik: val nama = \"Budi\""): tanda\"di dalam string literal adalah escape sequence untuk tanda kutip ganda. Tanpa escape, tanda kutip akan menutup string terlalu cepat.println("ketik: println(\"Halo, \$nama\")"): tanda\$di dalam string adalah escape sequence untuk tanda dolar. Tanpa escape, Kotlin akan mencoba menafsirkan$namasebagai string template yang merujuk ke variabelnama.println(): memanggilprintlntanpa argumen mencetak baris kosong untuk memberi jarak visual pada output sesi.
Perbandingan JShell vs REPL Kotlin #
Kedua REPL memang mirip secara konsep, tetapi ada perbedaan praktis yang memengaruhi pilihan kita sehari-hari.
| Aspek | JShell | REPL Kotlin |
|---|---|---|
| Bahasa | Java (sejak JDK 9) | Kotlin |
| Perintah meta | /exit, /help, /list | :quit, :help, :type |
| Definisi class | Wajib class wrapper | Tidak perlu class |
| String template | Tidak ada (Java klasik) | Ada ($nama, ${expr}) |
| State sesi | Tidak persisten | Tidak persisten |
| Cocok untuk | Menguji API Java murni | Eksperimen sintaks Kotlin |
Kapan Memilih Mana #
Pilih JShell ketika kita ingin menguji perilaku method java.time, java.util.stream, atau library Java yang baru saja kita pelajari tanpa harus memikirkan sintaks Kotlin. Pilih REPL Kotlin ketika kita ingin mengeksplorasi fitur Kotlin seperti lambda, scope function, atau extension function yang tidak ada padanannya di Java.
# Mulai JShell untuk uji Java
jshell
# Mulai REPL Kotlin untuk uji Kotlin
kotlincReferensi Resmi #
Dokumentasi resmi untuk REPL Kotlin dan JShell tersedia di:
Referensi Lanjutan #
- Kotlin command-line compiler — rujukan kompilator CLI yang menyediakan mode REPL interaktif
- Get started with Kotlin — panduan memulai Kotlin untuk eksplorasi sintaks melalui REPL
Selanjutnya #
REPL sangat berguna untuk eksperimen cepat, tetapi untuk menulis program nyata kita memerlukan editor yang lebih lengkap dengan navigasi kode, refactoring, dan debugger. Pada chapter berikutnya, Konfigurasi IntelliJ IDEA, kita akan memasang IDE resmi dari JetBrains yang menjadi standar industri untuk pengembangan Kotlin.