マイコミジャーナル

知りたい!を刺激する総合専門サイト


  1. エンタープライズ

  2. レポート

【レポート】

IBM Software World 2005 - Java Ease of Developmentはどこへ向かうのか?

2005/05/20

後藤大地

親愛なるJava/J2EE開発者たちへ - Ease of Developmentはどこへ向かうのか?

5月17日から18日にかけて、東京国際フォーラムにおいて日本IBM主催、IDGジャパン後援で「IBM Software World 2005」が開催された。2日間にわたり、IBMのソフトウェアを中心としてさまざまなセッションや展示が催された。特に本レポートでは、2日目に開催されたJava EoDに関するセッションについてお届けしたい。

2日目のセッションにおいて、WebSphereテクニカルセールス&サポート 夷藤勇人氏より「親愛なるJava/J2EE開発者たちへ - Ease of Developmentはどこへ向かうのか?」と名うったセッションが開催された。本セッションでは、EoDを中心課題に据え、これまでのJavaの問題点、現在の主要テクノロジ、今後の展開について、明確でわかりやすい説明があった。

Java言語の停滞から発展へ - Java 5.0 Tiger

Java EoD(Easy of Development)は、ここ数年、Javaの開発の方向性として何度もいいはやされてきた。今後発表される数々の技術も、そのほとんどはEoDを実現するためのものだとされている。

まず同氏はJavaの現状を述べたあとで、JDK 1.2から1.4までJavaの言語仕様に大きな変化がないことを指摘。その間、後発でより豊富な機能を備える同系のライバルC#は開発者数を増やし、一方で、Python/Ruby/PHPがきわめて強力に普及したことを紹介した。同氏によれば、Desktop LinuxではあらゆるアプリケーションがPythonを使用するし、WebスクリプトのデファクトスタンダードとしてPHPの地位は揺るぎない。Rubyは国産スクリプト言語だが、その使用は国内にとどまらないで世界に広がっているという。

プログラミング言語は、ただ言語仕様が変更されればいいというものではなく、互換性を保ちつつ、しかし開発者の興味が失われないように常に革新しなければならないという。「このままJavaが進化をしなければ、Javaは第2のCOBOLになりかねない」と、夷藤氏はPaul Graham氏の言葉を引用し、言語仕様の変更が行われたJava 5.0 Tigerについて紹介をはじめた。

Java 5.0は、言語仕様が第2版から第3版へと変更されている。5.0で導入されたEoD技術はいくつもあるが、同氏は特にAnnotationこそ、注目に値する技術であり、J2EE EoDを実現するための中核技術であることを強調した。

Annotationとは、Java 5.0で言語仕様に追加された意味を持つコメントのようなもので、メタデータを実現するために使用される。これまでJavaを使ってきたプログラマは、Annotationを理解しにくいかもしれない。設計との整合性を取るものだと考えるといいかもしれない。このメソッドはオーバーライドしないといけないとか、このクラスはこれこれの規約に従うとか、そういったことを言語仕様レベルで定義するのである。これをうまく使うと、ソースコード量を減少させ、全体を簡素にし、見通しをよくすることができる。

MainstremとAlternative

最近、現場のJavaエンジニアの間では、MainstremとAlternativeという言葉が使われるようになりつつあるという。Maintreamとは広く一般に広がっている技術を指し、Servlet/JSP、Struts、EJB2.xなどがそれにあたる。これに対して、代替え可能な少数派の方をAlternativeを呼ぶという。たとえばJSF、Spring Framework、Hibernateがそれにあたるという。

これはどちらが優れているとかそういった区分ではなく、最新技術はAlternativeで試験され、いずれMainstreamに統合されるという、それぞれの役割のようなものがあり、それゆえ、開発者はAlternativeに注目しておくべきだ、という意味があるという。

EJB 2.xからEJB 3.0へ - EoDに基づく画期的な変更

EJBは難解だ、これはJavaに携わったことのある開発者であれば、だれでも感じたことだろう。EJB 2.xでは、一番小さい仕組みを作る場合でも、最低4つのファイルを作成し、規定のメソッドを実装しなければならない。難解というよりも、やるべきことが多くてややこしい。コミュニティではEJB Alternative、つまりEJBの代替え技術の模索が行われてきた。CMPのアンチテーゼであるHibernateや、Light Weightコンポーネントを実現するSpring FrameworkやSeasarがそれだ。

EJB 3.0では、こうした批判を素直に受け入れ、これまでのEJB 2.xとは全然違う画期的なものになるという。Annotationを基本的な技術として受け入れ、Hibernateの機能の大幅なマージ、DI指向、POJO、POJIへの変更が行われる。たとえばEJB 3.0では、Annotationを一つ追加するだけで、最小限の仕組みが作れる。4つのファイルと数々の実装が、1つのファイルと1つのAnnotationで済む。仕組みとしても実装としても劇的にEoDが実現されることになる。

こうした背景には、「規約≫設定」という思想があるという。同氏はZero configurationという言葉も紹介した。規約を定め、それに従った実装を行うことを基本とする。こうすることで、毎回同じものを書く手間を省くことができ、重複する煩雑なソースコードから解放されるという。これを実現した技術が、まさにAnnotationということである。

これらの効果を示すため、EBJ 3.0を使った例が紹介された。EJB 2.1では17のJavaファイルと987行のコード、9つのXMLファイルと792行の設定が必要だったものが、EJB 3.0では、7つのファイルと716行、2つのXMLファイルと26行の設定で済んだという。Zero configurationに近いことがわかる。どれだけEoDが実現されたかがよくわかる例だ。

EoDを実現する技術 - AspectJ 5、Ajax、Shale

同氏はEoDを実現する最近注目されている技術として、AspectJ 5、Ajax、Shaleも紹介した。

プログラミング言語が持っている概念とは別に、垂直に機能を追加する方法としてAspect指向がある。従来、JavaでもAspect指向を実現する方法は提供されていたが、記述方法が独自であるため、広く普及するまでには至らなかった。AspectJでは、Java 5.0で導入されたAnnotationを使ってAspectを実現するAspectJ 5を公開したという。AspectJ 5は完全にJava 5.0のソースコードとして記述できる。扱いやすさから、今後AspectJ 5を採用する開発者が増えるだろうということだ。

なお、どのタイミングでAspectを実現するかという点から、4つの区分がある。コンパイル時、コンパイル後、読み込み時、実行時である。実行時にAspectを実現するには、Java仮想マシンに対する変更が必要になる。これは将来的にサポートされる予定だという。

Java EoDとは多少話がそれるが、Ajaxについても紹介があった。これは古い組み合わせ技術だが、Google Mapで採用され、最近再び注目されるようになったという。最終的に、これらAjaxを実現するJSFコンポーネントが提供されるようになれば、JavaにおけるWebページの作成が極めて便利になるということを紹介した。

最後はShaleについて紹介があった。ShaleはWebアプリケーションの作成においてデファクトスタンダードになっているStruts 1.xの後継版にあたる。当初、Struts 2.xという名前で開発が進められていたが、変更が多すぎることから、Shaleという名前に変更された。EJB 3.0のように、Annotationを大幅に取り入れたものになるということだ。Struts 1.xはデファクトだが、すでに古いスタイルであるという。今後はShaleが徐々に増えるだろうということだ。

今後の展望

同氏は、Java 6.0で導入される、Java仮想マシン間での共有メモリの話に触れてから、今後のMainstream、Alternativeがどのようになっていくかという見解を示した。Alternativeにgroovyが取りあげられていた点が興味深い。groovyはJava開発者のためのスクリプト言語で、Java開発者であれば違和感なく取りかかることができるスクリプトだ。

簡単になってきているとはいえ、Java関連の技術は幅が広く、しかも流動が速い。同氏は映画Matrixから「武器を拾いながら走れ」という言葉を紹介し、我々開発者は常に武器となる技術を学び、走り続けなければならないという点を強調した。これは大変なことだが、仕事で忙しいということを理由にせず、日々研鑽することの重要性を説いた。

同氏は最後に、Enjoy Programming!と述べた。プログラミングは楽しいもので、学ぶということ自体が知的探検で面白いものだという。楽しんで学ぶことが、これら技術を身につけるためにもっとも重要なことだと述べ、発表をしめた。

今年でJavaが誕生してから10年になる。コンピュータの世界はドッグイヤーだといわれる。他の分野にくらべて、常識や技術が何倍もの速度で流動するということを示唆するために使われる言葉だ。Javaのこの10年の歩みを見ても、それがわかるだろう。研究のレベルではなく、実用的なレベルで、非常に高度な抽象化を実装するところまで開発が成熟してきている。

当初、実装寄りの話が多かったJavaも、最近ではモデリングや設計といった点に焦点があたり、ただ実装すればよいというものではなくなりつつある。簡単になったとはいえ、最初にJavaに取り組む開発者にとっては、状況はより難しくなってきているのかもしれない。

Javaは今後しばらくの間は、Mainstreamであり続けるだろう。少なくともあと数年で廃れるような、そんなやわな言語ではない。増え続ける技術を活かすかそうでないかは、結局それを利用する開発者によって左右される。「走りながら武器を拾え」という言葉の通り、今後もJavaに注目し、学習を続けていくべきだろう。

関連サイト


特別企画


注目サイト