2

たとえば、クローズド ソースの商用ソフトウェアを作成していたとします。このソフトウェアは、.Net 上に構築された Windows デスクトップ アプリ、ActiveX コントロール、Windows Netscape プラグイン、Cocoa 上に構築された Mac デスクトップ アプリ、Mac Netscape プラグイン、Java などの状況で展開されます。ブラウザでホストされるアプレット。モデルとコントローラ クラスを共有 Ruby ソース ファイルに記述し、MacRuby、IronRuby、および JRuby を使用してさまざまなランタイムに統合することは、コード共有の観点から実行可能でしょうか? 私のビュー クラスは、Windows では WPF、Mac では Cocoa、Java では適切なもの (SWT?) を使用するように記述されると思われます。

私の見解では、ここで最も重要なことはコードベースの長期的なメンテナンスであり、Ruby は、私がターゲットにしなければならない 3 つのプラットフォーム (.Net、Cocoa、および Java) でファーストクラスの言語に近いと思われます。あらゆる言語のように。私はこれで間違っていますか?

2 番目に重要なことは、コードに対するバイラル ライセンス要件を回避することです。JRuby がさまざまなライセンスでリリースされている場所を確認しました。バイナリを配布でき、ライセンスは自分のアプリケーション用に書いた Ruby ファイルには適用されないと仮定するのは正しいですか (フレームワークの変更とは対照的に)。

Ruby はよく知られているデスクトップ アプリケーションで使用されていますか? これは以前に行われたことがありますか?

4

3 に答える 3

2

可能ですが、あなたが概説したアプローチには少し警戒します。たとえば、IronRubyはまだ1.0ではありません。

UI以外にも多くのOS固有の作業を期待していますか?そうでない場合は、クロスプラットフォームのWxWidgetsライブラリの(かなり薄い)ラッパーであるWxRubyを確認することから始めます。Rubyラッパーの優れたドキュメントを探すのに一生懸命働いてはいけません。ところで、苦痛な経験から、実際には非常に包括的なサンプルコードを見るようになりました。

他のプラットフォーム固有のものは、おそらく、ある種のラッパー/ファサード/ api /プロキシの背後に抽象化/カプセル化する必要があります(パターンを選択してください)。

あなたは「クローズドソース」と言います-Rubyのコンテキストでそのための戦略はありましたか?私が見たツール(ruby2exeとRubyScript2exe )は少なくともいくつかありますが、Rubyコードが実際にどれほど隠されているかはわかりません。スタンドアロンでデプロイされた実行可能ファイルである必要がありますか、それともブラウザベースである必要がありますか?これにより、すべてのクロスプラットフォームの問題が解決されます(ただし、代わりにクロスブラウザーの問題に直面する可能性があります)。

このSOの質問には、さらにいくつかの議論があります(別の選択肢であるPythonを含む)

于 2009-11-19T09:26:48.440 に答える
2

モデルとコントローラ クラスを共有 Ruby ソース ファイルに記述し、MacRuby、IronRuby、および JRuby を使用してさまざまなランタイムに統合することは、コード共有の観点から実行可能でしょうか?

3 つの異なる実装間で Ruby コードを共有できます。それらはすべて非常に互換性のある Ruby 実装です。JRuby と IronRuby は Ruby 1.8.6 の機能をターゲットにしており、JRuby も 1.9 の機能で動作し始めており、MacRuby は 1.9 のみをサポートしていることに注意してください。

JRuby のみが SWT と、IronRuby と WPF などと対話できるため、3 つの実装間で共有されないプラットフォーム固有の部分が必要になります。

Ruby は、私がターゲットにしなければならない 3 つのプラットフォーム (.Net、Cocoa、および Java) で、他の言語と同じくらいファースト クラスの言語に近いと思われます。

3 つの Ruby 実装は十分に確立されており、成長を続けるコミュニティによってサポートされ、確立された企業によって支えられています。Ruby はどのプラットフォームでも主に使用される言語ではありませんが、Ruby の使用を不可能にするような大きな制限がある実装はありません。 .

バイナリを配布でき、ライセンスは自分のアプリケーション用に書いた Ruby ファイルには適用されないと仮定するのは正しいですか (フレームワークの変更とは対照的に)。

まあ、その決定を下すには、ライセンスを自分で読むか、知り合いの弁護士に尋ねる必要があります。そうは言っても、どのライセンスも GPL のように「バイラル」でない限り、Ruby 実装のバイナリとライセンスをそのままにしてアプリケーションを自由に配布し、アプリケーションが使用するライセンスを決定する必要があります。お金を請求するかどうか。ただし、合法性について懸念がある場合は、弁護士に相談してください。

Ruby はよく知られているデスクトップ アプリケーションで使用されていますか? これは以前に行われたことがありますか?

Ruby を使用する広く使用されているデスクトップ アプリケーションについては知りませんが、BlazeResolver Oneなど、Windows で IronPython を使用するいくつかのアプリケーションは知っています。デプロイの方法は、IronRuby の場合と同じです。

于 2009-12-29T19:35:29.050 に答える
2

うーん....質問が「Ruby を使用して保守可能な製品を作成し、これらすべてのエンドポイント (Web、デスクトップ、および Java ベースのモバイル) で使用できるようにするにはどうすればよいですか?」

私の謙虚な意見では、ルビーと 3 つのフレーバー (jRuby、IronRuby、MacRuby) を使用すると、そうでない場合よりもはるかに多くのメンテナンスの問題が発生します。3 つのプラットフォームすべてについて理解するか、少なくとも経験豊富な開発者を雇用する必要があり、データベース アクセスのためだけに Ruby を使用する予定がない限り、非常に抽象的なコードの作成に多くの時間を費やすことになります。

いずれかのプラットフォーム (Java と jRuby がおそらく最も移植性の高いオプション) に固執し、そのさまざまなパッケージ オプションを使用して製品を配布する方がよいでしょう。

于 2009-11-18T22:47:21.400 に答える