4 puan yazan xguru 2024-12-26 | 1 yorum | WhatsApp'ta paylaş
  • 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

 
clickin 2024-12-26

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?