はじめに
Rubyはインタプリタによって解釈されるスクリプト言語で、Javaはコンパイラによってコンパイルされるプログラミング言語です。Rubyは、オブジェクト指向言語であり厳密な型指定を行うという点ではJavaに似ています。しかし、Rubyの型指定は動的であるのに対し、Javaの型指定は静的です。Rubyでは型宣言は使用されず、Javaでは型宣言は必須です。JavaとRubyのどちらにも継承があり、"パブリック"、"プライベート"、"プロテクト"のメソッドがあります。RubyはJavaより単純でJavaより高速です。Rubyはさまざまな点でJavaと異なっています。本稿では、RubyとJavaの主要機能を比較します。
インタプリタ方式とコンパイラ方式
Rubyはインタプリタ方式のスクリプト言語なので、コンパイルしてバイトコードを生成することなく、直接実行できます。たとえば、Rubyファイル「helloruby.rb」は、次のコマンドで実行できます。
>ruby helloruby.rb
これに対し、Javaアプリケーションは実行前にコンパイルする必要があります。たとえば、Javaクラス「hellojava.java」は、次のコマンドでjavacコンパイラを使ってコンパイルする必要があります。
>javac hellojava.java
javacコンパイラは、Javaクラスのバイトコードを生成します。その結果、コンパイルしたクラスはjava.exeアプリケーションを使用して実行できるようになります。
>java hellojava
パッケージのインポート
Rubyでは、require
ステートメントを使用してパッケージやモジュールをインポートします。たとえば、extensionsパッケージ/モジュールをインポートするには次のようにします。
require 'extensions'
外部ファイルをRubyアプリケーションに含めるには、load
またはrequire
を使用します。たとえば、外部ファイル「catalog.rb」を含めるには、次のrequire
ステートメントを追加します。
require "catalog.rb"
load
とrequire
の違いは、load
がメソッド実行のたびに指定のRubyファイルを含めるのに対し、require
はそのRubyファイルを一度だけ含める点です。
Javaでは、import
ステートメントを使用してパッケージをロードします。たとえば、Javaパッケージ「java.sql」をロードするには次のようにします。
import java.sql.*;
型付き変数
RubyでもJavaでも厳密な型指定を行いますが、Rubyの変数の型指定は動的です。これはつまり、変数の型を明示的に関連付けられないということです。たとえば、文字列値を持つ変数は次のように宣言します。
str="Hello Ruby"
このstr
変数には特定の型が関連付けられていないので、整数型その他の型の値を代入できます。
str=1
Javaの変数の型指定は静的であり、変数に型を関連付けることができます。たとえば、文字列変数は次のように宣言します。
String str="Hello Java";
このstr
変数に整数値を代入することはできません。
null値
Rubyでは、null値はnil
で宣言します。たとえば、変数str
にnil
値を代入するには次のようにします。
str=nil
Javaでは、null値はnull
で宣言します。たとえば、変数str
にnull値を代入するには次のようにします。
str=null;