Penyiapan

Memasang Coursier, JDK 21, dan Scala CLI 1.18 sebagai fondasi toolchain Scala.

Daftar isi

Toolchain Scala, yaitu rangkaian alat kerja, tersusun dari tiga bagian: JDK untuk menjalankan program, compiler Scala untuk mengubah kode sumber menjadi bytecode, dan Scala CLI sebagai titik masuk tunggal untuk seluruh perintah sehari-hari. Topik ini membahas pemasangan ketiganya melalui Coursier, pemeriksaan versi alat yang terpasang, dan program pertama sebagai uji akhir. Lingkungan kerja jalur ini sudah memuat seluruh toolchain, sehingga blok pemasangan hanya dijalankan pada mesin yang belum memiliki toolchain.

Tiga bagian toolchain Scala#

JDK (Java Development Kit) adalah paket yang memuat JVM beserta peralatan dasarnya, dan menjadi tempat seluruh program Scala berjalan. Compiler Scala mengubah berkas .scala menjadi bytecode yang dijalankan JVM. Scala CLI adalah program baris perintah yang menggabungkan pekerjaan sehari-hari ke dalam satu alat: scala-cli run untuk menjalankan, scala-cli compile untuk mengompilasi, scala-cli test untuk menguji, scala-cli fmt untuk memformat, dan scala-cli repl untuk membuka konsol eksperimen. Perintah-perintah itu menangani versi bahasa, dependensi, hingga pemilihan JVM, sehingga contoh-contoh kecil tidak memerlukan berkas konfigurasi apa pun.

Ketiga bagian tersebut dipasang oleh satu alat yang sama, yaitu Coursier. Coursier adalah pengelola dependensi dan pemasang untuk ekosistem Scala, dengan peluncur baris perintah bernama cs. Alat inilah yang mengunduh JDK dan Scala CLI saat pemasangan, lalu mengunduh pustaka yang dibutuhkan program saat kompilasi.

Memasang Coursier#

Pemasangan resmi dimulai dari satu baris pengunduhan peluncur cs, diikuti satu perintah penyiapan. Perintah berikut diambil dari dokumentasi resmi Coursier untuk Linux x86_64 dan ditulis sebagai acuan. Instalasi interaktif semacam ini tidak dijalankan di lingkungan jalur karena lingkungannya sudah terisi, sehingga kedua blok di bagian ini diberi penanda # tidak-dijalankan.

bash
# tidak-dijalankan
# mengunduh peluncur Coursier (cs) untuk Linux x86_64, sesuai dokumentasi resminya
curl -fL "https://github.com/coursier/launchers/raw/master/cs-x86_64-pc-linux.gz" | gzip -d > cs
chmod +x cs

# menyiapkan toolchain: JVM, scala-cli, dan pengaturan PATH (interaktif)
./cs setup

Perintah ./cs setup memasang JDK dan peluncur scala-cli, lalu menambahkan keduanya ke PATH shell. Jalur ini menargetkan JDK 21 sebagai versi runtime-nya. Apabila JVM 21 ingin tersedia pada tingkat sistem, Coursier menyediakan perintah pemasangannya secara terpisah.

bash
# tidak-dijalankan
# memasang JDK 21 pada tingkat sistem melalui Coursier
cs java install 21

Dokumentasi Coursier memuat varian perintah pengunduhan untuk macOS dan Windows, sehingga baris unduhannya disesuaikan dengan sistem operasi yang digunakan. Perintah cs java install menerima nomor versi lain dengan bentuk yang sama.

Memeriksa hasil pemasangan#

Langkah pertama setelah pemasangan, atau langkah pembuka pada lingkungan yang sudah terisi, adalah pemeriksaan versi alat yang terpasang.

bash
scala-cli version
text Keluaran
Scala CLI version: 1.18.0
Scala version (default): 3.9.0

Baris pertama menyatakan versi Scala CLI, sedangkan baris kedua menyatakan versi bahasa yang digunakan apabila berkas sumber tidak menyebutkan versi lain. Dua angka ini menjadi acuan bagi seluruh contoh di jalur ini, yaitu Scala CLI 1.18 dan Scala 3.9.0. Apabila perintah yang sama pada mesin lain menghasilkan versi yang lebih baru, sebagian besar contoh tetap berjalan karena seluruh materi menggunakan fitur Scala 3 yang telah stabil sejak lama.

Pemeriksaan ini sekaligus menguji PATH. Apabila terminal menampilkan pesan bahwa perintah scala-cli tidak ditemukan, peluncurnya belum berada di PATH, sehingga langkah ./cs setup perlu diulang atau sesi terminal perlu dimulai ulang.

Program pertama#

Berkas Scala pertama memuat satu fungsi yang ditandai @main. Penanda ini memerintahkan compiler menjadikan fungsi tersebut titik masuk program, sehingga tidak diperlukan kelas pembungkus sebagaimana pada program Java.

scala halo.scala
@main def halo(): Unit =
  println("Halo, Scala!")

Program dijalankan dengan satu perintah.

bash
scala-cli run halo.scala
text Keluaran
Halo, Scala!

Satu perintah scala-cli run menangani seluruh siklus kecil ini. Scala CLI membaca berkasnya, menyiapkan compiler, mengompilasi, lalu menjalankan hasil kompilasinya. Pada pemanggilan pertama, baris kompilasi singkat muncul sebelum teks keluarannya, sedangkan pemanggilan berikutnya menggunakan hasil kompilasi yang tersimpan, sehingga keluarannya langsung muncul. Tanda tangan fungsi halo juga menyatakan tipe kembaliannya, yaitu Unit, tipe yang menandakan bahwa fungsi berjalan karena efeknya dan tidak mengembalikan nilai.

JVM yang dikelola Scala CLI#

Scala CLI mengelola JVM yang dibutuhkannya sendiri. Apabila JVM yang sesuai tidak ditemukan, Scala CLI mengunduh JVM Temurin, distribusi OpenJDK yang dipelihara Eclipse Foundation, dan menggunakannya untuk menjalankan program. Pemasangan JDK manual bukan prasyarat untuk mengikuti contoh-contoh di jalur ini, dan perintah cs java install pada bagian sebelumnya hanya diperlukan apabila JVM ingin tersedia untuk aplikasi lain di luar Scala CLI.

Versi JVM yang digunakan juga dapat dipilih per perintah tanpa mengubah instalasi sistem. Opsi --jvm menerima nomor versi, dan perintah berikut menjalankan berkas yang sama pada JVM 21.

bash
scala-cli run --jvm 21 halo.scala
text Keluaran
Halo, Scala!

Keluarannya identik karena programnya sama, sedangkan yang berbeda adalah JVM yang menjalankannya. Cara ini menyelesaikan dua kebutuhan sekaligus. Contoh yang menuntut versi JVM tertentu dapat berjalan tanpa mengganti JDK seluruh sistem, dan percobaan lintas versi JVM tidak mengganggu lingkungan yang sudah terpasang.

Kesalahan umum#

Menjalankan scala-cli run dari direktori yang salah. Scala CLI mencari berkas sumber relatif terhadap direktori kerja saat itu. Apabila perintah dijalankan dari direktori lain, compiler melaporkan bahwa berkas halo.scala tidak ditemukan. Perbaikannya adalah masuk terlebih dahulu ke direktori berkasnya dengan cd, lalu mengulang perintahnya.

Menganggap pemanggilan pertama sebagai program yang lambat. Pemanggilan scala-cli run pertama memuat compiler dan mengompilasi berkas, sehingga memerlukan beberapa detik sebelum keluaran muncul. Lambatnya terletak pada proses kompilasi, bukan pada programnya. Pemanggilan berikutnya menggunakan hasil kompilasi yang tersimpan, sehingga jauh lebih cepat.

Ringkasan#

  • Toolchain Scala terdiri atas JDK, compiler Scala, dan Scala CLI, yang semuanya dipasang melalui Coursier dengan perintah cs setup.
  • Scala CLI menjadi titik masuk tunggal untuk menjalankan, mengompilasi, menguji, memformat, dan membuka konsol Scala.
  • Perintah scala-cli version menampilkan versi alat dan versi bahasa default, yaitu 1.18.0 dan 3.9.0 pada lingkungan jalur ini.
  • Scala CLI mengelola JVM yang dibutuhkannya sendiri, dan opsi --jvm memilih versi JVM per perintah tanpa mengubah instalasi sistem.

Referensi#