Topik ini memandu penulisan program Java pertama sampai setiap barisnya dapat dijelaskan. Program yang dibuat menampilkan dua baris teks ke layar, lalu dipilah bagian demi bagian mulai dari kata kunci class sampai titik koma penutup pernyataan. Setelah selesai membaca, membuat berkas Java baru, menjalankannya lewat terminal, dan membaca pesan error pertama menjadi pekerjaan yang tidak lagi membingungkan.
Menulis berkas Halo.java#
Kode Java disimpan dalam berkas teks berakhiran .java, dan aturan pembukaannya sederhana, yaitu satu berkas memuat satu kelas utama yang namanya sama dengan nama berkasnya. Berkas berikut bernama Halo.java sehingga kelas di dalamnya diberi nama Halo. Editor teks apa pun cukup untuk menulisnya, mulai dari editor ringan sampai IDE lengkap.
// Program pertama: menampilkan sapaan ke layar
public class Halo {
// metode main adalah titik awal eksekusi program
public static void main(String[] args) {
String sapaan = "Halo, dunia";
System.out.println(sapaan);
System.out.println("Program Java pertama berhasil dijalankan");
}
}Halo, dunia
Program Java pertama berhasil dijalankanMenjalankannya hanya butuh satu perintah dari terminal. Masuk ke folder tempat berkas disimpan, lalu panggil launcher java dengan nama berkasnya.
# berada di folder yang sama dengan berkasnya
java Halo.javaHalo, dunia
Program Java pertama berhasil dijalankanLauncher membaca isi berkas, memeriksa sintaksnya di memori, lalu langsung mengeksekusinya. Cara ini paling nyaman untuk program kecil dan untuk tahap belajar, karena tidak ada langkah tambahan di antara menyunting dan melihat hasilnya.
Anatomi baris demi baris#
Setiap baris Halo.java memiliki peran yang bisa dinamai dengan tepat. Diagram berikut menandai peran tersebut langsung di samping barisnya, dan penjelasan lengkapnya menyusul sesudah diagram.
Baris public class Halo { membuka deklarasi kelas bernama Halo. Kata kunci class menyatakan bahwa berkas ini mendefinisikan sebuah kelas, sedangkan kata public di depannya menyatakan kelas itu dapat dilihat dan dipakai dari luar. Tanda { membuka tubuh kelas, dan tanda } di bagian akhir berkas menutupnya, sehingga seluruh isi program terkurung di dalam kelas.
Baris public static void main(String[] args) mendeklarasikan metode main, yakni titik awal eksekusi program. Ketika program dijalankan, mesin virtual Java (Java Virtual Machine, JVM) mencari metode dengan tanda tangan persis seperti ini, lalu menjalankan isinya dari baris pertama. Kata static berarti metode dapat dipanggil tanpa membuat objek lebih dahulu, sehingga cocok menjadi pintu masuk. Parameter String[] args menampung argumen yang diketik di terminal saat program dipanggil, dan pada program ini argumen tersebut belum dipakai.
Dua pernyataan di dalam metode itulah yang melakukan pekerjaan. Baris String sapaan = "Halo, dunia"; membuat variabel bertipe String bernama sapaan, sedangkan baris System.out.println(sapaan); mencetak isi variabel itu ke keluaran standar lalu berpindah baris. System adalah kelas bawaan Java, out adalah aliran keluarannya, dan println adalah metode pencetaknya. Setiap pernyataan diakhiri titik koma, dan pelepasan satu tanda ini saja sudah cukup membuat program menolak dijalankan.
Mengapa semua kode berada di dalam kelas#
Java adalah bahasa berbasis kelas, artinya tidak ada kode yang hidup di luar kelas. Bahasa seperti Python atau C memungkinkan fungsi berdiri bebas di dalam berkas, sedangkan Java mewajibkan setiap fungsi dan data menempel pada sebuah kelas. Konsekuensinya, berkas .java selalu berisi deklarasi kelas, dan titik masuk program pun berupa metode di dalam kelas, yaitu main.
Ada dua alasan praktis di balik aturan ini. Pertama, JVM bekerja dalam satuan kelas. Program dijalankan dengan memuat berkas .class yang dihasilkan dari kode Java, sehingga selalu ada kelas yang perlu dimuat. Kedua, pengelompokan ini memaksa struktur yang seragam, sehingga kode dari pengembang mana pun punya bentuk yang mudah dikenali. Pada tahap awal kelas terasa seperti pembungkus formal, tetapi begitu program bertambah, kelas menjadi rumah bagi data dan perilaku yang memang satu keluarga.
Kata public dan aturan penamaan berkas#
Kata public pada deklarasi kelas bermakna aksesibilitas, yakni kelas tersebut boleh dipakai dari luar. JVM memerlukan akses semacam ini karena launcher java berada di luar program, sehingga kelas yang memuat main lazimnya dideklarasikan public. Sementara itu, pola yang perlu dipegang sekarang adalah public class Nama di dalam berkas Nama.java.
Aturan penamaannya ketat. Satu berkas hanya boleh memuat satu kelas public, dan nama berkasnya harus persis sama dengan nama kelas itu, termasuk huruf besar dan kecilnya. Kelas Halo tidak boleh berada di berkas halohalo.java. Bila aturan ini dilanggar dan kode dikompilasi dengan javac, kompiler menolak dengan pesan yang menyebut nama berkas yang diharapkan.
Komentar di dalam kode#
Komentar adalah teks yang diabaikan kompiler dan ditulis untuk pembaca kode. Halo.java sudah memuat dua contoh komentar satu baris yang dimulai dengan //. Java menyediakan tiga bentuk komentar, masing-masing untuk kebutuhan yang berbeda.
// tidak-dijalankan
// komentar satu baris, berlaku sampai akhir baris
/* komentar banyak baris
boleh memanjang beberapa baris sekaligus */
/**
* Komentar dokumentasi, dibaca alat javadoc
* untuk menyusun halaman dokumentasi otomatis.
*/Bentuk ketiga, komentar dokumentasi, dipakai untuk menjelaskan kontrak sebuah kelas atau metode sehingga alat pembuat dokumentasi dapat menyusunnya menjadi halaman HTML. Untuk pekerjaan sehari-hari, bentuk satu baris paling sering dipakai. Komentar yang baik menjelaskan alasan sebuah keputusan, bukan menerjemahkan ulang kode yang sudah jelas terbaca.
Kesalahan umum#
Beberapa pesan error hampir pasti ditemui saat menulis program pertama. Semuanya mudah diperbaiki setelah polanya dikenali.
- Titik koma hilang di akhir pernyataan. Kompiler berhenti dengan pesan
error: ';' expectedbeserta nomor barisnya. Perbaikannya menambahkan tanda itu tepat setelah pernyataan yang terputus. - Nama kelas tidak sama dengan nama berkas. Saat memakai
javac, munculclass Halo is public, should be declared in a file named Halo.java. Perbaikannya mengganti nama berkas atau nama kelas agar identik. - Kurung kurawal tidak sepadan. Kompiler menyerah di akhir berkas dengan pesan
error: reached end of file while parsing. Perbaikannya memasangkan setiap{dengan}, dan indentasi yang konsisten membuat pasangan yang hilang lebih mudah terlihat. - Perintah dijalankan dengan ekstensi, misalnya
java Halo.class. JVM mencari kelas bernamaHalo.classsehingga munculError: Could not find or load main class Halo.class. Perbaikannya menjalankanjava Halo.javauntuk mode single-file, ataujava Halobila kode sudah dikompilasi terlebih dahulu.
Ringkasan#
- Program Java tinggal di dalam kelas, dan satu berkas
.javamemuat satu kelaspublicyang namanya sama dengan nama berkasnya. - Metode
public static void main(String[] args)adalah titik awal eksekusi yang dicari JVM, dan ia dipanggil tanpa membuat objek lebih dahulu. System.out.println(...)mencetak satu baris ke keluaran standar, dan setiap pernyataan diakhiri titik koma.- Pesan error kompiler menyebut nomor baris dan jenis masalahnya, sehingga pembacaan dimulai dari baris yang ditunjuk.
Referensi#
- A Closer Look at the “Hello World!” Application — Oracle — Bedah resmi setiap bagian program Hello World, dari deklarasi kelas sampai komentar.
- JEP 330: Launch Single-File Source-Code Programs — OpenJDK
— Spesifikasi mode single-file yang menjalankan
java Halo.javatanpa langkah kompilasi manual. - Class System — Oracle
— Dokumentasi kelas
Systembeserta aliranoutyang dipakai untuk mencetak.