【コラム】

Java API、使ってますか?

42 次世代の携帯端末向けJava仕様"MIDP 3.0"はどうなるか その2

42/60

今回は、前回に引き続きMIDP 3.0のPublic Draftから、その新機能について紹介していきたい。

MIDletの並列実行をサポート

MIDP 3.0ではMIDletの並列実行のサポートが明確化される。MIDP 1.0および2.0においてもMIDletの並列実行が禁止されているわけではなかったが、明確な振る舞いについては定義されていなかった。また、アプリケーションの状態の変化を扱うための機能が提供されなかった。それに対してMIDP 3.0の実行環境では、2つ以上のMIDletの同時実行を確実にサポートしなければならないと明示されており、実行時の振る舞いも明確に規定されることになる。

まず第一に、MIDletは互いに独立して一貫した動作をしなくてはならず。そのために各アプリケーションのためのデータ領域は独立していなければならない。たとえば2つのMIDletがそれぞれ同じ名前の異なるクラスを含む場合、それぞれのアプリケーションコンテキストは明確に分けられていなければならない。また同じスイート内の異なるMIDletからひとつのクラスにアクセスするような場合にも、そのクラスの静的変数などはMIDlet毎に管理されなければならない。

エラー処理については、従来は単一のMIDletだけを考えればよかったため、何らかのエラーが発生した際にはVMのシャットダウンや再初期化などを行うことができた。しかし複数のMIDletが同時に実行されている場合には、1つのMIDletでエラーが生じたとしても、他のMIDletに極力影響を与えないようにする必要がある。

もうひとつ重要な点として、すでに実行されているMIDletの2つめのインスタンスを生成することはできないことがある。もし2つめのインスタンスを生成しようとした場合には"true"の値を持ったjavax.microedition.event.EventData.APPLICATION_RELAUNCHイベントが通知されるとのこと。

なお、スケジューリング機構についてはMIDlet 3.0実装では必須(MUST)とされてはいないが、サポートすべき推奨項目(SHOULD)に挙げられている。

セキュリティモデルの拡張

MIDP 3.0ではMIDP 2.0と同様のドメインベースのセキュリティモデルに加えて、他のJavaプラットフォームと同様のPermissionクラスを採用するとのこと。これによって、MIDP 2.0ではbooleanタイプのパーミッションのみ可能であったのに対し、3.0では単一のプロパティやリソース、関数へのアクセスが可能となる。これらのパーミッションのためのクラスは、コンフィギュレーションによって定義されたクラスか、またはそれを拡張したものを利用する。そのため、MIDP 3.0の仕様策定と並行して、CLDCのメンテナンス仕様でパーミッション関連のクラスが定義されている。

アプリケーションレベルのアクセス認証

MIDP 3.0では異なるアプリケーション間でRMSデータやLIBletの共有できたり、IMCプロトコルやイベントを利用したランタイムの通信を行うことができる。そのため、従来のようにプラットフォームレベルでのアクセス認証だけでなく、アプリケーションレベルでのアクセス認証が必要となる。そこでMIDP 3.0では、あるアプリケーションが他のアプリケーションからのアクセスをコントロールできるように、アプリケーション固有の識別子を用いたアクセス認証を行うメカニズムが用意される。これはX.509 PKIによる署名と証明書を利用したフレームワークによって実現する。

このフレームワークのために、JARのマニフェストに新たにMIDlet-Access-Authorization-n属性とMIDlet-Access-Authorization-Certificate-n-m属性が追加された (mおよびnはエントリ番号)。MIDlet-Access-Authorization-n属性には「DOMAIN」「SIGNER」「VENDER; ベンダ名」のいずれかを記載する。そしてSIGNERまたはVENDERの場合には、Access-Authorization-Certificate-n-m属性にBase64でエンコードされた署名を記載する。

あるMIDletが他のMIDletのリソースにアクセスしようとした場合にはこれらの値をチェックし、アプリケーションレベルのアクセスが許可されるかどうかを決定する。実際の署名や認証処理はX.509 PKIの仕組みを用いて行う。Public ReviewではMIDlet Suiteに署名するケースとしていくつかのシナリオが紹介されている。

クラスライブラリの拡張

MIDP 3.0ではクラスライブラリも大幅に拡張されている。代表的な例としては、アニメーション画像のフォーマットをサポートするAnimatedImageクラスや、コマンドオブジェクトを表すCommandクラス、MenuCommandクラスが追加されたことや、UIコンポーネントとしてタブペインが利用できるようになったことなどが挙げられる。これらの拡張によって、MIDPアプリケーションの表現力は大幅に向上することになる。

JSR 271の今後のスケジュールとしては、まず3月18日から24日にかけてExpert GroupeによるPublic Review投票が行われる。その後、Proposed Final Draftの策定が行われ、最終承認投票を経て最終リリースとなる。現時点で当初のスケジュールよりも大幅に予定が遅れているが、最終リリースまではまだもうしばらく時間が必要となりそうだ。

42/60

インデックス

連載目次
第60回 どうなる? 今後のJavaプラットフォーム(Java SE編)
第59回 どうなる? 今後のJavaプラットフォーム(Java EE編)
第58回 Java SE 7の要注目機能"クロージャ"はどうなるのか その6
第57回 Java SE 7の要注目機能"クロージャ"はどうなるのか その5
第56回 Java SE 7の要注目機能"クロージャ"はどうなるのか その4
第55回 Java SE 7の要注目機能"クロージャ"はどうなるのか その3
第54回 Java SE 7の要注目機能"クロージャ"はどうなるのか その2
第53回 Java SE 7の要注目機能"クロージャ"はどうなるのか
第52回 Early Draftが公開されたJSF 2.0
第51回 EJBから独立したJava Persistence 2.0
第50回 モバイルJavaの新しい潮流となるか - MSA 2.0のドラフト公開
第49回 やっぱり基本はServlet - Servlet 3.0のEarly Draftを読む
第48回 JOGLで3Dプログラミング その4
第47回 JOGLで3Dプログラミング その3
第46回 JOGLで3Dプログラミング その2
第45回 JOGLで3Dプログラミング
第44回 JARファイルを効率的にネットワーク転送するためのPack200形式
第43回 Early Draftで把握するEJB 3.1の新機能
第42回 次世代の携帯端末向けJava仕様"MIDP 3.0"はどうなるか その2
第41回 次世代の携帯端末向けJava仕様"MIDP 3.0"はどうなるか その1
第40回 リソースアダプタによる接続の仕組み
第39回 JCAを利用したシステム間接続
第38回 Java EEと外部システムの接続性を支えるJCAがバージョンアップ
第37回 Javaのモジュラリティ強化を担う"スーパーパッケージ"とは
第36回 JSR 308対応のコンパイラを試す
第35回 公開されたJSR 308のEarly Draftを検証する
第34回 スクリプト言語とJavaを結びつけるJSR 223
第33回 Java EE環境に統一されたコンポーネントモデルを提供するJSR 299 その2
第32回 Java EE環境に統一されたコンポーネントモデルを提供するJSR 299 その1
第31回 Javaの文法がそのまま使えるスクリプト言語"BeanShell"
第30回 Javaアプリケーションにオブジェクトのキャッシュ機構を提供するJCache API
第29回 Javaアプリケーションからのリソース管理を可能にするJSR 284
第28回 XMLデータソースへの問い合わせはJSR 225で
第27回 Portlet Specification 2.0をもっと手軽に利用する
第26回 次期Javaポートレット仕様となるJSR 286
第25回 JSFとポートレットをつなげるJSR 301
第24回 Webサービス向けのポートレット仕様「WSRP」
第23回 高い相互運用性を実現するポートレットAPI - JSR 168
第22回 Java EE環境でタスクのスケジューリングを可能にするJSR 236
第21回 Java EE環境でのスレッドプログラミングを可能にするJSR 237
第20回 音声認識/合成のためのAPI - Java Speech APIとJSR 113
第19回 JSR 291でJavaプラットフォームにダイナミックコンポーネントモデルを導入
第18回 JAX-RSで簡単RESTful - JSR 311
第17回 待望のServlet 3.0がJSRに登場 - JSR 315
第16回 アノテーションを使ってバグ退治 - JSR 305
第15回 アノテーションをさらに広い範囲で利用可能にするJSR 308
第14回 Webアプリケーション開発の要となるか - JSF 2.0がJSRに登場
第13回 Webサービス経由でのJMX Agentへの接続を可能にするJSR 262
第12回 Javaアプリケーションのモジュール化をサポートするJava Module System
第11回 "NIO.2"がやってきた - JSR 203: More New I/O APIs for the Java Platform
第10回 JSR 295: Beans Bindingの参照実装を試す
第9回 けっこう便利! 単位を扱うAPI -- JSR 275: Units Specification
第8回 アノテーションでバリデーション - JSR 303: Bean Validator
第7回 Swing開発の救世主となるか - Swing Application Framework
第6回 JavaBeansのプロパティを同期させるバインディングAPI
第5回 誰よりも早く"Java SE 7"を睨む
第4回 日時情報の取り扱いを改善する JSR 310: Date and Time API
第3回 古いAPIも進化している!? - JSR 919: JavaMail 1.4
第2回 JSR 1 リアルタイムJava仕様
第1回 JCPによって進められるJava関連技術の標準化

もっと見る

提供:マイナビ

会員登録はこちら

大学・大学院・短大・専門学生向けの就職情報サイト「マイナビ2010」「マイナビ2009」に今すぐ登録しよう!  大手企業からベンチャー企業までの約13,000社の企業情報を公開、エントリーが可能です。2010年卒予定の方は「マイナビ2010」に、2009年卒予定の方は「マイナビ2009」に登録してください。

毎日コミュニケーションズはプライバシーマークを取得しています。

関連キーワード


人気記事

一覧

イチオシ記事

新着記事