SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

JavaとRuby:主要機能の比較

JavaとRubyにおける記述方法の違い

継承

 JavaでもRubyでも、クラス宣言の際に他のクラスを拡張できます。Javaでは、次のようにextendsキーワードを使用してクラスを拡張します。

public class LinkedHashSet extends HashSet{}

 Rubyでは、<を使用してクラスを拡張します。たとえば、ActiveRecord::Baseクラスを拡張するCatalogクラスを宣言するには次のようにします。

class Catalog < ActiveRecord::Base

end

 RubyでもJavaでも親クラスは1つだけです。Javaでは、抽象メソッドを含む複数のインターフェイスを使用し、各インターフェイスの実装クラスでメソッドを実装するという方法で多重継承を実現できます。Rubyでは、モジュールとmixinによって多重継承が可能になります。

編集部注
 原文では、この後にRubyのモジュールによるmixinの説明がありましたが、説明内容が不正確・不適切と判断したため、割愛しました。

例外処理

 Javaでは、例外をtry-catch-finally構造で処理します。これは、1つのtryブロック、任意の数のcatchブロック、また任意で1つのfinallyブロックで構成されます。tryブロックでは、例外が発生する可能性のあるステートメントを実行します。各catchブロックでそれぞれの例外を処理します。任意のfinallyブロックでは、オブジェクトをクローズするステートメントを実行できます。finallyブロックは、必ずアプリケーションがtryブロックを終了した後に実行します。try-catch-finallyブロックの例を次に示します。ここでは、tryブロックでMySQLデータベースとのConnectionオブジェクトを作成し、catchブロックでSQLExceptionを処理し、finallyブロックでConnectionオブジェクトをクローズしています。

Connection connection = null;

try {
    String url= "jdbc:mysql://localhost:3306/test";
    connection= DriverManager.getConnection(url, "root","");
} catch (SQLException e) {
    System.err.println("Caught: SQLException: " + e.getMessage());
} finally {
    try {
        connection.close();
    } catch (SQLException e) {
    }
}

 Rubyでは、例外はbegin-rescue-ensure-end構造で処理します。この構造は、指定の例外が発生したときに実行するステートメントを含んだ任意の数のrescue句から成ります。任意のensure句は、例外が発生してもしなくても常に実行するステートメントを含みます。Rubyのrescue句はJavaのcatch句に相当し、Rubyのensure句はJavaのfinally句に相当します。begin-rescue-ensure構造の例を次に示します。

begin

rescue RubyException1
  RubyException1が発生したときに実行するステートメント
rescue RubyException2
  RubyException2が発生したときに実行するステートメント
ensure
  例外が発生してもしなくても実行するステートメント
end

まとめ

 RubyはJavaと似ており、Javaと共通の機能もありますが、ONJavaの記事「Ruby the Rival」に書かれているようなJavaの代わりとなる言語ではありません。Java EEが、JavaによるModel-View-Controllerアプリケーション開発向けエンタープライズフレームワークであるように、Ruby on Railsは、RubyのModel-View-Controllerフレームワークです。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Deepak Vohra(Deepak Vohra)

O'Reillyの技術レビュー担当者として『WebLogic: The Definitive Guide』を担当。NuBeanコンサルタント、Web開発者でもある。Sun認定資格(Java 1.4プログラマおよびWebコンポーネントディベロッパJ2EEバージョン)を取得。メールの宛先はdvohra0...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/2144 2008/04/11 19:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー