- JRuby adalah teknologi yang menggabungkan produktivitas Ruby dan performa JVM, dan JBang menyediakan manajemen dependensi serta lingkungan eksekusi yang sederhana
- Menggabungkan dua alat ini memungkinkan penggunaan terintegrasi dari library Ruby dan Java
- JBang: alat untuk menjalankan program Java/Kotlin/Groovy dengan mudah dan mengelola dependensi
- JRuby: implementasi Ruby yang berjalan di atas JVM, menggabungkan produktivitas Ruby dengan performa JVM
- Dalam pengelolaan dependensi yang dibutuhkan untuk menggunakan library Java di JRuby (seperti Gradle/Maven), prosesnya rumit dan menyulitkan
- Menggunakan JBang untuk menyederhanakan pengelolaan dependensi dan mencoba cara menjalankan skrip JRuby
- Pengaturan lingkungan berbasis Docker
- Menggunakan image Docker berbasis Amazon Corretto (JDK)
- Mengunduh serta memasang JRuby dan JBang lalu menambahkannya ke PATH
- Memasukkan Ruby Gem dan library Java melalui Dockerfile
- Menulis RunJRuby.java sederhana: mengelola dependensi Java dengan JBang dan menjalankan skrip JRuby
- Menyiapkan lingkungan eksekusi JRuby dengan
ProcessBuilder
- Meneruskan dependensi Java ke JRuby melalui pengaturan CLASSPATH
- Membangun REST API dengan Javalin (framework web berbasis Java) bersama JRuby
- Menambahkan autentikasi JWT dan mengintegrasikan dengan SQLite DB untuk membangun API CRUD
- Java digunakan untuk pustaka berperforma tinggi seperti HTTP dan operasi DB, sedangkan Ruby untuk memproses logika bisnis
- Hasil pengujian performa
- Menjalankan pengujian waktu respons untuk 1.500 permintaan (25 permintaan bersamaan) menggunakan alat Apache Benchmark (ab)
- Hasil: 95% permintaan diproses dalam waktu kurang dari 10ms
- Menggunakan versi terbaru Javalin dan Virtual Threads untuk performa tinggi
- Menggabungkan keunggulan Ruby dan Java untuk memenuhi produktivitas dan performa sekaligus
- Lihat GitHub Repo: jbang-jruby-javalin
1 komentar
Java+Groovy: Memory leak yang fatal
JVM di atasnya, saat mengeksekusi skrip pada kondisi tertentu saya pernah melihat kasus terjadinya memory leak, dan sekarang penasaran bagaimana dengan JRuby