- Java dikenal cocok untuk proyek berskala besar dan jangka panjang, tetapi juga bisa menjadi alat yang sangat baik untuk tugas kecil
- Pemeriksaan tipe statis dan dukungan tooling yang sangat baik menjadi keunggulan besar bahkan untuk tugas kecil
- Peningkatan bahasa terbaru membuat Java menjadi semakin berguna
Menjalankan tanpa kompilasi
Sintaks ringkas: metode main instans dan kelas implisit
- JEP 477: menyederhanakan penulisan program kecil dan skrip
- Menghilangkan sintaks lama yang merepotkan (
public static void main):
var someVariable = initialValue;
String helper(int param) { ... }
void main(String[] args) {
...
}
- Modul
java.base diimpor otomatis sehingga lebih nyaman
- Metode
println, print, readln juga diimpor otomatis
Record dan Enum
- Record: representasi data terstruktur sebagai pengganti dictionary Python
record Window(int id, int desktop, int x, int y, int width, int height, String title) {}
- Enum: cara mengekspresikan enumerasi yang lebih intuitif dibanding Python
enum Direction { NORTH, EAST, SOUTH, WEST };
Fitur bahasa dan API yang berguna
- Pemakaian
var: memungkinkan penggunaan variabel tanpa deklarasi tipe dalam skrip
static import: memungkinkan perhitungan matematika yang ringkas
import static java.lang.Math.*;
var diagonal = sqrt(pow(width, 2) + pow(height, 2));
- Blok teks: menjaga kode dan data tetap bersama sambil meningkatkan keterbacaan
- Library string, regular expression, koleksi, serta tanggal/waktu yang kuat
- Membaca file:
var content = Files.readString(Path.of(filename));
- Menjalankan proses eksternal:
String run(String... cmd) throws Exception {
var process = new ProcessBuilder(cmd).redirectErrorStream(true).start();
process.waitFor();
return new String(process.getInputStream().readAllBytes());
}
Penanganan dependensi dan JBang
- JBang: dependensi Maven dapat ditambahkan langsung ke file sumber
//DEPS org.eclipse.angus:jakarta.mail:2.0.3
- Lalu bisa dijalankan seperti ini
jbang MailMerge.java
- Mengubah skrip menjadi executable:
///usr/bin/env jbang "$0" "$@" ; exit $?
Lingkungan notebook
Kelebihan notebook
- Pemrograman eksploratif: cocok untuk bekerja dengan data dan menjalankan kode sekali pakai atau berskala kecil
- Terdiri dari sel kode dan sel teks:
- Hasil eksekusi sel kode dapat ditampilkan sebagai teks, tabel, gambar, audio, atau video
- Proses coba-coba dan kegagalan dapat diulang hingga memperoleh hasil yang diinginkan, lalu ditambahkan komentar
- Lebih unggul daripada JShell:
- Pekerjaan per sel lebih mudah
- Tabel data dan grafik dapat diperiksa secara visual
- Penyimpanan dan berbagi lebih sederhana
Jupyter dan notebook Java
- Notebook Jupyter: alat yang широко digunakan oleh ilmuwan data Python
- Dapat dijalankan secara lokal atau di cloud (misalnya Google Colab)
- Teknologi Jupyter bersifat independen bahasa:
- Dapat memasang berbagai kernel bahasa (misalnya IJava, JJava, Ganymede, Rapaio)
- Jupyter Java Anywhere: menyederhanakan pemasangan kernel Java dengan memanfaatkan JBang
- Keterbatasan:
- Setiap kernel memiliki cara berbeda dalam menangani dependensi dan menampilkan hasil non-teks
- Kernel IJava memiliki beberapa masalah dalam resolusi dependensi
- Oracle atau vendor besar perlu menyediakan layanan Colab khusus Java
Pemrosesan data dan visualisasi di Java
- Python memudahkan pemrosesan data berkat library seperti NumPy dan Matplotlib
- Di Java, ekosistem serupa masih belum cukup matang
- tablesaw:
- Dapat digunakan sebagai alternatif NumPy
- Mendukung visualisasi dengan memanfaatkan paket JavaScript Plot.ly
Proyek JTaccuino
- JTaccuino:
- Notebook Java yang sedang dikembangkan oleh Sven Reimers
- Menyediakan UI yang ramah pengguna berbasis JavaFX
- Menggunakan JShell sebagai backend
- Masih tahap awal, tetapi memiliki potensi perkembangan yang besar
Kotlin Notebook
- Tersedia plugin IntelliJ Kotlin Notebook untuk pengembang Kotlin
Kesimpulan
- Dengan alat yang tepat, Java adalah pilihan yang sangat efektif untuk menangani tugas kecil
- JBang memudahkan penulisan skrip yang menggunakan library pihak ketiga
- Java juga memiliki potensi dalam pemrograman eksploratif, tetapi dukungan tooling masih perlu ditingkatkan
2 komentar
Untuk scripting sederhana, bahasa dengan tipe dinamis memang jauh lebih nyaman untuk digunakan...
Tentu saja, setelah melewati tahap prototipe, saya akan memakai bahasa statis.
Komentar Hacker News
Menemukan cara untuk menjalankan program "Hello World" dengan sangat sederhana. Jauh lebih simpel dibanding kode rumit sebelumnya.
vardanrecordsangat berguna.java myfile.java, dan fitur import otomatis untuk java.base terasa berguna.Menggunakan Java, JavaScript, dan TypeScript, tetapi untuk scripting memakai .NET dan LINQPad. Berkat LINQ, scripting jadi lebih mudah.
Saat pengembangan JDK 1.1, belum ada kesepakatan tentang test suite. Mark Reinhold menolak pengujian dalam bentuk JCK dan menulis test harness sederhana.
Bahasa berkembang seiring waktu. Java kini cepat, dan dengan tambahan generics serta type inference sederhana, kode boilerplate berkurang.
PHP juga bahasa yang berguna. Sudah terpasang sebelumnya di banyak sistem *nix, dan memiliki pustaka standar yang berguna untuk menangani file, JSON, dan permintaan jaringan.
Di Java 23, tiga metode dari
java.io.IOdi-import secara otomatis. Ini adalah tipe baru, dan bisa digunakan dengan opsi --enable-preview.Belajar coding Java file tunggal di Hacker Rank, dan itu berguna untuk menyelesaikan soal coding di whiteboard.
Jika ingin tahu alasan adanya metode main sederhana, JEP 495 layak dilihat. Akan disertakan dalam JDK 24.
Menggunakan Java untuk semua scripting atau tugas coding, dan sudah memakainya di perusahaan selama lebih dari 5 tahun. Senang dengan perkembangan Java yang berkelanjutan.