Java ME World
Java ME に関する最新情報を載せていく予定です(2009年1月)。 MIDP 3.0 の概要(2009年1月)
Java ME プラットフォーム概要 Java ME プラットフォームは、制約の多い小さな機器で Java アプリケーションを動かすことを目的に作られました。このため、限られたメモリ、ディスプレイ、バッテリー容量といった環境を考慮して、プラットフォームが設計されています。 Java ME プラットフォームは、複数の技術および仕様の集合体であり、それらの技術・仕様が組み合わさって特定の機器に合わせた完全な Java 実行環境が構成されます。このような構成にすることにより、柔軟性が高まり、幅広い機器をサポートすることが可能になります。 Java ME プラットフォームは、次の 3 つの要素から構成されます。
現状、Java ME プラットフォームは、小さな携帯機器に適したコンフィグレーションと、比較的高機能なスマートフォンやセットトップボックスのような機器向けのコンフィグレーションの、大きく 2 つに分かれています。前者は Connected Limited Device Configuration (CLDC)、後者は Connected Device Configuration (CDC) と呼ばれています。 次の図をご覧ください。ここでは、Java ME プラットフォームの構成と、その他の Java プラットフォームとの対比を示しています。
Java Community Process について 現在、Java ME を含むすべての Java 仕様は Java Community Process (JCP) に従って策定されています。JCP のメンバーは多くの企業および個人で構成され、特定の企業の思惑で偏った技術が採用されることにより業界全体およびエンドユーザーが不利益を被ることがないように、オープンな形で標準化を進めていこうという試みが行われています。 新しいコンポーネントや API が作られるとき、まずは Java Specification Request (JSR) という申請が行われ、その仕様を策定するために、企業や個人が集まってエキスパートグループが組織されます。また、通常は JSR を提出した企業が仕様リードとなります。 議論の末、最終的に公開される成果物は、次の 3 つです。
通常は仕様リードの企業が上記の仕様、RI、TCK を保有し、その仕様を実装した製品を出荷する企業に対してライセンスを行っています。 現状 JCP において、オープンな議論が行われているとはいえ、いくつかの問題点も指摘されています。
これらの課題に対しては、複数の JSR をまとめたアンブレラ仕様(JTWI - JSR 185 など)である程度のプラットフォームの共通化を図る、といった試みがなされていますが、なかなか解決の難しい問題です。 Java ME の実装 現在入手可能な、主な Java ME の実装です。
CLDC 関連 CLDC 1.0 (JSR 30): Connected Limited Device Configuration (CLDC) は、携帯電話や個人向けデジタル機器のための、基本 API と VM を定義しています。2000年6月策定。 CLDC 1.1 (JSR 139): CLDC 1.1 は CLDC 1.0 の改定バージョンで、浮動小数点や弱参照のサポートなどが追加されています。CLDC 1.1 は CLDC 1.0 の上位互換です。2003年3月策定。 MIDP 1.0 (JSR 37): Mobile Information Device Profile (MIDP) は、CLDC と組み合わせて使用し、携帯電話や個人向けデジタル機器のための Java 実行環境を構成します。2000年9月策定。 MIDP 2.1 (JSR 118): MIDP 2.1 は MIDP 1.0 の改定バージョンで、ユーザーインターフェースの改良、マルチメディアやゲーム機能、通信機能、アプリケーション配信、セキュリティ機能の向上などが追加されています。MIDP 2.1 は MIDP 1.0 の上位互換です。バージョン 2.0 が2002年11月に策定、その後メンテナンスリリースとして数々の修正が加えられたバージョン 2.1 を策定。 MIDP 3.0 (JSR 271): MIDP 3.0 は MIDP 2.1 の改定バージョンで、CDC サポート、共有ライブラリ(LIBlet)、アプリケーションの同時実行、ユーザーインターフェースの改良、セキュリティ機能の強化などが追加されています。2009年12月策定。 IMP 1.0 (JSR 195): Information Module Profile (IMP) は CLDC と組み合わせて使用し、パーキングメーター、通報用無線モジュール、産業用計測デバイスといったディスプレイを持たないリソースの限られた機器向けの Java 実行環境を構成します。MIDP 1.0 の厳密なサブセットです。2003年7月策定。 IMP-NG (JSR 228): IMP-NG は IMP 1.0 の改定バージョンで、MIDP 2.0 の GUI 機能を除いた部分をサブセットしたものです。2005年11月策定。 CDC 関連 CDC 1.0 (JSR 36): Connected Device Configuration (CDC) は、ハイエンド PDA やセットトップボックスなどの組み込み機器向けの、基本 API フレームワークを定義しています。2001年3月策定。 CDC 1.1 (JSR 218): CDC 1.1 は CDC 1.0 の改定バージョンで、J2SE バージョン 1.4.2 を基にコア機能が追加されています。2005年8月策定。 FP 1.0 (JSR 46): Foundation Profile (FP) は、J2SE 1.3.1 をベースに標準の GUI を持たない組み込み機器のための API を定義しています。CDC と組み合わせて、完全な Java アプリケーション環境を構成します。2001年3月策定。 FP 1.1 (JSR 219): FP 1.1 は FP 1.0 の改定バージョンで、J2SE 1.4.2 を基に機能が追加されています。また、Java Authentication and Authorization Service (JAAS)、Java Secure Socket Extension (JSSE)、Java Cryptography Extension (JCE) といったセキュリティオプショナルパッケージを含んでいます。2005年8月策定。 PBP 1.0 (JSR 129): Personal Basis Profile (PBP) は、J2SE 1.3.1 をベースに標準の GUI を持つ組み込み機器のための API を定義しています。FP 1.0 を完全に含み、CDC と組み合わせて、完全な Java アプリケーション環境を構成します。2002年6月策定。 PBP 1.1 (JSR 217): PBP 1.1 は PBP 1.0 の改定バージョンで、J2SE 1.4.2 を基に機能が追加されています。2005年8月策定。 PP 1.0 (JSR 62): Personal Profile (PP) は、J2SE 1.3.1 をベースに AWT を基にした UI ツールキットをサポートする組み込み機器のための API を定義しています。PBP 1.0 を完全に含み、CDC と組み合わせて、完全な Java アプリケーション環境を構成します。2002年9月策定。 PP 1.1 (JSR 216): PP 1.1 は PP 1.0 の改定バージョンで、J2SE 1.4.2 を基に機能が追加されています。2005年8月策定。 Java ME オプショナルパッケージ(JTWI 関連) WMA 1.1 (JSR 120): Wireless Messaging API (WMA) は、SMS のようなワイヤレス通信のための、プラットフォームに依存しないアクセス基盤を提供する Java ME オプショナルパッケージです。バージョン 1.0 が2002年8月に策定、その後メンテナンスリリースとして MIDP 2.0 に対応したバージョン 1.1 を策定。 MMAPI 1.2 (JSR 135): Mobile Media API (MMAPI) はオーディオ、ビデオなどのマルチメディア機能をサポートします。バージョン 1.0 が2002年6月に策定、メンテナンスリリースとして MIDP 2.0 に対応したバージョン 1.1、CDC に対応したバージョン 1.2 を策定。 JTWI (JSR 185): Java Technology for the Wireless Industry (JTWI) は、携帯デバイス間の仕様のばらつきを最小化して、アプリケーションを幅広く使えるようにすることを目的として策定されたアンブレラ仕様です。CLDC 1.0、MIDP 2.0、WMA 1.1、MMAPI を含み、JTWI 準拠デバイスが共通で実装すべき要件を明確化しています。2003年7月策定。 Java ME オプショナルパッケージ(CDC 関連) RMI (JSR 66): RMI Optional Package は、Java SE の RMI (Remote Method Invocation) 機能のサブセットを定義し、分散アプリケーション環境の基盤を組み込み機器向けに提供します。最低限 CDC を必要とします。2002年6月策定。 JDBC (JSR 169): JDBC Optional Package は JDBC 3.0 API を Java ME 向けにサブセットしたものです。最低限 Foundation Profile を必要とします。2004年4月策定。 AGUI (JSR 209): Advanced Graphics and User Interface (AGUI) Optional Package は、Java SE の Swing、Java 2D Graphics、Image I/O といった高度なグラフィックス・ユーザーインターフェース機能を Java ME 向けにサブセットしたものです。最低限 Personal Basis Profile を必要とします。2006年10月策定。 Java ME オプショナルパッケージ(MSA 関連) PDA (JSR 75): PDA Optional Packages は PDA などの Java ME 機器に共通の機能にアクセスする API を追加します。FileConnection API と Personal Information Management (PIM) API の 2 つのパッケージが定義されており、それぞれ独立して実装することができます。2004年6月策定。 Bluetooth 1.1 (JSR 82): Java API for Bluetooth は業界標準の近距離無線技術 Bluetooth をサポートするための API を定義しています。コア Bluetooth API と Object Exchange (OBEX) API の 2 つのパッケージが定義されており、それぞれ独立して実装することができます。バージョン 1.0 が2002年5月に策定、その後メンテナンスリリースとして MIDP 2.0 に対応したバージョン 1.1 を策定。 Mobile 3D Graphics API 1.1 (JSR 184): Mobile 3D Graphics API は 3D グラフィックスをインタラクティブに扱うための低レベル API、高レベル API の両方を定義しています。バージョン 1.0 が2003年12月に策定、その後メンテナンスリリースとして数々の修正が加えられたバージョン 1.1 を策定。 WMA 2.0 (JSR 205): WMA 2.0 は WMA 1.1 の改定バージョンで、マルチメディアメッセージ(MMS)の送受信機能が追加されています。2004年6月策定。 Scalable 2D Vector Graphics API 1.1 (JSR 226): Scalable 2D Vector Graphics API はベクター 2D グラフィックスの描画、再生機能を追加するオプショナルパッケージです。W3C 標準の SVG Tiny 1.1 に対応しています。バージョン 1.0 が2005年3月に策定、その後メンテナンスリリースとして数々の修正が加えられたバージョン 1.1 を策定。 Web Services API (JSR 172) Web Services API は Java ME デバイスから標準の Web サービスにアクセスするしくみを提供します。XML Parsing(JAXP 1.2 のサブセット、SAX 2.0 のサブセット)と Web Services(JAX-RPC 1.1 のサブセット)の 2 つのパッケージが定義されており、それぞれ独立して実装することができます。2004年3月策定。 SATSA (JSR 177): Security and Trust Services API (SATSA) は Java ME のセキュリティ機能を拡張する API を提供します。SATSA-APDU(スマートカードとの通信)、SATSA-JCRMI(JavaCard オブジェクトへのアクセス)、SATSA-PKI(署名およびクレデンシャル管理)、SATSA-CRYPTO(メッセージダイジェスト、署名の検証、暗号化・復号化)の 4 つのパッケージが定義されており、それぞれ独立して実装することができます。2004年9月策定。 Location API 1.0 (JSR 179): Location API はリソースの限られたデバイス向けに位置ベースのアプリケーションを記述するための API を規定しています。端末の現在位置や方向に関する情報や、端末のデータベースに保存されているランドマーク情報にアプリケーションからアクセスするための API が用意されています。2003年9月策定。 SIP API 1.2 (JSR 180) : SIP API は Session Initiation Protocol (SIP) をサポートするオプショナルパッケージです。API は Java ME の Generic Connection Framework ベースで、アプリケーションは SIP メッセージの送受信を行うことが可能になります。バージョン 1.0 が2003年12月に策定、その後メンテナンスリリースとして数々の修正が加えられたバージョン 1.1、バージョン 1.2 を策定。 CHAPI (JSR 211) Content Handler API (CHAPI) は Java ME アプリケーションとデバイスのアプリケーション環境との連携を可能にし、MIME タイプやスキームをベースに URI で示されたコンテンツを扱うしくみを提供します。2005年6月策定。 AMMS 1.1 (JSR 234): Advanced Multimedia Supplements (AMMS) は高度なマルティメディア機能を追加するオプショナルパッケージです。MMAPI (JSR 135) の上に構築され、3D オーディオ、オーディオエフェクト、高度なカメラ操作、フォーマット変換、イメージエフェクト、ラジオチューナーの機能をサポートします。バージョン 1.0 が2005年6月に策定、その後メンテナンスリリースとして数々の修正が加えられたバージョン 1.1 を策定。 Mobile Internationalization API (JSR 238): Mobile Internationalization API は Java ME アプリケーションの国際化とローカライズに必要な機能を定義します。ロケール特有の日付・時間・数字フォーマットや通貨単位、メッセージなどのリソースの取得・構成とロケールごとの管理の機能が含まれます。2005年4月策定。 MSA 1.1 (JSR 248): Mobile Service Architecture (MSA) は、ワイヤレス業界向けの統一アプリケーション環境を定義している、JTWI と同様のアンブレラ仕様です。MSA とそのサブセットである MSA Subset の 2 つのプラットフォームが規定されています。MSA Subset は CLDC 1.1、MIDP 2.1、PDA、Bluetooth、MMAPI、3D Graphics 1.1、WMA 2.0、SVG 1.1 を含みます。また、MSA のフルセットはこれに加えて Web Services、SATSA、Location 1.0、SIP、CHAPI、AMMS、Internationalization を含みます。バージョン 1.0 が2006年12月に策定、その後メンテナンスリリースとして数々の修正が加えられたバージョン 1.1 を策定。 Java ME オプショナルパッケージ(MSA2 関連) Mobile Sensor API 1.2 (JSR 256): Mobile Sensor API は、センサーからのデータの収集、監視機能を提供します。接続するセンサーの例には、磁気センサー、加速度センサー、バッテリー残量、電界強度などが含まれ、デバイス上およびリモートのセンサーもサポートします。バージョン 1.0 が2006年4月に策定、その後メンテナンスリリースとして数々の修正が加えられたバージョン 1.1、バージョン 1.2 を策定。 Contactless Communication API 1.1 (JSR 257): Contactless Communication API は、RFID やバーコードなどの、非接触の媒体上の情報にアクセスするインターフェースを提供します。ターゲットの検出や通信、データ交換に使う NDEF フォーマットのサポート、外部 ISO1443 スマートカードとの通信、ビジュアルタグの読み取り・生成の機能が含まれます。バージョン 1.0 が2006年10月策定に策定、その後メンテナンスリリースとして MIDP 3.0 に対応したバージョン 1.1 を策定。 Mobile User Interface Customization API (JSR 258): Mobile User Interface Customization API は、デバイス全体もしくはアプリケーション特有のユーザーインターフェースの見た目を変更するためのインターフェースや、そのデータ交換のための共通フォーマットを定義しています。2008年6月策定。 Mobile Broadcast Service API (JSR 272): Mobile Broadcast Service API はブロードキャストサービスの利用のための機能を提供します。MMAPI (JSR 135) の上に構築され、電子番組表の取得や番組の選択、メディアコンテンツの表示・録画などをサポートしています。2008年12月策定。 XML API (JSR 280): XML API は汎用的に利用できる XML API セットを定義しています。コアパッケージ(SAX 2.0 のサブセット、JAXP 1.2 のサブセット、StAX のサブセット、DOM Level 2 Core)と、Events オプショナルパッケージ(DOM Events and Views のサブセット)の 2 つのパッケージが定義されており、Events オプショナルパッケージの実装はオプションです。Web Service API のうち XML Parsing パッケージの上位互換です。2007年10月策定。 IMS Services API (JSR 281): IMS Services API は 3GPP により規定された IP Multimedia Subsystem (IMS) を利用するアプリケーションのための API を規定しています。IMS エンドポイント間で行われるマルチメディアデータの交換、アプリケーションレジストリなどの機能を提供します。バージョン 1.0 が2008年7月に策定、その後メンテナンスリリースとして数々の修正が加えられたバージョン 1.1 を策定。 Scalable 2D Vector Graphics API 2.0 (JSR 287): Scalable 2D Vector Graphics API 2.0 は Scalable 2D Vector Graphics API 1.1 の改定バージョンで、W3C 標準の SVG Mobile 1.2 (SVG Tiny 1.2) への対応が追加されています。また、OpenVG のような低レベルレンダリングエンジンに対応する直接描画モード API も追加されました。2009年12月策定。 Java Language & XML User Interface Markup Integration (JSR 290): Java Language & XML User Interface Markup Integration は WICD Mobile Profile 1.0 に基づいたマークアップ言語で書かれたドキュメントと Java アプリケーションの連携機能を提供します。ドキュメント要素と Java コードの相互参照、Java コンポーネント中へのマークアップデータの埋め込み、マークアップドキュメント中への Java コンポーネントの埋め込みを可能にします。XML API の DOM 関連パッケージを必要とします。2010年2月現在、Proposed Final Draft の段階。 Location API 2.0 (JSR 293): Location API 2.0 は Location API 1.0 の改定バージョンで、地図、ナビゲーション、ジオコーディングなどのサービスにアクセスするためのインターフェースや、ランドマーク情報のやり取りの仕組みが追加されています。2008年11月策定。 Mobile 3D Graphics API 2.0 (JSR 297): Mobile 3D Graphics API 2.0 は Mobile 3D Graphics API 1.1 の改定バージョンで、プログラマブルシェーダー、ステンシルバッファ、キューブマッピング等の高度な描画機能や、テクスチャフォーマットの改良によるメモリ使用量の削減、高速化、柔軟なアニメーション作成機能などが追加されています。2010年2月現在、Proposed Final Draft の段階。 MSA2 (JSR 249): MSA2 は MSA 1.1 の改定バージョンです。MSA2 Entry Platform (EP)、MSA2 Standard Platform (SP)、MSA2 Advanced Platform (AP) の 3 つのプラットフォームが規定されており、それぞれ JTWI、MSA Subset、MSA に後方互換性があります。MSA2 EP は JTWI に加えて PDA、Bluetooth、WMA 2.0、Internationalization、Sonsor を含みます。MSA2 SP は MSA Subset に加えて MIDP 3.0、SATSA、CHAPI、AMMS、Internationalization、Sonsor、Contactless Communication、UI Customization、Broadcast Service、XML、SVG 2.0、Location 2.0、3D Graphics 2.0 を含みます。MSA2 AP は MSA に加えて MIDP 3.0、Sonsor、Contactless Communication、UI Customization、Broadcast Service、XML、IMS Services、SVG 2.0、XML UI、Location 2.0、3D Graphics 2.0 を含みます。2009年2月現在、Public Review Ballot の段階。 Java ME オプショナルパッケージ(その他) Event Tracking API (JSR 190): Event Tracking API は、デバイスからサーバへのイベントを生成・送信する汎用的な API を提供します。プロトコルとして、IPDR/SP (Internet Protocol Detail Record Streaming Protocol) が利用されます。2007年11月策定。 Payment API 1.1 (JSR 229): Payment API は安全なペイメントトランザクションのための汎用的な API とアーキテクチャを定義しています。トランザクションの要求、サービス価格の管理、ペイメントサービスの更新管理の機能を提供します。バージョン 1.0 が2005年6月に策定、その後メンテナンスリリースとして数々の修正が加えられたバージョン 1.1 を策定。
Data Sync API (JSR 230): Data Sync API はデバイス上に保存されたアプリケーション固有のデータをサーバ上に保存されているデータと同期を取るための API を規定しています。同期に使われるプロトコルは規定されていませんが、OMA DS のような標準をベースに実装されることが想定されています。2010年2月現在、Proposed Final Draft の段階。 Mobile Operational Management (JSR 232): Mobile Operational Management は、OSGi Service Platform Release 4 の Mobile 仕様および Core 仕様をベースにコンポーネント管理フレームワークを規定するオプショナルパッケージです。新しいコンポーネントをオンデマンドで追加してデバイスの機能を拡張したり、複数のアプリケーションからサービスを共有することが可能になります。最低限 Foundation Profile を必要とします。2006年10月策定。 Java Binding for the OpenGL ES API (JSR 239): Java Binding for the OpenGL ES API は、2D および 3D グラフィックス向けの OpenGL ES API、ウィンドウシステムのバインディングのための EGL API をサポートします。OpenGL ES および EGL のバージョン 1.0、1.1 に対応します。2006年9月策定。
Device Management API (JSR 246): 2009年3月現在、Early Draft Review の段階。 Mobile Telephony API 1.0 (JSR 253): Mobile Telephony API は、音声通話の管理や通話に関連するネットワークサービスの機能を提供するオプショナルパッケージです。CDMA、GSM、UTMS などの下位のプロトコルスタックに依存しない形で抽象化されています。2006年3月策定。
Ad Hoc Networking API (JSR 259): 2010年2月現在、Early Draft Review の段階。
Unified Message Box Access API (JSR 266): 2010年2月現在、Early Draft Review の段階。
Resource Management API (JSR 278): 2007年2月現在、Public Review Ballot の段階。 Service Connection API (JSR 279): Service Connection API は、REST、AtomPub、SOAP 等の技術に基づいた Web サービスへの、高レベルかつ統一されたアクセス方法を提供します。Web Service API のうち JAX-RPC 関連の機能を引き継いでいます。2009年11月策定。 Telematics API (JSR 298): Telematics API は、自動車に搭載された様々なコンポーネントの管理、診断を行うための API を規定しています。エアバッグやドア、窓、ブレーキといった装備を定義するコンポーネント、各コンポーネントの状態管理や診断を行うしくみ、および情報のやり取りに使用されるプロトコルを含んでいます。2008年10月策定。 DRM API (JSR 300): DRM API は デバイス上の DRM 保護されたコンテンツへの安全なアクセス手段を提供します。API はデバイスに実装されている DRM 技術には依存しませんが、OMA や Marlin といった技術が想定されています。2010年2月策定。
Mobile Telephony API 2.0 (JSR 304): Mobile Telephony API 2.0 は Mobile Telephony API 1.0 の改定バージョンです。2010年2月現在、Expert Group Formation の段階。 Network Mobility and Mobile Data API (JSR 307): 2009年2月現在、Public Review Ballot の段階。
Services Framework (JSR 320): 2010年2月現在、Expert Group Formation の段階。 IMS Communication Enablers (JSR 325): IMS Communication Enablers は、プレゼンス、IM、Push to Talk といった様々な IMS 通信イネーブラに対するアクセス API を提供します。IMS Services API のフレームワーク上に構築されます。2010年1月現在、Final Approval Ballot の段階。 Dynamic Contents Delivery Service API (JSR 327): Dynamic Contents Delivery Service API は OMA DCD 等の動的なコンテンツ配布メカニズムに対応するインターフェースを提供します。2009年11月現在、Public Review Ballot の段階。
OSGi Service Platform - Release 4 MHP 1.2: Multimedia Home Platform (MHP) はデジタル TV で動作するアプリケーション実行環境の実現を目指し、DVB プロジェクトにて開発された Java ベースのアプリケーションプラットフォームです。CDC/PBP がベースになっています。現在ヨーロッパ・アジアを中心に普及しています。 GEM 1.2: Globally Executable MHP (GEM) は MHP のうち特に放送に関連した部分を取り除き、様々なデバイスで世界共通で利用できるようにすることを目的にサブセットされた仕様です。単体で実装されることはありませんが、下の OCAP や BD-J などの仕様のベースとなっています。ETSI 標準です。 OCAP 1.1: OpenCable Application Platform (OCAP)。米国ケーブル TV。 ACAP: Advanced Common Application Platform (ACAP)。北米。 ARIB B.23: 日本。 BD-J: Blu-ray ディスク向け標準 Java プラットフォームです。GEM がベースになっています。
Sun Java Wireless Toolkit for CLDC SoftBank - Developers Support Site KDDI - EZfactory - EZアプリ (Java) KDDI - EZfactory - オープンアプリ (Java) Sprint - Application Developer Program Sony Ericsson - Developer World Samsung mobile - Developer's Club Sprint - Titan Platform NTT - OSAP |