4月5日、7年ぶりのJavaOne 2日目です。初日のJava Strategy Keynote に続いて、今朝は“ Java Technical Keynote” と題した基調講演が行われました。場所は前日同様 六本木アカデミーヒルズ49です。
昨日に続いてMCはJavaOne Tokyo 2012実行プロジェクトリーダーの伊藤敬氏。残りの時間を目いっぱい楽しんでほしいと挨拶。
コーディングの簡略化が進むJava 7~Java 8
テクニカルキーノートは、初日のキーノートの内容を承け、より技術的に掘り下げたものです。伊藤氏の紹介を受け最初に登壇したのは、Java Language & VMのSpecification Leadを務めるAlex Buckley氏。同氏はおもに言語仕様面での最近のJavaの進化について語りました。
「プログラマのコーディングの手間を大幅に改善する最新のJavaをぜひ使って欲しい」と語るAlex Buckley氏
2011年7月に登場したJava 7は、当初盛り込まれる予定だったいくつかのプロジェクトを後回しにして、スケジュール優先でリリースされた経緯があります。「 Java 6がリリースされたのが2006年、当時のJava 7リリース計画(2012年)では遅すぎるという意見が出ました」( Buckley氏) 。
そこで、開発に時間がかかるものを分離した「プランB」が企画され、話し合いの末これがJava 7としてリリースされることになったのです。
当初のJava 7(2012年中盤リリース予定だった)のフィーチャ
こうしてリリースされたJava 7の目玉としてまずBuckley氏が挙げたのが「Project Coin」と呼ばれるJavaの言語仕様の変更です。コードを書きやすくするいくつかの文法の簡略化が含まれます。これらのうち、複数の例外を一度に記述できる"Multicatch"や、StringをSwitchの条件判定に使えるようになったこと、例外処理後にclose処理が自動的に行われるスーパータイプのClosableインタフェースなどが紹介されました。
<>(Diamond)は、左辺の変数定義を右辺に自動的にコピーするようコンパイラが解釈する
一方、後のバージョン(Java 8)に回った大きなフィーチャはご存じ「Project Lambda」と「Project Jigsaw」です。これらによりJavaに「革新的な進化がもたらされる」とBuckley氏は言います。
Project Lambdaとは要するに、C#や最近のスクリプト言語で実装の進む「ラムダ記法」をJavaでも使えるようにしようというものです。これにより、変数型や関数の記述などが大幅に簡略化されます。
何千人もの学生の中から得点の最も高い生徒を選び出す例、非常に簡単に記述できる
「Project Jigsaw」は、大規模なプログラムのための機能です。大規模なプログラムでは、依存するパッケージ(多くはjarファイル)が非常に多くかつ相互依存し合っているため、開発者はこれらの管理に大きな労力を使います。Project Jigsawではこうしたパッケージをモジュール化し、自動的にロードできるしくみを提供します。クラスパスのアグリゲータも定義できるほか、jarファイルのクラスをrpmやdeb形式のファイルとしてモジュール化することもできるようになります。
このほかJava 8ではJavaScriptも統合される(Project Nashorn)とのことです。さらに次のバージョンとなるJava 9、そしてJava 8の機能の実装が進むOpenJDKの紹介でBuckley氏は話を結びました。
Java 9で予定されている新機能
最もリッチなUIをどんなプラットフォームにも提供できる-JavaFX 2.0
次に登壇したのは、Java Chief Client ArchitectのRichard Bair氏です。JavaFXの最新事情について語りました。
Richard Bair氏
2011年にリリースされたJavaFX 2.0は、昨今クライアントとして無視できない実装数となってきたスマートフォンやフィーチャフォン、タブレットにもシングルツールセットで対応できる、真のクロスプラットフォーム環境となっています。
Java環境に完全に組み込まれたことで、Javaプログラマは従来の知識でプログラミングできるほか、来るべきProject LambdaやProject Jigsawの機能も利用できるようになるとのことです。
こうした概要の説明の後、JavaFX UI controls teamのJonathan Giles氏によるデモが行われました。
JavaFXのサンプルアプリとして付属しているJavaFX Ensembleは、WebKitでできており、ソースとドキュメントを参照しながらサンプルを確認できるようになっています。NetBeansなどの開発環境からソースを変更して、その効果を見ることもできます。
JavaFX Ensembleのデモ
架空の車ディーラサイトのデモ。SVGコンテンツをFX内に取り込んでいるほか、デザインをCSSで表現
このほか、H.264のHDビデオや、Mac OS、Linuxのサポート予定などが紹介されました。
PaaS-クラウド環境にフォーカスしたJava EE 7
続いて、Java EE and Enterprise Java ArchitectのMike Keith氏による次世代のエンタープライズプラットフォームJava EE 7の紹介です。
Mike Keith氏
同氏はJava EE 7を「革新的なテクノロジ」として紹介し、「 我々のビジネスのやり方を変えるもの」と説明します。これまでのJava EEは、サービスを提供するためのプラットフォームでしたが、Java EE 7は「これ自体がサービスとなるのです」( Keith氏) 。従来のAPIやJava SEなどのAPIを使えるほか、クラウド環境に対応したAPIが追加されます。中にはより使いやすくなるJMS 2.0やCaching API、JSON API、RESTなどが含まれています。
クラウドが登場して、これまでアプリケーションアドミニストレータだけだったエンタープライズ開発に、より多くのロール、役割、参加者が必要になったと言い、これに対応するためマルチテナンシーが採用されます。アプリケーションインスタンスがテナント別となり、テナントを識別するIDを発行することで、テナント別に1つずつアプリケーションインスタンスが用意されます。
Java EE 7に追加される予定の機能(JSR)
KindleがJavaベースなのを知っていましたか?
次にJava Products GroupのPrincipal Member of Technical Staff、Roger Riggs氏、そしてMobile and Embedded Technologies Senior TechnologistのTerrence Barr氏が壇上に上りました。Java MEとEmbedded Javaについてのお話です。
冒頭、Riggs氏は今や100億を超えるデバイスや端末にJavaテクノロジが利用されていることを述べ、どんどん多機能化するデバイスのために、Java MEもJava SEのフル機能をサポートする方向に向かっていると紹介します。「 ミッドレンジからハイエンドまではJava SEでカバーします」( Riggs氏)
Riggs氏は持参したKindleを手に「ここにもJavaが使われていますが、知っていましたか?」とアピール。
ここでTerrence Barr氏が説明をバトンタッチ。Java MEをSEに近づけていくと語ります。ツールチェーン、ライブラリ、フィーチャAPI、そしてランタイムも統合していくことで、標準のJDK JavaCコンパイラでMEの開発ができるようになります。開発時のデバイスエミュレーションも容易になるとのことです
Terrence Barr氏
とはいえ、デバイスによっては、まだまだ限られたリソースしか利用できない機器も多数あります。そういった機器向けにはJava ME Embedded Clientが用意されています。こちらはARMやMIPS、Cortexなど、従来のJavaがサポートしていない環境や、Linuxなどの環境上でフットプリントを小さく動かすことができます。
さらに今後重要となるのが「デバイス 対 デバイス」のビジネスです。こうした需要に対応するため、CLDC(Connected Limited Device Configuration)という通信デバイスに特化した高パフォーマンスのJava VMが用意されています。これで「次の500億デバイスに対応する足がかりができるのです」( Barr氏)
続けてRoger Riggs氏が再び説明に上り、次世代の携帯電話向けプラットフォームとしてOJWC(Oracle Java Wireless Client)を紹介しました。
OJWCによって、時刻表、電話帳、モバイルコマースなどを連動して利用できる環境が簡単に構築できると言います。
そしてモバイル向けの開発ライブラリとしてLightwaight UI Toolkitを紹介。Java MEのSDKに標準で用意されており、リソースの少ないデバイスには重いFXやSwingを使いたくない場合に最適とのことです。
さらにJavaアプリの最小実行環境としてJavaCardが紹介されました。4kバイトのメモリしかありませんが、アプリの実行状況を把握する機能を持ち、14億を超える実装実績があります。
最後に、これらを統合して開発、そしてアプリケーション利用できるJava開発環境Java ME SDKのポテンシャルを紹介、これからの携帯デバイスでもJavaが中心的な役割を果たすと結びました。
この後、伊藤敬氏が再び壇上に上り、今年サン・フランシスコで開催されるJavaOneは今後のキーとなるテクノロジが現れるのでぜひ注目、できれば参加して欲しいとアピール。残り半日のJavaOneを大いに盛り上げるキーノートでした。