【レポート】

JavaOne Tokyo 2005 - 見えてきたDolphin、Mustangのさらに向こうDolphin世代のJavaはどうなる?

    杉山貴章  [2005/11/10]

    JavaOne TokyoのDay-0にあたる8日、Peter von der Ahe氏によるテクニカルセッションはJavaのさらなる進化を期待させるものであった。同セッションでは次期JavaプラットフォームであるMustang(Java SE 6)の、さらに次のバージョンとなるDolphin(Java SE 7)について、現在検討中のいくつかの新機能についての紹介が行われた。

    まず最初に触れられたのがJava言語の背景にある「可読性」「シンプルさ」そして「互換性」の確保という原則である。これは何よりも大切にすべきものであり、Javaの拡張はこの原則のもとで行われてきたということが強調された。

    Peter氏は、今後もJava言語にはさらなる拡張が加えられると宣言する一方で、Javaでサポートされる可能性のない機能の代表格として以下のようなものを挙げている。

    • 多重継承
    • 演算子オーバーロード
    • AOP(Aspect Oriented Programming)
    • プリプロセッサ/マクロ
    • 多重ディスパッチ
    • 複数返り値

    現実にはこれらの機能のJavaでのサポートを望む声は多い。筆者もJavaOne Tokyoの会場において、Javaはそろそろ(多重継承のサポートなどを含む)言語仕様の大々的な見直しを行うべきではないかという声を耳にしている。Peter氏によれば、これらの機能のサポートについてはいずれも一度は議論の対象となり、その上でサポートするべきではないという結論に至ったという。その最も大きな理由は、冒頭にも挙げられたJavaの理念である「可読性」「シンプルさ」そして「互換性」の維持が困難になるということである。

    同氏は、Java言語の拡張はこれらの最も基本的な理念を守った上で行われなければならないと前置きした上で、現時点でサポートが検討されているいくつかの機能を紹介した。

    まず第一に挙げられたのが、言語レベルでのXMLのサポートである。JavaでXMLを扱う方法としては、歴史的にはまず最初にDOMやSAXなどといったAPIがあった。これらはXMLを解析するためのコードをJavaに埋め込むという手法であり、Javaコード中でXMLを直接使用できるわけではない。それに対してJDOMやJAXBといったAPIが開発された。JDOMはDOMベースのAPIで、よりXMLに近い形式で解析コードを記述できるようになっている。JAXBはXMLをJavaオブジェクトにバインディングするためのAPIで、解析のコードをJavaプログラム中に埋め込む必要はないが、XML Schemaが必須となる。

    次世代のJavaではさらに直接的に、XML文書をできるだけそのままの形でJavaコードに埋め込めるように、言語レベルのサポートを追加するという話である。具体的なアイデアとしては、XML要素を扱うためのjava.lang.XMLというようなクラスの追加が検討されているという。既存のクラスの中では、java.lang.Stringクラスに対して"..."という形で文字列を扱えるという特例が認められてる。java.lang.XMLの場合もそれと同様に<...>という形式を許可することで、Javaコード中で直接タグを記述できるようにする。

    今回のセッションでは、このアイデアの最新の情報としてjava.lang.XMLクラスをはじめとしたいくつかのクラスについて、具体的なコードの例が公開された。例えばjava.lang.XMLクラスについてはリスト.3のようなものである。

    class XML {
        Name name();
        Map<Name, Attribute> attribute();
        List<Content> content();
    }

    この機能についてはDolphinにおいて追加される予定になっている。ただし実装のためには多くの課題が残されており、今回公表された内容もまだ検討中の段階であるという。

    言語レベルの新機能としては、XMLのサポート以外に次のようなものについても言及された。

    • クロージャ/メソッド参照
    • Modularityの拡張

    クロージャの導入については、ライブラリの強化や独自の制御構造が定義できるなどといったメリットが期待できる。Modularityについては、パッケージをまとめて扱うためのsuper packageや、パッケージに対するインタフェースであるpackage interfaceなどが例として挙げられていた。ただし、これらの機能もまだ検討中の段階である。

    Javaプラットフォームとしての新機能では、JVMのバイトコードを拡張してJava以外の言語をサポートする予定があるという。ここでPeter氏が強調したのが「Javaプラットフォーム != Java言語」ということであり、Java言語は当然Javaプラットフォーム上で動作するが、同じプラットフォームでJava以外の言語が動作するようになることは歓迎するべきだと述べた。具体例としてはGroovyやJythonなどが挙げられるが、現段階ではあくまでもインタプリタが既存のJVM上で動作するというレベルである。将来的にはJavaプラットフォーム上での動的言語の動作をサポートするために、JVMに新しいinvoke命令の追加が計画されているという。

    このセッションで紹介された新機能はあくまでも全てアイデアのひとつであり、具体的な仕様や実装方法を決めるのはまだ先だという。ただし、Mustangの開発に見られるように、Sunは新しいJavaプラットフォームの開発にコミュニティや個人の開発者が参加できる機会を設けている。Mustang以降のJavaついてもいずれJCPなどによって仕様の策定が開始されると思うが、新しいアイデアのある人は積極的に参加してみるといいだろう。

    関連記事

    関連サイト

    新着記事

    特設サイトの情報

      求人情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      転職ノウハウ

      あなたの仕事適性診断

      4つの診断で、自分の適性を見つめなおそう!

      Heroes File ~挑戦者たち~

      働くこと・挑戦し続けることへの思いを綴ったインタビュー

      はじめての転職診断

      あなたにピッタリのアドバイスを読むことができます。

      転職Q&A

      転職に必要な情報が収集できます

      スカウト転職する

      企業からアプローチのメッセージが届きます。

      マイナビニュースマガジン