Javaは「より簡潔に」「より簡単」に書けるように進化しています。第1回は、Javaが今後どのように進化していくのか、またJavaを使った開発環境はどのように変わっていくのかを見ていきます。

 プログラミング言語のJavaは、企業システムからクラウド開発、スマートフォンのアプリケーション開発に至るまで、幅広く使われています。利用されている範囲が広く、開発者にとっては、なじみ深いプログラミング言語ではないでしょうか。

 さらに2011年7月末には、5年ぶりとなるJavaの新バージョン「Java SE 7」がリリースされて、ますます使いやすくなりました。この第1回では、Javaを取り巻く現状を把握すると共に、今後Javaがどのような進化の道筋をたどるのかを見ていきます。

Javaは三つの柱をベースに進化

 Javaの進化を語る上で、中心になる三つの事柄があります。それが(1)Javaの言語仕様、(2)新機能を実装するAPI(Application Programming Interface)、(3)Javaの実行環境のJava仮想マシン(以下、JVM)の三つです。

 Javaは、主にこの3本の柱をベースに進化を続けているのです(図1)。

図1●Javaを構成する三つの柱をその変更点
図1●Javaを構成する三つの柱をその変更点
[画像のクリックで拡大表示]

 言語仕様はより簡潔にプログラミングを記述できるように、APIはパラレル処理の実装を助けるために、JVMではRubyやPython、JavaScriptといったスクリプト言語を効率よく取り込めるように、とそれぞれ進化を続けています。詳しいコードは第2回以降で解説するとして、第1回では進化の背景や目的について見ていきましょう。

Javaが抱える矛盾

 Javaでプログラミングする際に、「なんでこんな煩わしいコードが必要なのだろう」と思ったことはありませんか。RubyやPythonといったスクリプト言語なら簡単に記述できるのに…、Javaだと面倒な記述が多くてうんざりした、という人は少なくないでしょう。

 しかし、Javaは型を厳密に定義することで、曖昧さやバグを排除しています。これがコンパイル言語の特徴でもあり、Javaでアプリケーションを開発するメリットの一つになっています。

 ところが現在のプログラミングは、いかに簡単にプログラムを記述して目指す機能を実装できるか、ということが注目されています。数年前からRubyが脚光を浴びている理由には、Ruby on Railsを使ったアジャイル開発や生産性が注目されたこともありますが、Rubyの言語仕様がより簡潔にコードを記述できるため、開発者に指示された結果だと筆者は感じています*1

 このように「少しでも簡潔にコードを記述したい」という要望は多いと思います。このような流れを受けてなのか、Javaの記法もシンプルに変化してきました。

 しかし、Javaは既に枯れたプログラミング言語であり、ドラスティックな言語仕様の変更を望まない人もいます。とりわけ企業利用が進んでいるJavaシステムでは、最新の技術を使いたいという要望よりは、安全にシステムを動かしたいといったニーズが強いでしょう。

 Javaは、下位互換性を保証しながら新しい機能を取り入れてきたため、プログラムが複雑化・肥大化する傾向にあります。特に顕著なのが、エンタープライズの分野です。複雑化しているため一部を変更すると影響は多岐に渡るので、なかなか新機能の実装に踏み切れないのです。

 ドラスティックな変化を望む声と、Javaで構築された既存システムを考慮に入れてゆっくりとした変化を望む声を両立させることはとても困難です(図2)。もちろんJavaの開発者の中でも意見が分かれるところでしょう。

図2●Javaが抱える矛盾
図2●Javaが抱える矛盾

 この二つの要望をいかに両立させるかを議論した結果、Javaのコミュニティでは「ゆっくりとした変化」を選ぶことになりました。従来のJavaを踏襲しつつ、いかに新しい機能を取り入れるか、ということで今現在も議論が続けられています。この決定こそが、第4回で紹介する新機能「クロージャ」や「モジュール機構」がJava SE 8へと先送りされた主な理由です。