Javaは成熟した言語です。よくテストされており、(アンチJavaな人々が まだ文句を言っているのとは逆に)高速に動作します。しかし、Javaの記 述は若干冗長です。RubyからJavaに移行すると、コードサイズはかなり 小さくなります。プロトタイプを急いで作るのには打ってつけです。

類似点

Java同様、Rubyも次のような特徴を持っています。

  • メモリはGCによって管理されます。
  • オブジェクトは強く型付けられています。
  • public、private、protectedメソッドがあります(が、Javaとは若干意 味が違うので注意が必要です)。
  • javadocのようなドキュメント埋め込みツール(RDoc)があります。

相違点

Javaと異なり、Rubyは次のような特徴を持っています。

  • コンパイルは必要ありません。直接実行できます。
  • 異なるGUIツールキットがあります。たとえば、WxRubyFXRubyや、標準添付の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を使います。