実は共通点の多いRubyとJava。Javaエンジニアであり、JavaとRubyの両方のインストラクターでもある筆者が贈る、JavaエンジニアのためのRuby入門。
昨今、急速にITエンジニアの注目を集めているRuby。中でも、RubyのためのWebアプリケーションフレームワークであるRuby on Rails(以下、Rails)は、「Javaの典型的なフレームワークの10倍の生産性」と宣伝されたこともあり、とりわけJavaエンジニアの皆さんにとって気になる存在なのではないでしょうか。
とはいうものの、「Rubyは触ったことがないし、ソースコードを少し読んではみたものの、さっぱり意味が分からない。勉強するにはハードルが高い」と感じている方も多いと思います。
確かに、表面的にはJavaとRubyはかなり異なる言語のように思えます。しかしよく見てみると、共通点も多いのです。筆者はもともとJavaのエンジニアで、JavaとRubyの研修インストラクターも経験しています。それらの経験から感じるのは、「Rubyの習得が最もスムーズにできるのは、実はJavaエンジニアなのではないか」ということです。
連載第1回である今回は、まずJavaとRubyの概要についておさらいし、なぜJavaエンジニアがRubyに向いているのかを紹介します。次回以降、具体的にどういったポイントを押さえれば、Javaエンジニアの皆さんがスムーズにRubyおよびRailsを習得できるのかを解説する予定です。
タイトルにもあるとおり、この連載はJavaエンジニアの皆さんをターゲットにしています。ですからJavaの歴史や現在の使われ方についてはよくご存じかと思いますが、ここで簡単に紹介しておきます。
Javaはもともと、1990年12月に始まったサン・マイクロシステムズ(以下、サン)の内部プロジェクトにおいて、Oakという名称で開発が始められました。その後、OakはJavaと名称を変更し、1995年5月にサンのカンファレンスで正式に発表されました。
当時、Webブラウザのトップシェアを誇っていたNetscapeがJava Appletの実行をサポートしたことも手伝って、Javaはその誕生当初から「Webテクノロジのための言語」という非常に先進的なイメージを与えることに成功しました。しかしながらJava Appletは、「起動に時間がかかる」「Webブラウザがフリーズしやすい」などのマイナスイメージが先行してしまったため、商業的な成功を見ることはありませんでした。
その後、Webアプリケーションの実行レイヤがクライアントサイドからサーバサイドに移ると、Servlet/JSPといったサーバサイドWebアプリケーション用のAPIを備え、Webアプリケーションサーバというインフラを手にしたJavaは、業務システム構築のプラットフォームとして一躍脚光を浴びることになりました。
初期のJavaについては「起動・実行速度が遅い」「堅牢性に不安がある」などの声が根強くありました。しかしサーバサイド環境では通常、連続稼働が前提であるため、起動の速度はさほど問題にならないこと、実行速度もサーバサイド環境ではインフラ自体の増強でまかなえること、Java自体のバージョンアップに伴い大幅な性能向上があったこと、堅牢性については大手ベンダが高性能なアプリケーションサーバを提供してきたことなどで、解決されてきました。
現在では、Javaは業務システム開発、特にWebベースの業務システム開発言語のデファクトスタンダードといってもよい存在です。新入社員教育で、C言語などに替わってJavaを学習させる会社も増えています。
Javaの年表
1996年 1月 JDK 1.0
1997年 2月 JDK 1.1
1998年12月 JDK 1.2
2000年 5月 J2SE SDK 1.3
2002年 2月 J2SE SDK 1.4
2004年 9月 J2SE SDK 5.0
2006年12月 JDK 6
Javaの特徴として、主に以下のようなものが挙げられるでしょう。
Javaはオブジェクト指向言語の中で、商業的に最も成功した言語の1つであるといわれています。
サードパーティや他ベンダ製のライブラリを使わなくても、標準APIだけでアプリケーション開発に必要十分な機能をそろえています。
Javaでは、アプリケーションの動作環境として、JavaVM(Java Virtual Machine)という実行環境を提供しています。JavaVMは名前の示すとおり、Javaの中間コードを解釈できる仮想的な機械といえるものです。このJavaVMが各プラットフォーム用に提供されることで、同一の実行コードを変更することなく、異なるプラットフォームで実行可能です。
それまでのシステム開発言語のデファクトスタンダードであったC/C++の構文体系をある程度踏襲することによって、開発者の移行に対するコストを減らし、支持を集めることに成功しました。しかしながら、C/C++の構文体系にはオブジェクト指向的でない部分もあり、Javaにもその傾向が見られます。
Copyright © ITmedia, Inc. All Rights Reserved.