(57)【要約】アプリケーション間でライブラリを共有する共有ライブラリアーキテクチャ（ｉＪＤＬ）である（図２）。ｉＪＤＬは、追加し、除去し、更新し、またはネットワークから直接取り込むことができるものであり、限られたフラッシュメモリ空間の使用を最大化するように完全に構成可能である。ｉＪＤＬモデルは、ＭＩＤＰ１．０仕様によって定義される標準サンドボックスセキュリティモデルに準拠する。ネットワークで利用可能な共有ライブラリに対する任意の更新をユーザに知らせるようにＪａｖａ（登録商標）アプリケーションマネージャ（ＪＡＭ）を提供してもよい。セキュリティのために、ｉＪＤＬを、許可されたベンダのみが使用することが可能であるように認証してもよい。【特許請求の範囲】
【請求項１】
メモリに格納されたクラスライブラリと、
該クラスライブラリにアクセスするように構成された複数のアプリケーションと、
該複数のアプリケーションに対し複数のクラスライブラリへのアクセスを共有することを可能にするように構成された複数の動的ライブラリと、
を含む共有ライブラリアーキテクチャ。
【請求項２】
更新された共有クラスライブラリの可用性を指示するアプリケーションマネージャをさらに含む、請求項１に記載の共有ライブラリアーキテクチャ。
【請求項３】
前記更新された共有クラスライブラリの場所を前記アプリケーションマネージャに指示するタグをさらに含む、請求項２に記載の共有ライブラリアーキテクチャ。
【請求項４】
前記タグは、ユニバーサルリソースロケータを含む、請求項３に記載の共有ライブラリアーキテクチャ。
【請求項５】
前記動的ライブラリは、記述子ファイルおよびアーカイブファイルを含む、請求項１に記載の共有ライブラリアーキテクチャ。
【請求項６】
前記動的ライブラリは、
該動的ライブラリのフレンドリ名と、
ベンダ名と、
前記動的ライブラリのバージョン番号と、
該動的ライブラリパッケージのサイズと、
該動的ライブラリパッケージの場所と、
クラスパスと、
構成ファイルと、
プロファイルファイルと、
を含む、請求項５に記載の共有ライブラリアーキテクチャ。
【請求項７】
前記動的ライブラリの記述をさらに含む、請求項６に記載の共有ライブラリアーキテクチャ。
【請求項８】
アプリケーションが前記動的ライブラリを使用するよう許可されているか否かを判断する許可属性をさらに含む、請求項６に記載の共有ライブラリアーキテクチャ。
【請求項９】
使用される前記動的ライブラリの識別およびバージョン番号を指定する動的ライブラリパス属性をさらに含む、請求項６に記載の共有ライブラリアーキテクチャ。
【請求項１０】
Ｊａｖａ（登録商標）互換デバイスにおけるクラスローディング方法であって、
所定のクラスが前記Ｊａｖａ（登録商標）互換デバイスのメモリにロードされているか否かを判断するステップと、
前記クラスのクラスパス属性が存在するか否かを判断するステップと、
前記クラスパスが認証されており許可されているか否かを判断するステップと、
動的ライブラリから前記クラスをロードするステップと、
を含むクラスローディング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
［発明の分野］
本発明は、包括的にはＪａｖａ（登録商標）ライブラリに関し、より詳細には、メモリが限られたＪａｖａ（登録商標）デバイスにおいてアプリケーション間でＪａｖａ（登録商標）ライブラリを共有することに関する。
【背景技術】
【０００２】
［発明の背景］
カリフォルニア州サンタクララのサンマイクロシステムズ社によって開発されたＪａｖａ（登録商標）プラットフォームは、同じソフトウェアが多くの異なる種類のコンピュータ、家庭用電化製品および他のデバイスで実行することができるようにする。Ｊａｖａ（登録商標）の利点は、Ｊａｖａ（登録商標）技術ベースのソフトウェアが、Ｊａｖａ（登録商標）プラットフォームをサポートする任意の種類のデバイスにおいて動作することができる、ということである。
【０００３】
Ｊａｖａ（登録商標）プラットフォームの特定の特徴は、イリノイ州シャンバーグのモトローラ社から市販されているｉＤＥＮ電話を含む携帯電話等のモバイルデバイスに対し、Ｊａｖａ（登録商標）ランタイム環境を利用することができる、ということである。この環境は、モバイルインフォメーションデバイスプロファイル（Mobile Information Device Profile ）（ＭＩＤＰ）として知られ、モバイルデバイスが要求するコアアプリケーション機能を提供する。
【０００４】
大容量モバイルＪａｖａ（登録商標）デバイスにおいて、現行のインストールおよびクラスローディングモデルのＭＩＤＰには限界がある。たとえば、図１に示すように、現行のモデルでは、すべてのアプリケーション１２、１２’、１２’’、１２’’’等によって共有される集中化されたＲＯＭ化（romized ）クラスライブラリ１０がある。しかしながら、アプリケーション自体の間にクラスの共有はない。これは、ＭＩＤＰ１．０仕様によって定義される、いわゆる「サンドボックスセキュリティモデル」である。このため、このアーキテクチャの第１の限界は、ファームウェアを更新するまでＲＯＭ化クラスライブラリを更新することができない、ということである。これにより、インストールされたアプリケーションがすべて喪失することになる。第２に、アプリケーションは、Ｊａｖａ（登録商標）アーカイブ（jar ）ファイルにおいてそれら自体のライブラリをパッケージ化することができ、それによりクラスライブラリが重複する可能性がある。すなわち、各アプリケーションは、ライブラリが同一である可能性があっても、それ自体のクラスライブラリのセットを有する。携帯電話等のメモリが限られたデバイスの場合、これは効率的ではない。
【発明を実施するための最良の形態】
【０００５】
［説明］
アプリケーション間でライブラリの効率的な共有が必要であることに対処するために、以下ｉＤＥＮ  Ｊａｖａ（登録商標）ダイナミックライブラリ（ｉＪＤＬ）と呼ぶ新たな共有ライブラリアーキテクチャを提供する。ｉＪＤＬは、いくつかの利点を有する。たとえば、ｉＪＤＬを、アプリケーション間で共有してもよく、追加し、除去し、更新し、またはネットワークから直接取り込むことができ、またｉＪＤＬは、限られたフラッシュメモリ空間の使用を最大化するように完全に構成可能である。ｉＪＤＬモデルが依然として、Sun によって提出されたＭＩＤＰ１．０仕様によって定義される標準サンドボックスセキュリティモデルに準拠することが有利である。
【０００６】
ネットワークで利用可能な共有ライブラリに対する任意の更新があったことをユーザに知らせるように、Ｊａｖａ（登録商標）アプリケーションマネージャ（ＪＡＭ）を提供してもよい。実際の更新は、ユーザの確認が受け取られた後に自動的に実行される。セキュリティのために、ｉＪＤＬの使用を、許可されたベンダのみが使用することができるように認証することができる。
【０００７】
図２に示すように、ｉＪＤＬモデルもまた、フラッシュタイプメモリ等のメモリ（ＲＯＭ化）１００にロードされたクラスライブラリを使用する。ｉＪＤＬ１０２、１０４、１０６は、アプリケーション１０８、１０８’、１０８’’、１０８’’’間のインタフェースを提供する。アプリケーションは、クラスライブラリを共有することができ、それにより限られたフラッシュメモリ空間が節約される。
【０００８】
各ｉＪＤＬ１０２、１０４、１０６は、記述子ファイル（.jdl）およびjar ファイル（.jar）を有する。ｉＪＤＬ記述子ファイルのフォーマットを以下のように定義する。
必須属性：
【０００９】
【表１】
2006511868.tif 000002
【００１０】
クラスパスは、.jarのファイルであってもユニバーサルリソースロケータ（ＵＲＬ）であってもよい。
任意の属性は以下を含む：
【００１１】
【表２】
2006511868.tif 000003
【００１２】
許可のために、アプリケーションのベンダ名を使用してアプリケーションがｉＪＤＬを使用することができるか否かを判断する。たとえば、＊では、ベンダに関係なく、いずれのアプリケーションもそれを使用することができ、＊モトローラ＊では、ベンダ名に「モトローラ」が含まれていなければならない。ｉＪＤＬパッケージは標準.jarフォーマットであり、MANIFEST.MF は必要ではない。さらにセキュリティを強化するために、ｉＪＤＬ記述子ファイルに署名してもよい。
【００１３】
Ｊａｖａ（登録商標）システムは、ｉＪＤＬを追加／除去／更新する方法を提供する。たとえば、追加／除去／更新する場合、ｉＪＤＬは、このｉＪＤＬを使用してもよいすべてのアプリケーションを検査し、それに従ってユーザに通知する。ネットワークからクラスを取り込むことは、セッションベースであり、後に使用するためにキャッシュすることができる。クラスローダは、信頼されたウェブサイトからライブラリを取り込むために永久的かつセキュアなＨＴＴＰＳコネクションをセットアップしてもよい。
【００１４】
ｉＪＤＬを使用するアプリケーションでは、アプリケーション記述子ファイルにおいて、追加の新たな属性、すなわちiJDL-path が追加される。これは、使用する特定のｉＪＤＬ（複数可）およびそのバージョン番号を指定する。複数のｉＪＤＬを指定することも可能である。たとえば、
iJDL-path-1: xxx1.jdl,  バージョン番号
iJDL-path-2: xxx2.jdl,  バージョン番号
…
iJDL-path-n: xxxn.jdl,  バージョン番号
であり、ここで、バージョン番号を使用してｉＪＤＬのバージョンを検査する。不一致がある場合、アプリケーションマネージャはそれに従ってユーザに通知する。
【００１５】
アプリケーションは、Class.forName() メソッドを介してｉＪＤＬのクラスにアクセスする。それには、既知のクラスアクセス方法に比較していくつかの利点がある。たとえば、ｉＪＤＬは、アプリケーションをコンパイルしパッケージ化するために必要ではなく、ｉＪＤＬを更新するには、再コンパイルおよび再分配アプリケーションが必要ではない。さらに、ｉＪＤＬが同じインタフェースを維持する限り、アプリケーションを変更しまたは再インストールすることなく実施態様の詳細を更新することができる。また、ｉＪＤＬクラスをロードすることなくアプリケーションをインストールすることができる。したがって、ｉＪＤＬクラスは、真に動的に、使用される時にのみロードされる。必要な場合は、ライブラリを.jarファイルでパッケージ化することにより、アプリケーションがｉＪＤＬサポートなしに依然として正しく実行することが有利である。
【００１６】
図３は、ｉＪＤＬサポートを伴うクラスローディング手続きを示す。ステップ１５０において、たとえばクラスＡのローディングを開始する。ステップ１５２においてＲＯＭ化クラスライブラリにクラスが見つかると、プロセスは終了し成功メッセージを返す。見つからない場合、ステップ１５４において、プロセスは、クラスが.jarファイルにあるか否かを判断する。.jarファイルにある場合、ステップ１５６において、アプリケーション.jarファイルからクラスをロードする。
【００１７】
.jarファイルにクラスが見つからなかった場合、ステップ１５８において.jadファイルを検査することにより、それがiJDL-path-x 属性を有するか否かを判断する。.jadファイルにiJDL-path-x 属性が見つからない場合、プロセスは失敗メッセージとともに終了する。しかしながら、iJDL-path-x 属性が見つかると、ステップ１６０において、プロセスは、クラスパスが認証されておりかつ許可されているか否かを確認する。認証かつ許可されていない場合、プロセスは失敗メッセージとともに終了する。
【００１８】
クラスパスが認証されておりかつ許可されている場合、ステップ１６２において、ｉＪＤＬからクラスをロードするプロセスを開始する。ステップ１６４において、プロセスは、クラスパスがファイルであるか否かを判断する。ファイルである場合、ステップ１６６においてiJDL.jarファイルからクラスをロードする。ファイルでない場合、ステップ１６８において、ネットワークからクラスを取り込む。
【００１９】
ステップ１７０において、ネットワークからクラスを取り込むように試みる場合、プロセスは、ネットワークサービスが利用可能か否かを判断する。サービスが利用不可能である場合、プロセスは失敗メッセージとともに終了する。利用可能である場合、ステップ１７２において、システムは、ネットワークからの、好ましくはセキュアなハイパーテキスト転送プロトコル（ＨＴＴＰＳ）コネクションを介するクラスの取込みが成功したか否かを判断する。成功しなかった場合、プロセスは失敗メッセージとともに終了する。しかしながら、クラスの取込みが成功した場合、ステップ１７４においてそれを特定の名前「ｘ」としてキャッシュし、ステップ１７６において「ｘ」からクラスをロードする。
【００２０】
本発明のさまざまな態様における他の変形および変更の実施態様は、当業者には明らかとなろうということ、および本発明は説明した特定の実施形態によって限定されないということ、を理解すべきである。したがって、本発明により、本明細書で開示され請求される基本的な基礎をなす原理の精神および範囲内にある任意のかつすべての変更形態、変形形態または等価形態を包含することが企図されている。
【図面の簡単な説明】
【００２１】
【図１】従来技術によるＪａｖａ（登録商標）ＲＯＭ化クラスライブラリのブロック図。
【図２】本発明によるｉＪＤＬを有するＪａｖａ（登録商標）ＲＯＭ化クラスライブラリのブロック図。
【図３】本発明によるｉＪＤＬをサポートするクラスローディングのフローチャート。
【図４】本発明による図３のｉＪＤＬをサポートするクラスローディングの続きを示すフローチャート。
【図１】
2006511868.tif 000004
【図２】
2006511868.tif 000005
【図３】
2006511868.tif 000006
【図４】
2006511868.tif 000007
【国際調査報告】
2006511868.tif 000008
2006511868.tif 000009