ニュース
» 2013年11月07日 18時00分 UPDATE

ついにJavaがRaspberry Piとフラットデザインでタブレット市場に参入!?〜JavaOne 2013まとめレポート(中編) (1/5)

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開発者の体力が試された。本稿では、テクニカルキーノートの模様と、いくつかのテクニカルセッションの模様をハイライトでまとめて紹介する。

jone13_2_1.jpg 筆者が滞在したホテルには偶然「JavaOne」なるコーヒーが

すでにフォーカスはJava 8、そしてLambdaへ

 テクニカルキーノートを取り仕切るのはチーフアーキテクトの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氏に譲った。

jone13_2_2.jpg Reinhold氏(左)とLambdaの革新性を熱弁するGoetz氏(右)

 Goetz氏は、「プログラミングとは適切な抽象化レベルを探すことであり、その面においてJavaは成功している。そしてLambdaはJavaらしさを保ちながら、コードをより一層シンプルにすることができる」と簡単なコード例で説明。

 コレクションから特定の条件に合致するデータを取り除くという処理について、whileループを使うコード、Java 8で導入されるPredicateインターフェイスを使ってシンプルにしたコード、そしてLambdaを使って実質一行にまで簡略化したコードを披露した。

jone13_2_3.jpg whileループで年齢が18を超える人を取り除くコード
jone13_2_4.jpg Lambdaを使うと圧倒的にシンプルに

 似た説明は昨年もあったが、今は仕様策定が完了しており、Java 8のデベロッパープレビュー版もリリースされているので、「今書けば、そのまま正式版のJava 8でも動く」という意味では大きい。また、Lambdaは文法的にシンプルなだけにとどまらず、パフォーマンス面でも優れているという。これはJava 7で導入されたInvoke Dynamicを活用することで、匿名クラスを内部的に生成することなく実行されるためだ。

 またLambdaはメニーコアが当然となった今のコンピュータアーキテクチャに重要な並列処理も得意だ。マルチスレッドによる並列処理はJava 7で導入された「Fork/Join」により幾分シンプルに書けるようになったが、Lambdaで導入されるAPIの中でも中心的なStreamインターフェイスは、コレクションに対する処理を圧倒的にシンプルに並列化できることを示した。

jone13_2_5.jpg Fork/Joinを使った並列処理コード
jone13_2_6.jpg parallelStream()を使うと並列処理を意識することなくシンプルに書ける

 Goetz氏は、「総じてLambdaは『Easier to write, read, maintain』(簡単に書けて、簡単に読めて、簡単にメンテナンスできる)」と締めくくった。

       1|2|3|4|5 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。