- JRuby, Ruby की प्रोडक्टिविटी को JVM की परफॉरमेंस के साथ जोड़ने वाली तकनीक है, जबकि JBang सरल dependency management और रनिंग environment प्रदान करता है।
- दोनों उपकरणों को जोड़कर Ruby और Java लाइब्रेरीज़ का एकीकृत उपयोग संभव है।
- JBang: Java/Kotlin/Groovy प्रोग्रामों को आसानी से रन करने और dependencies manage करने वाला टूल।
- JRuby: JVM पर चलने वाला Ruby implementation, जो Ruby की उत्पादकता और JVM का performance जोड़ता है।
- JRuby में Java लाइब्रेरीज़ इस्तेमाल करने के लिए आवश्यक dependency management (Gradle/Maven आदि) जटिल और कठिन है।
- हमने JBang की मदद से निर्भरता को सरल तरीके से manage करने और JRuby स्क्रिप्ट रन करने की approach को टेस्ट करने का फैसला किया।
- Docker आधारित सेटअप
- Amazon Corretto (JDK) आधारित Docker image का उपयोग किया।
- JRuby और JBang को डाउनलोड कर इंस्टॉल किया और PATH में जोड़ा।
- Dockerfile के जरिए Ruby Gem और Java लाइब्रेरीज़ दोनों को शामिल किया।
- एक सरल RunJRuby.java बनाया: JBang से Java निर्भरता प्रबंधन करते हुए JRuby स्क्रिप्ट रन करना।
ProcessBuilder के साथ JRuby रन टाइम environment सेट किया।
- CLASSPATH सेट कर Java निर्भरताओं को JRuby को पास किया।
- Javalin (Java-based web framework) को JRuby के साथ इस्तेमाल करके REST API बनाई।
- JWT authentication जोड़कर और SQLite DB के साथ एकीकरण के साथ CRUD API implement की।
- Java में HTTP, DB ऑपरेशन आदि high-performance libraries का उपयोग और Ruby में business logic हैंडलिंग की।
- प्रदर्शन परीक्षण के परिणाम
- Apache Benchmark (ab) टूल से 1500 requests (concurrency 25) का response time नापने का टेस्ट रन किया।
- परिणाम: 95% requests 10ms के भीतर handle हुईं।
- नवीनतम Javalin version और Virtual Threads का उपयोग करके उच्च performance हासिल हुआ।
- Ruby और Java दोनों के फायदे combine करके productivity और performance दोनों को पूरा किया गया।
- GitHub Repo : jbang-jruby-javalin देखें
1 टिप्पणियां
Java+Groovy का वो घातक Memory leak
JVM पर स्क्रिप्ट चलाते समय कुछ खास स्थितियों में memory leak होने के उदाहरण मैंने देखे थे, तो पूछना चाह रहा/चाह रही हूँ कि jruby में क्या होता है?