7 poin oleh GN⁺ 2024-12-20 | 2 komentar | Bagikan ke WhatsApp
  • 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

  • Berkat JEP 330 dan JEP 458, file sumber Java dapat dijalankan langsung:
    java RandomFiles.java 10 /home/cay/data  
    
  • Dikompilasi otomatis setiap kali dijalankan, berguna untuk pengembangan dan pengujian
  • Dapat diubah menjadi executable native menggunakan Graal, tetapi dalam kebanyakan kasus perbedaan performanya kecil

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

 
aer0700 2024-12-24

Untuk scripting sederhana, bahasa dengan tipe dinamis memang jauh lebih nyaman untuk digunakan...
Tentu saja, setelah melewati tahap prototipe, saya akan memakai bahasa statis.

 
GN⁺ 2024-12-20
Komentar Hacker News
  • Menemukan cara untuk menjalankan program "Hello World" dengan sangat sederhana. Jauh lebih simpel dibanding kode rumit sebelumnya.

    • Saat menggunakan Java 21, terasa bahwa kodenya menjadi kurang kompleks. var dan record sangat berguna.
    • Sedang menyelesaikan soal AoC dengan cara 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.

    • Menghormati Python, tetapi sulit dibaca. Tidak terbiasa dengan sintaks PHP dan Python.
  • Saat pengembangan JDK 1.1, belum ada kesepakatan tentang test suite. Mark Reinhold menolak pengujian dalam bentuk JCK dan menulis test harness sederhana.

    • Fitur yang paling berguna bagi programmer Java adalah hot reload pada debugger. Menulis kode jadi jauh lebih mudah.
  • 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.IO di-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.