2009-04-27 3 views
15

私は質問を非常にはっきりと簡潔に記していると思います。なぜ私は尋ねるのですか?Ruby GemsをJava JARに類するものにすることは有効ですか?

私はRuby on Railsフレームワークを学生に説明することになっています。これは、Javaの世界に類似している必要があります(コースはJava中心です)。 Ruby on Railsの実践的な経験はありませんが、Gem/Jarの類推は有効です。

誰もがこの問題についてより多くの光を放つことができますか?私はよく分からない

答えて

25

簡単な答えとして、私は言うでしょう:はい、それは有効です。

長い答えとして、私はそう言うでしょう:はい、それは有効ですが、あなたが同様に記述したいかもしれないいくつかの重要な区別があります。

瓶には宝石とはかなり異なるいくつかの性質があります。 JARはパッケージ化された実行可能ライブラリであり、通常は呼び出し時にJavaプログラムの実行に依存することを明示的に宣言しなければなりません(Javaインタープリタの呼び出し時にjarを依存関係として宣言することによって)。 jarファイルは、いくつかの明確に定義されたファイルの場所(例えば、ディレクトリ構造はパッケージのパスを反映していなければならない)以外にはほとんど構造が施されていません。

Gemは、ライブラリをシステムに永続的にインストールするためのディスクリプタであり、ランタイム中に依存性が宣言されるようになっている機能のパッケージです。宝石はその定義の一部として厳格なバージョニング構文を持っており、宝石は宝石の名前の一意性を確保するためにかなりの努力を費やす少数の集中リポジトリから配布される傾向があります。宝石は他の宝石との依存関係を明示的に宣言できます。 (JARとは対照的に、JARの呼び出し時にすべての依存関係が満たされていることを確認し、JARは依存宣言またはOR解決の責任を明示的に採用しません)。さらに、gemツールに組み込まれているいくつかのオプション機能があります。たとえば、 "gem"を実行したい場合にgemが呼び出されるデフォルトの実行可能ファイルを宣言し、ユニットテストスイートを宣言することができます宝石をインストールするユーザーがその機能を保証できるようにするためです。

また、RubyGemsはRuby言語とは独立して作成されたツールであり、Jarファイルの管理から生じた多くの不都合や不満が長年のJava開発。

+0

+1;あなたがそのような網羅的な答えを提供して以来、私はこれを受け入れるでしょう:) –

+0

@animal - https://en.wikipedia。org/wiki/RubyGemsはRubyGems自体がRubyで書かれており、Rubyプログラミング言語のパッケージマネージャーだから、「RubyGemsはRuby言語とは独立して作成されたツールです」と少し違っています。しかし、RubyGemsの依存関係管理とjarとの区別は、よく説明されている点です。実際、それはなぜJava開発者がmavenのような依存性管理ツールを必要とするのかです。 – nanosoft

3

は簡単... ​​

私は宝石は基本的にjarファイルと同じものであると思いますが、宝石には名前とバージョンを持っている必要があり、瓶を持っていないということですこれ、hm、制限すると言う...、制限。

Jarメカニズムは、パッケージ化とパッケージ化のために作成されました。 宝石の中で最も重要なのは、RubyGemsプロジェクトです RubyGemsの機能セットはパッケージの配布やインストールに関係するだけのパッケージより少し大きめです。

Apache Mavenの配布とインストールの仕組みは、JavaコミュニティがRuby Gemsと最も近いものだと思います。

+0

mavenの類推のおかげで –

2

これをJARと比較すると、基本的なRubyクラスで十分です。より詳細な説明については、holychaoの答えを参照してください。私にとって心に浮かぶのは、宝石はRubyにとってCPANがPerlのものであるということです。

関連する問題