1

「車輪の再発明」はしたくありません。Java アプリで必要な機能を提供する Ruby プロジェクトを見つけました (私が必要とすることを実行する既存の Java プロジェクトはありません - 信じてください、私は見ました)。したがって、最良のシナリオとして、Java コード (ala JSR223) から Ruby コードを実行できます。

ただし、この Ruby プロジェクトは、いくつかの gem がインストールされていることに依存しています。Java アプリ全体を JRuby アプリに変換することにはまったく興味がありませんが、このプロジェクトを活用できるようにしたいと考えています。gem から ScriptEngine にコードをロードする簡単な方法はありますか?

4

4 に答える 4

2

ほとんどの場合、複雑さのためにノーと言います。主観的ではありますが、個人的には時間をかけて書き直したほうがよいでしょう。改善を加えることができ、書き終えたときに理解が深まります。

于 2010-02-24T22:46:14.510 に答える
2

JRuby は堅実なプラットフォームであり、Java とうまく統合されます。しかし、Rubygem は Java ビルド ツールとうまく統合できません。

いずれかの gem にネイティブ C コードが含まれている場合は忘れてください。JRuby からそれらを使用することはできません。

すべての gem (およびそのすべての依存関係) が純粋な Ruby である場合、JRuby からそれらを使用することは技術的に可能です、JRuby ランタイムがそれらを見つけられるようにそれらを JAR にパッケージ化することは頭の痛い問題です。

于 2010-02-24T22:53:16.180 に答える
1

検討する可能性のあるオプションの1つは、アプリケーションを2つに分割することです。これらは、パイプ/ファイル(または単にstdinとstdout)またはある種のRPCメカニズムのいずれかを使用して相互作用します。このようなアプローチが理にかなっているかどうかは、Rubyライブラリの機能によって異なります。2つのアプリケーション間のインターフェイスの作成は、Javaで実際に再実装するよりも複雑になる可能性があります。

于 2010-02-24T23:30:18.843 に答える
1

JRubyのJavaコードを再利用しましたが、なぜこれが双方向に実行できないのかわかりません。

別の考えとして、Rubyコードを実行してから、Javaアプリから呼び出すWebサービスまたはWebサービスのセットを追加することはできますか?Sinatraを使用すると、rubyコードのWebサービスラッパーを非常に簡単に作成できます。また、JavaにはWebサービスを呼び出すためのツールが不足していません。

于 2010-03-26T20:35:20.243 に答える