X

An Oracle blog about WebLogic Channel

“Internet of Things”、“Device to Datacenter”の時代を迎えてますます広がる組み込みJavaの可能性──Java Day Tokyo 2013レポート

Guest Author
サーバやPC、あるいはスマートフォンといった従来のデバイスに加えて、家電製品や各種センサー、そしてICカードなど、さまざまな“モノ”がインターネットに接続される「Internet of Things(IoT)」と呼ばれる時代が到来しつつある。これを受け、オラクルは「Device to Datacenter(D2D)」というコンセプトの下、それらの“モノ”からデータセンターで運用されるプラットフォームまでを含む幅広い領域に対して、多種多様なテクノロジーを提供していくことを表明している。2013年5月14日に東京で開催された「Java Day Tokyo 2013」において、日本オラクル Java Embedded Global Business Unit シニアセールスコンサルタントの笹沼満氏が、このD2Dのキー・テクノロジーとして「Java」の重要性を訴えた。(川添貴生)

Internet of Things時代におけるJavaの優位性

日本オラクル Java Embedded Global Business Unit シニアセールスコンサルタントの笹沼満氏

 Java Day Tokyo 2013では、Java SE、Java EEをテーマにしたセッション・トラックのほか、Java Embedded(組み込みJava)に関するセッション・トラックも設けられ、Internet of Things時代を迎えて活用の機会がますます広がりつつあるJavaの現状と将来を展望するセッションが実施された。その1つであるセッション「Device to Data Centerを実現するJava Embedded Suite」の講師を務めたのが笹沼氏だ。


 講演の冒頭、笹沼氏はオラクルが提唱するD2D構想で核を担うJavaの重要性を次のように強調した。


 「デバイスからサーバ・サイドまでを含め、Javaによって一気通貫でシステムを作ることにより、現在はエンタープライズ・アプリケーションを開発している開発者が組み込みデバイスの開発を行うことも可能になるなど、開発効率の向上やコスト削減を実現できる」


 1995年の誕生当初から「Write Once, Run Anywhere」というスローガンを掲げてきたように、開発したプログラムをさまざまなプラットフォームで実行できることがJavaの大きな強みだ。その中には組み込みデバイスも含まれており、実際にデジタル複合機(MFP)や各種診断装置、Blu-rayプレーヤー、そしてICカードなど、今日では多種多様なデバイスがJavaによって動いている。


 このようにJavaが広範に浸透している理由を、笹沼氏は次のように説明する。


 「従来の組み込みの世界では、ハードウェアやOSが新しくなれば、その上で実行するプログラムも開発し直さなければならなかった。最近では仮想化技術を使う例も出てきているが、その際にはベースとなるOSと仮想レイヤで動作するOSのそれぞれをメンテナンスしなければならず、負担が大きい。


 しかし、最初からJavaでプログラムを開発しておけば、ハードウェアやOSが変わってもJVM(Java仮想マシン)さえ用意すれば従来のプログラムをそのまま実行できるので、開発効率やメンテナンス性を大幅に高められる」(笹沼氏)

組み込み開発に最適化されたJava SE 7 Embedded


 こうした組み込み用途向けに提供されているJavaプラットフォームの1つが「Java SE Embedded」である。サーバ/デスクトップ版のJava SEと100%の互換性を維持しつつ、組み込み用途では不要なライブラリの削除などによって小フットプリントの実行環境(JRE:Java Runtime Environment)を実現しているほか、キーボードやマウス、ディスプレイなどの入出力機器を持たないデバイス向けに実装を簡素化したヘッドレス版も提供されている。


 また、メモリの最適化も図られており、小メモリ環境での起動時にデフォルト割り当てサイズを削減していることも特徴の1つだ。なお、Java SE Embeddedはx86とARM v5/v6/v7、PowerPC向けのLinux版が提供されている。


 続いて笹沼氏は、ARMを搭載したシングルボード・コンピュータである「SABRE Lite」を利用したgccとJavaのベンチマーク結果に言及した。このベンチマークでは、素数や行列、数独の解を求めるアルゴリズムをgccとJavaのそれぞれでビルドし、Linuxのtimeコマンドによって処理時間を計測したという。


 「例えば、数独の解を求めるアルゴリズムの実行結果を見ると、gccで-O2オプションを付けるとさすがに速いが、デフォルトのgccと比べるとJava SE 7のクライアント版/サーバ版のほうが高速という結果になった。しかも、この結果にはJVMの起動と終了に要する時間も含んでいるので、実際の環境ではさらに速くなる可能性がある。また、ベンチマークによっては、-O2オプションを付けたgccよりもJavaのほうが速いケースもあった。


 登場当初の印象から、現在も『Javaは遅いので組み込み用途には向かない』と考えている方がいらっしゃるかもしれないが、この結果を見れば必ずしもそうではないことがわかっていただけるだろう。ぜひ皆さんも実機で現在のJavaのパフォーマンスをご確認いただきたい」(笹沼氏)

Java SE 8以降の組み込みJavaプラットフォーム


 笹沼氏は、組み込みJavaのロードマップについても説明した。


 現状、組み込みJavaの規格としては、ICカード向けの「Java Card」、携帯電話やメーター、通信モジュールなどでの利用を想定した「Java ME CLDC(Connected Limited Device Configuration)」、テレビやセットトップ・ボックス、ネットワーク機器向けの「Java ME CDC(Connected Device Configuration)」、そしてスマートフォンやタブレット端末などリソースに余裕のあるデバイスで利用することを想定した「Java SE Embedded」の4つが存在する。


 笹沼氏によれば、Java SE 8以降、これが3つの規格に集約されるという。


 「Java SE 8では、従来のCDCがJava SE Embeddedに統合され、CLDCはJava MEとして存続する。それにJava Cardを合わせた3つのプラットフォームで組み込み環境をサポートしていくかたちになる。


 従来CDCを使っていた領域がJava SE Embeddedになるため、フットプリントが増えるのではないかと危惧されるかもしれないが、Java SE 8リリースのタイミングで『Compactプロファイル』が提供される。これは、ハードウェアのリソースに合わせてサイズの異なるプロファイルを選べるというもので、最も小さな『Compact1』を選択すれば、ROMサイズを10MB程度にまで抑えることが可能だ」(笹沼氏)


 さらに笹沼氏は、リッチなユーザー・インタフェース(UI)を備えたインターネット・アプリケーションを実現する「JavaFX」の組み込み対応についても説明した。


 現状のJavaにおけるUIはX11ライブラリなどを使ううえ、AWTやSwingの実装を含め52MBのROMサイズが必要だが、今後はOpenGLを利用することで16MB程度にまで抑える計画だという。JavaFXが使えるようになれば、組み込みデバイスでもUIの柔軟性を大幅に高められることを考えると、JavaFXの組み込み対応は大いに期待したい動きだ。

Webサーバやデータベースをパッケージ化したOracle Java Embedded Suite


 笹沼氏が次に紹介したのは「Oracle Java Embedded Suite」である。これはLinuxにおけるLAMP(Linux/Apache/MySQL/PHP)のように、組み込み開発に必要なモジュールをパッケージ化したものだという。


 「これまではJava SE Embeddedをダウンロードしても、Webサーバやデータベースが含まれていなかったため、それぞれ別途入手する必要があった。そこでJava Embedded Suiteでは、Java SE Embeddedに加えて、アプリケーション・サーバである『GlassFish for Embedded Suite』やRESTfull Webサービス・フレームワークの『Jersey』、JDBC対応のRDBMS『Java DB』をパッケージ化しており、ダウンロードしたらすぐにWebサーバとデータベースを使ってアプリケーションが構築できるようになっている」(笹沼氏)


 このパッケージに含まれるGlassFishは当然フルサイズのものではなく、組み込み用途で利用できるようにした小フットプリント版である。また、Java DBは通常のJDKに含まれているデータベースと同じく、Apache DerbyのOracleブランド版だ。現在オラクルでは、このパッケージをOTN開発ライセンスの下、無償でダウンロード提供している。

高度なデータ処理をデバイス/ゲートウェイ上で実現するOracle Event Processing for Oracle Java Embedded


 最後に笹沼氏は、「Oracle Event Processing」の組み込み分野での活用例を紹介した。


 Oracle Event Processingとは、いわゆる「複合イベント処理(Complex Event Processing)」を可能にするソリューションであり、デバイスなどが生成した大量のデータをイベントとして捕捉し、フィルタリングなどを行ったうえで次の処理フェーズに送るといった処理を高速に行う。これを組み込み用途で利用できるようにしたものが「Oracle Event Processing for Oracle Java Embedded」である。


 「デバイス側で生じた大量のイベント情報をすべてデータとしてデータセンター側のサーバに送信していると、サーバ側の負担があまりにも大きくなってしまう。そこで、デバイスや、その先にあるゲートウェイ上でOracle Event Processing for Oracle Java Embeddedを動作させてフィルタリングを行い、ノイズと見なしても問題のないデータを事前に除去することにより、サーバ側の負担を軽減することができる」(笹沼氏)


 Oracle Event Processing for Oracle Java Embedded上で動作するアプリケーションはJavaで開発することが可能なほか、標準のSQLをストリーミング・データ向けに拡張した言語「CQL(Continuous Query Language)」によって開発することもできると笹沼氏は説明する。


 「ストリーミング・データのフィルタリングやパーティショニング、集約や相関などの処理が行える。また、時間幅を指定することも可能であり、例えば1分間における温度の平均を求めるといったこともCQLで簡単に記述できる」(笹沼氏)


 さまざまなデバイスがインターネットにつながる Internet of Thingsの時代が本格的に到来すれば、これまで以上に組み込みソフトウェア開発の重要性が高まることは間違いない。その中でJavaをどう活用していけるのか考えるうえで、笹沼氏のセッションは多くの示唆を与えてくれたのではないだろうか。

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.