Javaは成熟した言語です。よくテストされており、(アンチJavaな人々が まだ文句を言っているのとは逆に)高速に動作します。しかし、Javaの記 述は若干冗長です。RubyからJavaに移行すると、コードサイズはかなり 小さくなります。プロトタイプを急いで作るのには打ってつけです。
類似点
Java同様、Rubyも次のような特徴を持っています。
- メモリはGCによって管理されます。
- オブジェクトは強く型付けられています。
- public、private、protectedメソッドがあります(が、Javaとは若干意 味が違うので注意が必要です)。
- javadocのようなドキュメント埋め込みツール(RDoc)があります。
相違点
Javaと異なり、Rubyは次のような特徴を持っています。
- コンパイルは必要ありません。直接実行できます。
- 異なるGUIツールキットがあります。たとえば、WxRubyやFXRubyや、標準添付のTkを使うことができます。
- クラス定義などで、ブレースでブロックを括る代りに、
endという予約語を使います。 importの代りにrequireを使います。- すべてのメンバ変数はprivateです。外からアクセスするにはかならずメソッドを使います。
- メソッド呼び出しの括弧はたいてい省略可能です。
- 2や3.14159のような数値も含め、すべてがオブジェクトです。
- 静的な型検査はありません。
- 変数名はただのラベルです。型と関連付けられることはありません。
- 型の宣言はありません。変数は最初の代入によって宣言されます。
たとえば、
int [] a = {1,2,3];の代りに、a = [1,2,3]とします。 - キャストはありません。Rubyには静的な型検査はないため、メソッド が呼び出せるかどうかがすべてです。その時に起きるかもしれない例 外は、あらかじめユニットテストでカバーしておくべきです。
foo = new Foo("hi")の代りに、foo = Foo.new("hi")の ようにオブジェクトを生成します。- コンストラクタはクラスと同じ名前ではなく、常に"initialize"という名前で定義します。
- インタフェイスはありませんが、mixinという仕組みがあります。Rubyには静的な型はありませんので、インタフェイスの継承は必要ありません。mixinは実装の継承を提供します。
- XMLよりもYAMLが好んで使われます。
nullの代りにnilを使います。
Posted by Shugo Maeda on 15 Jun 2006
