- JRuby, Ruby'nin üretkenliğini JVM'in performansıyla birleştiren bir teknoloji; JBang ise basit bağımlılık yönetimi ve çalıştırma ortamı sunar
- İki aracı birleştirerek Ruby ve Java kütüphanelerini entegre biçimde kullanabilirsiniz
- JBang: Java/Kotlin/Groovy programlarını kolayca çalıştırıp bağımlılıkları yönetebilen bir araç
- JRuby: JVM üzerinde çalışan bir Ruby uygulaması ve Ruby üretkenliğiyle JVM performansını birleştirir
- JRuby'de Java kütüphaneleri kullanmak için gereken bağımlılık yönetimi (Gradle/Maven vb.) karmaşıktır ve zordur
- JBang kullanılarak bağımlılıkları basitçe yönetmek ve JRuby betiklerini çalıştırma biçimini denemek hedeflendi
- Docker tabanlı ortam kurulumları
- Amazon Corretto (JDK) tabanlı bir Docker görüntüsü kullanıldı
- JRuby ve JBang indirildi, kuruldu ve PATH'e eklendi
- Dockerfile aracılığıyla Ruby Gem'leri ve Java kütüphaneleri birlikte dahil edildi
- Basit bir RunJRuby.java yazıldı: Java bağımlılıklarını JBang ile yönetip JRuby betiği çalıştırmak için
ProcessBuilder ile JRuby çalışma ortamı kuruldu
- CLASSPATH ayarıyla Java bağımlılıkları JRuby'e iletildi
- JRuby ile birlikte Javalin (Java tabanlı web çerçevesi) kullanılarak bir REST API oluşturuldu
- JWT kimlik doğrulaması eklendi, SQLite DB entegrasyonu ile CRUD API uygulandı
- Java tarafında HTTP ve DB işlemleri gibi yüksek performanslı kütüphaneler kullanılırken, Ruby tarafında iş mantığı işlendi
- Performans test sonuçları
- Apache Benchmark(ab) aracıyla 1500 istek (25 eşzamanlı) için yanıt süresi ölçümü yapıldı
- Sonuç: İsteklerin %95'i 10 ms içinde işlendi
- Güncel Javalin sürümü ve Virtual Threads ile yüksek performans sağlandı
- Ruby ve Java'nın avantajlarını birleştirerek hem üretkenlik hem performans hedefleniyor
- GitHub Repo: jbang-jruby-javalin not alınmalı
1 yorum
Java+Groovy'daki o kritik Memory leak
JVM üzerinde betik çalıştırıldığında belirli koşullarda memory leak oluştuğuna dair bir örnek görmüştüm, acaba JRuby'de durum nasıl?