日本の開発者コミュニティが次世代Java仕様策定に貢献、Lambdaを手に入れたJavaテクノロジのその先へJava Day Tokyo 2015基調講演(2/3 ページ)

» 2015年05月01日 05時00分 公開
[星暁雄ITジャーナリスト]

20年かかってLambdaを手にしたJava

 基調講演で語られたJava 8のLambdaとStream APIは重要な変化だ。ここで、歴史的な経緯を振り返っておきたい。

 Lambdaは、Java言語仕様に新たに関数型プログラミングの基本機能である「ラムダ式」を付け加える。Stream APIは、ラムダ式を利用してコレクション操作を記述する。従来は繰り返し処理(ループ)として記述していたプログラミングロジックを、Stream APIとLambdaによりコレクション操作として記述できるようになる。よりシンプルで現代的な記法を活用でき、性能の改善や並列処理への対応という重要なメリットを得られる。

 Javaテクノロジの分野でも関数型プログラミングは重要になるという認識は、少なくとも10年前にはすでにあった。10年前の2005年に開かれたJavaOne Conferenceでのことだが、当時のサン・マイクロシステムズの社員が「クラウドの時代、関数型プログラミングの重要性は高まる」とコメントするのを筆者は聞いている。それから10年かかってしまったが、Javaテクノロジの本流にLambdaとStream APIが加わったことは重要な変化といえるだろう。

壇上で行われたJava20周年を祝う一幕

 さらに以前、1990年代前半のJava言語の黎明期にも、すでに言語仕様をめぐる議論はあった。情報家電のための技術としてJames Gosling氏が作ったプログラミング言語(後に「Java」と名付けられる)の仕様に、上司だったBill Joy氏が文句を付けたという逸話が伝わっている。「クロージャやジェネリクスのようなモダンな言語仕様が、なぜないのか」とBill Joy氏は指摘したというのだが、設計者のGosling氏はC++の仕様をよりシンプルにしたオブジェクト指向言語を望んでおり、自らの主張を曲げなかった。それから20年以上の時間がかかったが、Javaはジェネリクスを取り入れ、ラムダ式を取り入れたのだ。

 Java言語がLambdaをサポートするより以前から、JVM言語(Java仮想マシン上で動作するプログラミング言語)には関数型プログラミングをサポートする言語が複数あった。Groovy、JRuby、Clojure、Scalaなどだ。

 これらJVM言語が先行していた中で、本流であるJavaテクノロジへのLambdaの取り入れが最近までかかった理由の一つは、ある時期のJavaテクノロジの開発スピードが極端に落ちていたことだ。Java 6(Java SE 6)のリリースは2006年だが、Java 7のリリースは2011年と約5年の間隔が空いた。この間、Javaテクノロジの実質的な開発元であるサン・マイクロシステムズ社の業績が落ち込みオラクル社に買収されるという大きな変化があった。この停滞期から脱して、今のオラクルは2年間隔でのJavaのメジャーアップデートを目指している。Lambdaを取り入れたJava 8のリリースは2014年であり、2016年にはJava 9のリリースを予定している。

Javaテクノロジのデモではロボット、IoT、クラウドを取り上げる

 テクノロジに関するイベントでは、主催者側が見せるデモンストレーション(デモ)は要注目だ。どのような応用分野に注目しているかが分かるからだ。この基調講演では4種類のデモを見せた。分野は、ロボット、IoT、クラウドである。

 最初のデモでは、ソフトバンクグループのロボットメーカーである仏アルデバランロボティクス社が開発したロボット「Pepper」のJava SDKを紹介した。PepperのOSにあたる「NAOqi」の機能群へのラッパークラスを提供し、Java言語でロボットプログラミングができるようにする。

Pepperのデモ(動画)

 2番目のデモでは、ルネサス エレクトロニクスが組み込み用プロセッサーとインターネットを結び付けるIoTのデモを見せた。同社のRZ/A1Hプロセッサー搭載のマイコンボード「GR-PEACH」(2015年6月発売予定)を載せた電動カーを「バス」に見立て、停留所に着くたびにTwitterにステータス(車内の混み具合と気温)をツイートする。このようなデバイスとTwitterを連携するIoTのデモを、Javaを使うことで短期間に構築できた。RZ/A1Hプロセッサーは10MBのSRAMをオンチップで搭載することから、簡単な回路設計、基板設計でIoT向けのデバイスを作ることができるとアピールした。

ルネサス エレクトロニクスのデモ

 「ノード側を担う者からすると、IoTへの取り組みは難しく見える。今回のデモでは、ボードがmbedをサポートしていたので、その上にJava MEを載せることがすぐできた。こんなに簡単にクラウドにアクセスできるのは、素晴らしい世界だと実感した」(同社)。チップ、ボードからインターネットサービスまでの「距離感」を縮めるツールとして、Javaテクノロジは有効だとアピールした。

 3番目のデモは、米オラクルが用意したものだった。自動車の操縦システムに見立てた装置が壇上に置かれている。装置には複数のボードコンピューター、ハンドル、アクセルペダルなどが取り付けられている。ハンドルにはタッチセンサーが付いていて、運転中に指示を出すことができる。この装置を使い、Gフォース(加速度)の可視化や、遠隔データ収集などが可能となる様子を見せた。また、電気自動車の予防保守を想定し、バッテリの寿命が来る前にそれを察知し、自動的に修理工場の予約も取れる、といったユースケースを紹介した。

「Java Car」のデモ(動画)

 4番目のデモは、米オラクルのクラウドサービス「Java Cloud Service」のデモである。WebLogicと比較しながら、パブリッククラウドとJavaの組み合わせでサービスの構築、管理が可能となる様子を見せた。

「Java Cloud Service」のデモ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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