Java開発者の年次カンファレンス、JavaOne 2013のテクニカルキーノートを中心に、Java 8で導入されるLambdaの革新性、HTML5/JavaScriptサポート、Raspberry Piベースのタブレット「DukePad」などについてお伝えする。
Javaの最先端技術や、まだロードマップにも取り込まれていない研究段階のプロジェクトなどを紹介するテクニカルキーノートは、JavaOne初日にストラテジーキーノートに続けて行われた(参考:「俺たちのJavaは、まだまだこれからだ」未来の鍵はInternet of Thingsにあり?〜JavaOne 2013まとめレポート(前編))。
Oracle Open Worldを押しのけて(?)確保したMosconeセンターでは、3時間続けざまのキーノート(基調講演)でJava開発者の体力が試された。本稿では、テクニカルキーノートの模様と、いくつかのテクニカルセッションの模様をハイライトでまとめて紹介する。
テクニカルキーノートを取り仕切るのはチーフアーキテクトのMark Reinhold氏だ。Reinhold氏は、「すでにデファクトスタンダードの地位を築いているJavaをより良くするように、オラクルは積極的に動いている」と強調した。
「これまでのJavaの数々のバージョンの中で革新的(Revolutionary)なリリースは、「ジェネリクス」を導入したJava 5だ。『Project Coin』によって数々の文法を改善したJava 7は革新的とまではいかないものの、いくらかの進化(Evolution)を遂げたリリースだ」(Reinhold氏)という。最後の革新があったJava 5のリリースは2004年でもう10年近く前の話だ。
今後もJavaは革新を進めていくが、あくまでJavaがJavaらしくあるために、Javaの父であるJames Gosling氏の「feel of Java」を大切にしているという。次のJavaの改革の旗振り役として挙げたのは、もちろんJSR-335として仕様が策定されているLambdaだ。Reinhold氏は「LambdaはJavaの初期リリース以来、初めてJVM、言語、そしてライブラリをまたがって慎重に慎重にデザインされた仕様である」とし、詳しい説明をJavaの言語アーキテクトであるBrian Goetz氏に譲った。
Goetz氏は、「プログラミングとは適切な抽象化レベルを探すことであり、その面においてJavaは成功している。そしてLambdaはJavaらしさを保ちながら、コードをより一層シンプルにすることができる」と簡単なコード例で説明。
コレクションから特定の条件に合致するデータを取り除くという処理について、whileループを使うコード、Java 8で導入されるPredicateインターフェイスを使ってシンプルにしたコード、そしてLambdaを使って実質一行にまで簡略化したコードを披露した。
似た説明は昨年もあったが、今は仕様策定が完了しており、Java 8のデベロッパープレビュー版もリリースされているので、「今書けば、そのまま正式版のJava 8でも動く」という意味では大きい。また、Lambdaは文法的にシンプルなだけにとどまらず、パフォーマンス面でも優れているという。これはJava 7で導入されたInvoke Dynamicを活用することで、匿名クラスを内部的に生成することなく実行されるためだ。
またLambdaはメニーコアが当然となった今のコンピュータアーキテクチャに重要な並列処理も得意だ。マルチスレッドによる並列処理はJava 7で導入された「Fork/Join」により幾分シンプルに書けるようになったが、Lambdaで導入されるAPIの中でも中心的なStreamインターフェイスは、コレクションに対する処理を圧倒的にシンプルに並列化できることを示した。
Goetz氏は、「総じてLambdaは『Easier to write, read, maintain』(簡単に書けて、簡単に読めて、簡単にメンテナンスできる)」と締めくくった。
Copyright © ITmedia, Inc. All Rights Reserved.