4 ポイント 投稿者 xguru 2024-12-26 | 1件のコメント | WhatsAppで共有
  • JRuby は Ruby の生産性と JVM のパフォーマンスを組み合わせた技術で、 JBang はシンプルな依存関係管理と実行環境を提供する
    • 二つのツールを組み合わせることで、Ruby と Java ライブラリを統合して活用できる
    • JBang: Java/Kotlin/Groovy プログラムを簡単に実行し、依存関係を管理できるツール
    • JRuby: JVM 上で動作する Ruby 実装で、Ruby の生産性と JVM パフォーマンスを統合
  • JRuby で Java ライブラリを使うために必要な依存関係の管理(Gradle/Maven など)は、複雑で難しい
    • JBang を活用して依存関係を簡単に管理し、JRuby スクリプトを実行する方法を試してみることにした
  • Docker ベースの環境構成
    • Amazon Corretto(JDK)ベースの Docker イメージを使用
    • JRuby と JBang をダウンロードおよびインストールして PATH に追加
    • Dockerfile を通じて Ruby Gem と Java ライブラリの両方を含める
  • 簡易 RunJRuby.java を作成: JBang を介して Java 依存関係を管理し、JRuby スクリプトを実行
    • ProcessBuilder で JRuby 実行環境を構成
    • CLASSPATH 設定で Java 依存関係を JRuby に引き渡す
  • Javalin(Java ベースの Web フレームワーク)を JRuby と共に使って REST API を構築
    • JWT 認証を追加し、SQLite DB と統合して CRUD API を実装
    • Java では HTTP や DB 処理などの高性能ライブラリを活用し、Ruby ではビジネスロジックを処理
  • 性能テスト結果
    • Apache Benchmark(ab) ツールを使って 1500 件のリクエスト(同時 25 件)でレスポンス時間測定を実行
    • 結果: 95% のリクエストが 10ms 以内で処理された
    • 最新の Javalin バージョンと Virtual Threads を使い、高いパフォーマンスを提供
  • Ruby と Java の長所を組み合わせて、生産性とパフォーマンスの両方を満たす
  • GitHub Repo : jbang-jruby-javalin を参照

1件のコメント

 
clickin 2024-12-26

Java+Groovy の致命的なメモリリーク
JVM 上でスクリプトを実行する場合、特定の条件下でメモリリークが発生する事例を見たことがあるが、JRuby はどうか気になる。