最新のJava SE 8、Java ME Embedded 8を活用すれば、あなたもIoT時代の開発にいち早く対応できる

Oracle Java & Developers編集部
2014-05-19 18:00:00
  • このエントリーをはてなブックマークに追加

米国時間の2014年3月18日、およそ3年ぶりのメジャーバージョンアップとなった「Java SE 8」がリリースされた。さらに、組み込みJava製品であるJava ME Embedded 8も米国時間4月30日から提供が開始されている。今回のバージョンアップでは、言語仕様が拡張され数多くの機能追加が行われている。この機能拡張の1つの方向性として、「モノのインターネット」と呼ばれる「Internet of Things(IoT)」への対応を挙げることができる。

Java SE 8とJava ME EmbeddedはIoTでの利用に最適化

 Javaを使ってアプリケーションを開発するのは、ごく当たり前。業務向けアプリケーションなどは、ほとんどがJavaで実装されている。さらに、各種のパッケージ製品やミドルウェア、フレームワークなども多くがプログラムはJavaで記述されている。「IT業界における開発言語のスタンダードはJava」と断言してもいいくらいだ。

 とはいえ、まだJavaが普及途中の領域もある。それが組み込みの世界だ。組み込みでもリソースが豊富に準備できれば、Javaも数多く使われている。しかし、家電製品などリソースを増やすことがコスト増に直結する場合、あるいはセンサーなどそもそもリソースをたくさん用意するのが難しい場合には、ソフトウェアのフットプリントを小さくするためにC言語などを用いることも多い。

 じつはそんな状況が変化してくる可能性がある。それが今後急速に拡大するであろうIoTの世界、そこで活用される組み込みシステムには新たな要求があるからだ。これまでの組み込みシステムの多くは、組み込まれた機器なりを制御するものだった。それが、IoTとなれば通信機能を搭載しネットワークに接続する。あらゆるモノが接続性を持ったデバイスとなり、そこから得られるデータをネットワーク越しにサーバーへ収集し活用する。

 莫大な数のデバイスが登場するので、そこから得られるデータも莫大になる。そのため、ある程度デバイスサイドで処理をし、適切なデータだけをクラウド上のサーバーなりに送る仕組みが必要だ。さらに、ネットワークに接続するので、センサーなどでも適切なアクセス制御をデバイスごとに行いセキュリティを担保する必要がある。

 これらIoT時代の組み込みの要求に応えるのが、新バージョンのJava SE 8でありJava ME Embedded 8だ。たとえばJava SE 8では、「コンパクト・プロファイル」が新たに導入された。これは、対象デバイスのメモリ、CPUリソースに応じJava SEのライブラリをサブセット化できるようにしたもの。10MB程度のメモリリソースのプロファイル1、17MB程度のプロファイル2、24MB程度のプロファイル3の3つが用意され、リソースに応じ適宜選択できる。

 より小さな組み込みシステムのフットプリントに対応するJava ME Embedded 8でも、用途に応じた3種類のプロファイルが用意されている。Java ME Embeddedのすべての機能とAPIを搭載するフル・プロファイルの場合、RAMサイズは2MBになる。マルチタスキング、アプリケーション管理、共有ライブラリやイベントなどを中心に集められたAPIを搭載するスタンダード・プロファイルでは、RAMサイズは最小で512KBだ。さらに最小限のアプリケーション・モデルでたとえば通信モジュールの実現を目的にしたAPIなどだけを集めるようなミニマム・プロファイルでは、最小なら128KBのRAMサイズとなる。これらは基本的なアーキテクチャがモジュール構造となっており必要に応じAPIなどを選択可能だからこそ実現できる。これで、フットプリントは最適化することになる。

IoTデバイスにJavaを搭載することでクラウドと統一された開発、セキュリティが提供可能に

 このような進化を評価し、Java ME Embedded 8をいち早く取り込み新たなIoT対応戦略を掲げる企業も増えている。携帯電話などの通信モジュールで世界No1シェアを誇る村田製作所もそんな企業の1つだ。同社では、独自のWi-FiモジュールとCPUを組み合わせてモジュール化した「WLAN Smart Module」を提供している。リアルタイムOSもサポートしており、既に多くの機器で利用されている。

 WLAN Smart Moduleは小型化が容易でハードウェアコストを抑制しながらリアルタイムな応答性を実現できる。しかし、CPUやOSに依存した開発環境となっており、IoTでは必須となるクラウドとは分断された開発だ。結果的に機能的な制約も多く、将来求められる高機能化には課題を残していた。

 そこで、現状2チップ構成のWLAN Smart Moduleを、よりコンパクトで低コストを求められるシンプルなアプリケーション用として1チップ構成アーキテクチャのものと、高性能でリッチな機能のアプリケーションに対応するためにCPUやメモリリソースを追加したものへと、ラインアップを分ける戦略を立てたのだ。

 後者については、ソフトウェアプラットフォームにJava ME Embedded 8を採用することにした。これにより、クラウドおよびサーバーアプリケーション開発とIoTデバイスの開発連携が容易になり、多機能化やセキュリティ担保などにも柔軟に対応できるようなる。これで村田製作所は、WLAN Smart Moduleを汎用IoTプラットフォームとしての位置づけ向上を目指すのだ。

Road Map for WLAN Smart Module
Road Map for WLAN Smart Module

Java Day Tokyo 2014で

 IoTへの対応以外にも、Java SE 8には画期的な進化が多数ある。その1つが、関数型プログラミング記法であるラムダ式への対応だ。これは昨今注目されている関数型のプログラミング・スタイルを取り入れたもので、Stream APIライブラリと組み合わせて並列処理を行うプログラムを簡潔に記述できるようになる。これによりマルチコア、マルチスレッド化が進む昨今のCPUの進化を、最大限に活用できるのだ。

 さらに「Date and Time API」の追加や新しいJavaScriptエンジンである「Nashorn」の導入など、興味深い拡張がたくさんある。これら最新のJavaの進化に興味があれば、5月22日に東京で開催される「Java Day Tokyo 2014」に参加するといいだろう。前述のラムダ式の対応を開発したオラクル・コーポレーション Java Platform Group Principal Member of Technical StaffのStuart Marks氏も来日し、2つのセッションを行う。ラムダ式がいったいどのようなものでどのように活用すればいいか、開発者自らが語ってくれるだろう。

 その他にも、IoTでJavaを活用する際に参考となるセッションも用意されている。初心者からスキルの高いJavaエンジニアにまで対応するセッションが用意されており、最新Javaの詳細を知り、今後のJavaが進化するであろう向性を探るためにも最適な場となるはずだ。