JP2000250758A - 組込み機器用Javaアプリケーションマネージャ - Google Patents

組込み機器用Javaアプリケーションマネージャ

Info

Publication number
JP2000250758A
JP2000250758A JP2000055728A JP2000055728A JP2000250758A JP 2000250758 A JP2000250758 A JP 2000250758A JP 2000055728 A JP2000055728 A JP 2000055728A JP 2000055728 A JP2000055728 A JP 2000055728A JP 2000250758 A JP2000250758 A JP 2000250758A
Authority
JP
Japan
Prior art keywords
application
class
java
memory
network
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2000055728A
Other languages
English (en)
Inventor
P Judge Frank
フランク・ピー・ジャッジ
Dorand Chia-Chu
チア−チュ・ドーランド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HP Inc
Original Assignee
Hewlett Packard Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JP2000250758A publication Critical patent/JP2000250758A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44594Unloading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/482Application
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/953Organization of data
    • Y10S707/955Object-oriented
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】 組込み機器において、Java仮想マシン等
のハードウェア非依存型プロセッサが機器にインストー
ルされることにより、アプリケーションが機器にダウン
ロードされその機器上で実行されることが可能になる。
しかしながら、このJava言語は、プログラムローダ
の実行もロードされたプログラムを管理する機能も提供
していない。また、メモリの制約された組込み機器内で
アプリケーションをダウンロードおよび管理する手段も
提供していない。 【解決手段】 本願発明のJavaベースのアプリケー
ションマネージャは、組込み機器にインストールされた
Java仮想マシン内で実行されるJavaアプリケー
ションのダウンロード、実行およびキャッシングを制御
する。さらにアプリケーションの実行の開始、初期化お
よび停止、およびメモリ管理のための機能を提供する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、組込み機器におい
てアプリケーションを管理するアプリケーションマネー
ジャに関する。
【0002】
【従来の技術】組込み機器環境では、Java仮想マシ
ン等のハードウェア非依存型プロセッサがしばしば機器
にインストールされており、それによって、プログラム
が機器にダウンロードされその機器上で実行されること
が可能になっている。このようなシステムにより、Sun
MicroSystemによるJava(登録商標)等のハードウ
ェア非依存型言語によって書かれたプログラムを、Ja
va(登録商標)環境をサポートするあらゆるハードウ
ェアにダウンロードし、特定の用途のためにカスタマイ
ズすることができる。このカスタマイズは、しばしば機
器の「パーソナリティ」と呼ばれる。機器のパーソナリ
ティを定義するために、組込み機器内で複数のアプリケ
ーションが協調して実行されている。このように、機器
を、それぞれ一意に機能するよう動的に構成することが
できる。例えば、冷蔵庫等の組込み機器を、その中身を
自動的に追跡するようカスタマイズすることができる。
食品の種類および同種の食品の命名規則が文化によって
異なるように、食品の種類および命名規則を記述する新
たなパーソナリティをJava動作可能の組込み機器で
ある冷蔵庫にダウンロードすることにより、その組込み
機器の冷蔵庫を、ユーザの特定の文化に対してカスタマ
イズすることができる。
【0003】
【発明が解決しようとする課題】組込み機器ドメインで
は、Java(登録商標)仮想マシン等のハードウェア
非依存型プロセッサが機器にインストールされることに
より、アプリケーションが機器にダウンロードされその
機器上で実行されることが可能になる。Java(登録
商標)言語は、新たなプログラムを動的にロードするよ
うプログラムを構築する基本的な機能を提供する。しか
しながら、このJava(登録商標)言語は、プログラ
ムローダの実行もロードされたプログラムを管理する機
能も提供していない。また、Java(登録商標)言語
は、メモリの制約された組込み機器内でアプリケーショ
ンをダウンロードおよび管理する手段も提供していな
い。
【0004】いくつかの現存するJavaテクノロジ
は、プログラムローダ・タイプの機能をサポートしてい
る。Sun Microsystemのサーブレット(Servlet)API
(Application Program Interface)は、Java(登
録商標)動作可能ウェブ(Web)サーバがサーバの機
能を動的に拡張することを可能にする。サーブレットA
PIは、主に、ウェブサーバにおいて一般的なCGI機
能に取って代るものとして生成された。サーブレットの
CGIタイプのプログラムに対して優れている点とし
て、プラットフォーム非依存性、再利用可能性(オブジ
ェクト指向技術によりJavaクラスを再利用する機
能)、性能効率(同じサーブレット・インスタンスが多
くの要求を処理することができるサーブレットの構成可
能な起動モード(CGIスクリプトに対する呼出毎に新
たなプロセスを生成する必要があることとは対照的であ
る))、および管理効率(SunのJavaベースのウェ
ブサーバは、新たなサーブレット・クラスの追加、およ
びサーブレットの開始並びに停止を容易に管理するJa
va adminアプレットを提供する)がある。
【0005】サーブレットAPIは、すべてのサーブレ
ットが3つのメソッド、すなわちinit()(初期化)、se
rvice()(サービス)およびdestroy()(破壊)を実行す
るよう指令する(mandate)ことにより、サーブレット
のライフサイクルを定義する。init()メソッドは、サー
ブレットが最初に起動される時に呼出され、service()
メソッドは、クライアントからの各要求を処理するため
に呼出され、destroy()メソッドは、サーブレットが停
止している時(すなわち、ウェブサーバがシャットダウ
ンしている時)に呼出される。サーブレットAPIは、
メモリ管理を直接に管理しておらず、サーブレットを管
理するための公式パッケージも提供していない。
【0006】Hewlett Packardの組込みJava Lab Sm
allWebは、JVMで実行されるJavaベースのオブジ
ェクトに対しウェブベースのインタフェースを提供す
る。SmallWebは、必要に応じてオブジェクトをロードす
ることができ、オブジェクトがその機能を(メソッド呼
出により)ウェブブラウザにエクスポートする手段を提
供する。SmallWebは、明示的には、アプリケーションオ
ブジェクトの停止またはメモリ管理機能を提供していな
い。更に、SmallWebには、通常ファイルシステムが必要
であり、組込み環境によっては、SmallWebのオーバヘッ
ド要求が大きすぎる場合がある。
【0007】多くの組込みドメインにおいてJava
(登録商標)を使用する問題の1つは、Java(登録
商標)メモリ・サブシステムの非決定性の面である。J
ava(登録商標)言語の非決定性メモリ管理方式によ
り、ガーベッジ・コレクタ・メソッドgc()による参照さ
れないオブジェクトの回収(reclamation)が可能とな
るが、ガーベッジ・コレクタは、これらのオブジェクト
がどのようにまたはいつ回収される(reclaimed)かを
指定しない。ネイティブアプリケーションは、一般に、
Java(商標登録)Runtime class gc()メソッドを呼
出すことによりガーベッジ・コレクションを発生させ
る。JVMがメモリを使い尽くした場合、OutOfMemoryE
rror(アウトオブメモリ・エラー)例外が発生する。メ
モリを管理する必要がないことがJava言語の利点で
はあるが、大抵の組込みアプリケーションでは、メモリ
がどのように管理されるかに対し、Java(登録商
標)言語によって現在提供されている以上に厳しい制御
が必要である。そのようにより厳しい制御が必要である
のは、ローメモリ(low memory)状態で実行を続けなけ
ればならない組込みアプリケーションがあるためであ
る。一般に、これは、継続して実行するために十分なメ
モリが空き状態であることを保証するよう、ネイティブ
の非Java組込みアプリケーションにメモリマネージ
ャを実行することによって処理される。
【0008】従って、Java動作可能な組込み機器に
ダウンロードを行い、そのような組込み機器におけるア
プリケーションのライフタイムを制御する汎用的な方法
が必要とされている。また、機器上でのアプリケーショ
ンの実行中に検出されるローメモリまたはノーメモリ
(no-memory)状態を処理すると共に、プライオリティ
ベースのアルゴリズムに従ってメモリを解放するメモリ
管理ハンドラも必要とされている。
【0009】
【課題を解決するための手段】本発明は、メモリの制約
された組込み機器環境においてアプリケーションのダウ
ンロードおよびライフサイクルを管理する新規なシステ
ムおよび方法である。Javaベースのアプリケーショ
ンマネージャは、組込み機器にインストールされた単一
のJava仮想マシン(JVM)内で実行されるJav
aアプリケーションのダウンロード、実行およびキャッ
シングを制御する。Java(登録商標)動作可能の組
込み機器におけるクラスファイルのロード、アプリケー
ションの実行の開始、初期化および停止、およびメモリ
管理のための機能を提供するネットワーク対応のアプリ
ケーション・プログラム・インタフェース(Applicatio
nProgram Interface(API))が明確化されている。
本発明により、組込み機器を、使用するハードウェアの
タイプに関係なく容易に再プログラムおよび管理するこ
とができる。
【0010】本発明は、図面に関連して行われる以下の
詳細な説明によってより深く理解されよう。なお、図面
において、同じ要素には同じ参照番号を用いて示してい
る。
【0011】
【発明の実施の形態】組込み機器用の新規なアプリケー
ションマネージャについて、以下詳細に説明する。本発
明は、Java(登録商標)環境のコンテキストで説明
されているが、当業者には、本発明の原理が、ハードウ
ェア非依存型言語で書かれたコードを処理するハードウ
ェア非依存型プロセッサを有するすべてのシステムに拡
張できるということが理解されよう。
【0012】ここで図1を参照すると、ネットワーク1
4を介して組込み機器20と通信するコンピュータシス
テム12を備えたネットワークシステム10が示されて
いる。ネットワーク14は、LANまたはWAN等、従
来のランドリンクされた(land-linked)有線ネットワ
ークであっても、無線ネットワーク、またはそれらの組
合せであってもよい。
【0013】本システムにおけるコンピュータシステム
12は、クライアントとして動作し、クライアントアプ
リケーション2を実行する。このクライアントアプリケ
ーション2は、クライアントインタフェース4を介し
て、ネットワーク14を通じてサーバ機器(例えば、組
込み機器20)とインタフェースする。この例では、ク
ライアントアプリケーション2は、組込み機器20に対
して要求(例えば、ダウンロード・アプリケーション3
(download Appl3)、スタート・アプリケーション3
(start Appl3)、ストップ・アプリケーション2(sto
p Appl2))を送信する。組込み機器20は、その要求
をサービスするサーバとして動作する。クライアントア
プリケーション2は、コンピュータシステム12におけ
る独自の環境で実行してもよく、あるいは、それ自身の
Java仮想マシン(JVM)(図示せず)を含むJa
va動作可能なウェブ(Web)ブラウザ(図示せず)
内で実行してもよい。ウェブブラウザは、主なクライア
ントアプリケーション・アプレットのクラスファイルの
場所を指定する組込みJavaアプレットを用いて、ウ
ェブ(Web)ドキュメントを解釈する。ウェブブラウ
ザは、JVMを起動し、クライアントアプリケーション
・アプレットのクラスファイルの場所を自身のクラスロ
ーダに渡す。各クラスファイルは、必要とする追加のク
ラスファイルの名前を知っている。これら追加のクラス
ファイルは、ネットワーク14(すなわち、ネットワー
ク14に接続された他のマシン)から入手されるように
してもよく、あるいは、クライアントであるコンピュー
タシステム12から入手されるようにしてもよい。
【0014】組込み機器20は、Java仮想マシン
(JVM)22がインストールされたJava動作可能
機器である。図2は、組込み機器20をより詳細に示す
ブロック図である。組込み機器20は、JVM22、ア
プリケーションキャッシュ52およびデータキャッシュ
54を有するメモリ50、およびネットワークインタフ
ェース25を備えている。JVM22は、クラスローダ
42および実行ユニット46を備えている。好ましく
は、JVM22は、バイトコードベリファイヤ44も備
えているが、メモリの制約された機器によってはこれが
実行されない場合もある。本発明によれば、クラスロー
ダ42は、本発明のアプリケーションマネージャ24を
使用して実行される。アプリケーションマネージャ24
は、他のJavaベースのプログラムのダウンロード、
実行およびキャッシングを行うJavaプログラムであ
る。JVM22は、組込み機器20上で実行を開始する
時、アプリケーションマネージャ24の実行を開始す
る。
【0015】アプリケーションマネージャ24は、ネッ
トワークベースのクラスローダとして動作するサーバ機
器であり、ネットワークプロトコル48によりネットワ
ーク14を介してアプリケーションクラスファイル40
(以下、クラスファイル40とする)を受取り、そのク
ラスファイル40中に含まれるアプリケーションクラス
を活性化することができる。当業者には周知であるよう
に、クラスファイル40は、Java(登録商標)コン
パイラによって生成されるハードウェアアーキテクチャ
非依存型バイトコードを有するファイルである。このバ
イトコードは、JVM22等のJVMによってのみ実行
が可能である。アプリケーションマネージャ24は、非
一般的なネットワークベースのクラスローダ(ClassLoa
der)であり、要求毎にネットワーク14からクラスフ
ァイル40をロードする。一般的なクラスローダによっ
て通常行われるようにJava(登録商標)loadClas
s()(ロードクラス)メソッドによってクラスファイル
40をロードする代りに、アプリケーションマネージャ
24は、サーバソケット等のネットワークプロトコル4
8で、クラスファイル40をダウンロードするという要
求を待つ。ダウンロード要求が受信されると、アプリケ
ーションマネージャ24はネットワーク14からクラス
ファイル40を受信し、それを解析してクラス28a、
28bにし、Java(登録商標)ClassLoader.define
Class()メソッドを呼出す。クラス28a、28bは、
Java(登録商標)ClassLoader.resolveClass()メソ
ッドを呼出すことによって解析され、オブジェクトのイ
ンスタンス化の用意ができていることを確実にする必要
がある。
【0016】図3は、アプリケーション26a、26
b、26cをどのようにして実行させるかを示してい
る。図示しているように、これは、次のようにして実行
される。すなわち、アプリケーションのJavaクラス
であるクラスオブジェクト28a、28bをインスタン
ス化し、クラスオブジェクト28a、28bのインスタ
ンスであるアプリケーションオブジェクト30a、30
b、30cを生成し、その後アプリケーション26a、
26b、26cを実行するためにアプリケーションオブ
ジェクト30a、30b、30cのメイン(main)メソ
ッドを呼出す。同じJava(登録商標)クラスの複数
のインスタンスを生成することにより、同じアプリケー
ションの複数のインスタンスを同時に実行することがで
きる。例えば、図3に示すように、アプリケーションオ
ブジェクト30a、30bは、同じクラスオブジェクト
28aのインスタンスであるが、アプリケーションオブ
ジェクト30cは、異なるクラスオブジェクト28bの
インスタンスである。従って、アプリケーション26
a、26bは、同時に実行することができる同じアプリ
ケーションの異なるインスタンスであるが、アプリケー
ション26cは、完全に異なるアプリケーションであ
る。
【0017】アプリケーションマネージャ24は、ダウ
ンロード、開始、停止、問合せおよびメモリ管理機能を
提供する。これらの機能をネットワーク14を介して提
供するために、組込み機器20は、ネットワークインタ
フェース25を有している。このネットワークインタフ
ェース25は、クライアントであるコンピュータシステ
ム12が組込み機器20のアプリケーションマネージャ
24に要求を送信することができるようにするネットワ
ークプロトコル48を実行している。好ましい実施の形
態において、ネットワークインタフェース25は、アプ
リケーションマネージャ24によって指定される汎用J
ava言語アプリケーションプログラムインタフェース
(Application Program Interface(API))を用い
て、アプリケーションマネージャ24に通信する。汎用
APIにより、コンピュータシステム12等のリモート
機器に、組込み機器20の所望の管理を指定する機能が
与えられる。付録Aは、本発明の実施の形態において定
義されるAPIを列挙している。
【0018】特に、アプリケーションマネージャ24
は、新たなアプリケーションがネットワーク14を介し
て組込み機器20にダウンロードされるのを可能にす
る。好ましい実施の形態では、これは、APIのloadAp
plClass()(ロードアプリケーションクラス)メソッド
によって実行される。loadAppleClass() メソッドは、
Javaのクラスファイル40のダウンロードおよび検
証、クラスファイル40に含まれるクラスオブジェクト
28a、28bの組込み機器20におけるJava(登
録商標)環境へのロードを処理し、Javaインタプリ
タまたはジャストインタイム(Just in Time(JI
T))コンパイラ(図示せず)を用いてアプリケーショ
ンオブジェクト30a、30b、30cをインスタンス
化することにより、クラスオブジェクト28a、28b
の実行を準備する。また、アプリケーションマネージャ
24は、組込み機器20上のJavaのアプリケーショ
ン26a、26b、26cの開始および停止を管理する
ことにより、コンピュータシステム12または他のネッ
トワーク化した機器において、ユーザが、組込み機器2
0にロードされたJavaのアプリケーション26a、
26b、26cの実行を制御することができるようにす
る。好ましい実施の形態では、これは、汎用APIのst
artAppl()(スタートアプリケーション)メソッドおよ
びstopAppl()(ストップアプリケーション)メソッドに
より実行される。また、アプリケーションマネージャ2
4は、いずれのクラスオブジェクト28a、28bが現
在ロードされているか、いずれのクラスがアプリケーシ
ョンオブジェクト30a、30b、30cを有している
か、および各アプリケーションオブジェクト(インスタ
ンス)はどのような実行状態(例えば、「初期化」、
「実行中」、「終了」)にあるか等のアプリケーション
情報の問合せを可能にする。これは、好ましい実施の形
態では、各々applClasses()(アプリケーションクラ
ス)メソッド、applications()(アプリケーション)メ
ソッドおよびapplInstances()(アプリケーションイン
スタンス)メソッドによって実行される。ロードされた
クラスオブジェクト28a、28bの各々の名前は、属
性として、好ましくはアプリケーションマネージャ24
オブジェクト内のハッシュテーブルとして、アプリケー
ションリスト23に格納される。また、アプリケーショ
ンマネージャ24は、空きメモリの容量および総メモリ
の容量等、Java環境からの情報の問合せを可能にす
る。好ましい実施の形態では、この情報の問合せは、fr
eeMemory()(フリーメモリ)メソッドおよびtotalMemor
y()(トータルメモリ)メソッドを用いて行われる。ま
た、アプリケーションマネージャ24は、ロードされた
アプリケーションがアンロードされなければならなくな
る前に必要な空きメモリの容量に制限を設定する機能、
およびキャッシングされたアプリケーションをアンロー
ドすべき順序を設定する機能を含む、メモリ管理機能を
提供する。これは、好ましい実施の形態では、setFreeM
emoryLimit()(セットフリーメモリリミット)メソッド
およびsetFreeAppsFirst()(セットフリーアプリケーシ
ョンファースト)メソッドを用いて実行される。空きメ
モリの制限およびアプリケーションをアンロードすべき
順序については、getFreeMemoryLimit()(ゲットフリー
メモリリミット)メソッドおよびgetFreeAppsFirstPoli
cy()(ゲットフリーアプリケーションファーストポリシ
ー)メソッドを用いて問合わせることができる。この情
報は、アプリケーションマネージャ24オブジェクト内
のハッシュテーブルに、各アプリケーションリスト23
エントリ毎に別々のフィールドとして、または別々のア
ンロードプライオリティリスト21として格納される。
【0019】ネットワークプロトコル48を用いて、ネ
ットワークインタフェース25を介するアプリケーショ
ンマネージャ24に対するネットワークアクセスが提供
される。ネットワークプロトコル48は、いくつかの他
の実施の形態のうちの任意のものによって実現するよう
にしてもよい。
【0020】第1の実施の形態では、ネットワークプロ
トコル48は、Java(登録商標)リモートメソッド
呼出(Remote Method Invocation(RMI))を用いて
実現される。JavaRMIにより、他のJVMに常駐
しているオブジェクトにおいて直接のメソッド呼出を行
うことができる。一般に、RMIには、オブジェクトの
シリアライズ、識別およびメソッドのディスパッチをサ
ポートするために大容量のメモリが必要である。組込み
機器が、RMIネームサーバの実行のサポートを含む実
行中のRMIの高メモリオーバヘッドをサポートする場
合、RMIを選択して実現するということは、組込み機
器20およびアプリケーションマネージャ24と対話
(interact)するクライアントアプリケーションがJa
vaベースである場合に適している。他の分散オブジェ
クトメカニズム(例えば、CORBA、DCOM)とR
MIとの間には、ブリッジが存在し、それにより、クラ
イアントにおいて他の言語で同様に書込みことが可能と
なる。アプリケーションマネージャ24は、RMIを使
用してリモートクライアント12から直接の呼出を受入
れることにより、アプリケーション26a、26b、2
6cをロードし、開始し、管理することができる。RM
Iベースのアプリケーションマネージャインタフェース
の簡単な例を、付録Bに示す。
【0021】第2の他の実施の形態では、ネットワーク
プロトコル48はネットワークソケット(例えば、TC
P/IPソケットプロトコル)を用いて実現される。ク
ライアント12(コンピュータシステム12)側で同様
にJava(登録商標)が使用される場合、ネットワー
クプロトコル48がクライアント12(コンピュータシ
ステム12)側とサーバ(組込み機器20)側との両方
で一貫していることを保証するために、Javaクラス
内にネットワークプロトコル48をラップする(wrap)
ことは有益である。クライアント12(コンピュータシ
ステム12)またはアプリケーションマネージャ24が
停止する可能性のあるネットワークの読出のブロック化
を、ネットワークプロトコル48が実行しないことを保
証するために、好ましくは、Java(登録商標)Sock
et.setSoTimeout()メソッドにより、またはJava
(登録商標)InputStream.available()メソッドを用い
てブロック化無しにどれくらいのデータが読出されるか
を判断することにより、read()(読出し)動作のための
待ちのタイムアウトが設定されている。
【0022】かかるネットワークソケットプロトコル方
式の1つの実現例では、呼出されるメソッドを識別する
単一バイトと、それに続く、ラッパ(wrapper)により
その特定のメソッドに対してデコードされる追加のデー
タとが、送信される。例えば、クラスファイル40をダ
ウンロードするために、クライアント12(コンピュー
タシステム12)は、その要求がダウンロードのための
ものであることを指定する「D」キャラクタバイトと、
それに続く送信されているデータの全体長と、それに続
く組込み機器20のネットワークアドレスとを送信す
る。他の実現例では、実際のデータはナル終了キャラク
タのクラス名であり、そのクラスがメインメソッドを含
むか否かを指定するバイトがその後に続き、更にクラス
データを含むバイトがその後に続く。プロトコルのデコ
ードを実行するために、仮想デコードメソッドをサポー
トするオブジェクトモデルが生成される。また、クライ
アント12(コンピュータシステム12)にメソッド呼
出の結果を返すことを、使用されている同様のプロトコ
ルを用いてカプセル化してもよい。このように、要求か
ら結果が非同期に返され、クライアント12(コンピュ
ータシステム12)は実際に、結果に対しネットワーク
サーバとして動作することができる。クライアント12
(コンピュータシステム12)が1つの組込みJVM2
2に通信する(talk)のみであり、結果を待ってアイド
ル状態である場合、クライアント(コンピュータシステ
ム12)が、結果が同期して戻ってくるのを待つ(タイ
ムアウト有りで)、より単純な方式を使用することがで
きる。
【0023】好ましい実施の形態では、アプリケーショ
ンマネージャ24は、Javaネットワークサーバ・ア
プリケーションとして実現され、Java(登録商標)
リモートメソッド呼出(RMI)プロトコル、ウェブが
ホストする要求のためのハイパーテキスト転送プロトコ
ル(HTTP)、またはTCP/IPソケットによるア
プリケーションレベルプロトコル等のネットワークプロ
トコル48にコード化される要求を受入れる。上述した
ように、ネットワークプロトコル48の要求の1つのタ
イプは、アプリケーションのJavaのクラスファイル
40のダウンロードである。好ましい実施の形態では、
クラスファイル40のダウンロードは、loadApplClas
s()メソッドまたはloadAndInit()(ロードおよび初期
化)メソッドを呼出すことによって実行される。上述し
たように、クラスファイル40は、JVM22がJav
aクラスオブジェクト(アプリケーションオブジェクト
30a、30b、30c)を生成するために使用するバ
イナリのJavaバイトコードストリームである。アプ
リケーションクラスファイル40のメモリ50へのダウ
ンロードに加えて、アプリケーション26a、26b、
26cが継承するあらゆる基底クラス、またはそのクラ
スファイル40に含まれるアプリケーションクラス28
a、28bとのインタフェースもまた、メモリ50のア
プリケーションキャッシュ52にダウンロードされる。
アプリケーションマネージャ24がクラスファイル40
のメモリ50へのキャッシングを可能にするため、ネッ
トワークプロトコル48は、startAppl()(スタートア
プリケーション)メソッド呼出が後に続くinitAppl()
(初期化アプリケーション)メソッドにより、メモリ5
0に常駐している既にダウンロードされているクラスフ
ァイルの実行を可能にする。クラスファイル40がダウ
ンロードされると、Java(登録商標)ClassLoader
APIを用いて、クラスファイル40に関連するクラス
オブジェクト28a、28bがインスタンス化される。
ClassLoader.defineClass()メソッドは、クラスファイ
ルのバイトアレイからクラスオブジェクト28a、28
bを構成する。クラスは、定義されると、クラスのリン
ク化を実行するために解析されなければならず、それに
よってインスタンスオブジェクトが生成されメソッドが
呼出される。解析プロセスは、Java(登録商標)Cl
assLoader.resolveClass() APIを呼出すことによっ
て起動される。
【0024】クラスオブジェクト28a、28bがロー
ドおよび定義されると、一例としての実施の形態ではJ
ava(登録商標)Class.newInstance() APIによ
り、クラスオブジェクト28a、28bのインスタンス
であるアプリケーションオブジェクト30a、30b、
30cが生成される。アプリケーションオブジェクト3
0a、30b、30cは、アプリケーション26a、2
6b、26cを開始するために所望のメソッドを呼出す
必要がある。newInstance()(ニューインスタンス)を
呼出すために、クラスオブジェクト28a、28bは、
属性をとらないデフォルトのコンストラクタを有してい
なければならない。
【0025】アプリケーション26a、26b、26c
は、予め生成されたアプリケーションオブジェクト30
a、30b、30cの所望のメソッドを呼出し、そのメ
ソッドに属性を渡すことによって実行される。アプリケ
ーションマネージャ24は、オブジェクトの呼出すメソ
ッド、および渡す属性(あるとすれば)が何であるかを
知らなければならない。これは、いくつかの方法のうち
の1つによって実行される。
【0026】1つの実施の形態では、すべてのアプリケ
ーションは、呼出すメソッドを指定するJavaインタ
フェースを実行する必要がある。例としてのインタフェ
ースを以下に示す。 このインタフェースは、アプリケーション26a、26
b、26cの実行時に呼出される最初のメソッドである
インスタンスメソッド「main()」を指定する。それがイ
ンスタンスメソッドであるため、クラスオブジェクト2
8a、28bのアプリケーションオブジェクト30a、
30b、30cは、アプリケーションマネージャ24に
より、main()を実行する前に生成されなければならな
い。main()のみが呼出されているため、このオブジェク
トはアプリケーションマネージャ24のJava(登録
商標)ApplBaseオブジェクトとしてもよい。この例で
は、main()メソッドは、クラスをダウンロードしたクラ
イアント(コンピュータシステム12)のネットワーク
アドレスを含むInetAddress引数を受取る。このよう
に、アプリケーションは、必要ならば周知のポートによ
りクライアント(コンピュータシステム12)に戻る方
向に通信することができる。
【0027】別の実施の形態では、JVM22が例えば
Java(登録商標)RMIによりリフレクションをサ
ポートする場合、メソッド名がアプリケーションマネー
ジャ24にダウンロードされ、リフレクションを用いて
所望のメソッドのアプリケーションクラスが探索され
る。クラスオブジェクト28a、28bがロードされる
と、所望のメソッドを見つけるためにそのクラスのJa
va(登録商標)getDeclaredMethod()が呼出される。g
etDeclaredMethod()はMethodオブジェクトを返すもので
あって、Methodオブジェクトは、invoke()(呼出)を呼
出すことにより、そのメソッドを実行するために使用す
ることができる。
【0028】更に他の実施の形態では、すべてのアプリ
ケーションが継承する元となる共通の基底クラスから拡
張されるメソッドが呼出される。
【0029】アプリケーションマネージャ24は、実行
中となると、アプリケーション26a、26b、26c
の新たな実行状態を記録する。各クラスオブジェクト2
8a、28bは、そのクラスの存在する各インスタンス
を識別する各々のインスタンスリスト29a、29bを
有している。インスタンスリスト29a、29bの各エ
ントリは、現アプリケーション26a、26b、26c
のライフサイクルの間にアプリケーションマネージャ2
4によって更新される実行状態変数を含む。
【0030】アプリケーションマネージャ24は、アプ
リケーション26a、26b、26cで発生するJav
a(登録商標)例外またはエラーのすべてを処理する。
そうしなければ、JVM22は終了することとなる。ア
プリケーションマネージャ24は、アプリケーションが
終了すると、そのアプリケーション26a、26b、2
6cがもはや実行していないということを(インスタン
スリスト29a、29bにおいて識別されるインスタン
スに対応する実行状態を更新することにより)記録し、
クラスオブジェクト28a、28bがメモリ50内にキ
ャッシングされるものでない場合、そのクラスオブジェ
クト28a、28bがガーベッジ・コレクトされるよう
にする。
【0031】クラスオブジェクト28a、28bのキャ
ッシングは、性能をより優れたものとする本発明の独特
の特徴である。アプリケーション26a、26b、26
cが実行される毎にアプリケーションクラス(クラスオ
ブジェクト)をダウンロードする代りに、アプリケーシ
ョンマネージャ24は、好ましくは、デフォルトでクラ
スオブジェクト28a、28bをキャッシングし、unlo
adAppl()(アンロードアプリケーション)メソッドを用
いて明示的に要求される場合、またはメモリ管理ハンド
ラ27がローメモリまたはノーメモリ状態の結果として
アンロードすべきクラスを選択する場合にのみ、クラス
オブジェクト28a、28bをアンロードする。好まし
い実施の形態では、メモリ管理ハンドラ27によって現
在ロードされているクラスがアンロードされる順序は、
setFreeAppsFirst()メソッドを用いて設定される。setF
reeAppsFirst()メソッドにより、クライアントは、ロー
メモリまたはノーメモリ状態の場合にアンロードされる
アプリケーションの順序を設定または変更することがで
きる。これは、クラスをアンロードするためのアプリケ
ーションの順位付けを指示するアプリケーションリスト
において、各エントリにアンロードプライオリティフィ
ールドを付加する等、いくつかの方法のうちの任意の方
法によって達成することができる。アプリケーションマ
ネージャ24は、クラスをキャッシングすることによ
り、クラスに対する参照(reference)を保持し、それ
によって、Java仮想マシン22に、クラスオブジェ
クト28a、28bに対するガーベッジ・コレクション
を行わせない。そして、クラスオブジェクト28a、2
8bを再利用して、クラスオブジェクト28a、28b
の新たなインスタンス30a、30b、30cを生成
し、アプリケーション機能を再実行することができる。
【0032】また、アプリケーションマネージャ24
は、好ましくは、アプリケーションが終了および/また
はアンロードされた後であっても、メモリ50内のデー
タキャッシュ54へのアプリケーションデータのキャッ
シングを可能にする。例として、電子テストドメインに
おけるJavaアプリケーションがある。アプリケーシ
ョンが最初に実行されるとセットアップ情報を保存する
ことができ、それによって、そのアプリケーションを将
来実行する場合により高速に実行することができる。こ
の例では、アプリケーションマネージャ24は、テスト
システム較正(calibration)情報をキャッシングする
ことができる。更に、テストシステム較正情報をデータ
キャッシュ54にキャッシングすることにより、アプリ
ケーションマネージャ54はデータへの参照を保持し、
それによってJava仮想マシンにデータをガーベッジ
・コレクトさせないようにする。従って、この方法での
データキャッシングにより、同じかまたは異なるアプリ
ケーションの後続する実行のために情報を保存すること
ができる。
【0033】アプリケーションマネージャ24は、アプ
リケーション26a、26b、26cをローメモリまた
はノーメモリ状態で実行を続けるよう試みる。JVM2
2が、アプリケーション26a、26b、26cの実行
中にメモリを使い尽くした場合、OutOfMemoryErrorエラ
ーが生成される。アプリケーションマネージャ24は、
ローメモリまたはノーメモリ状態を処理するメモリ管理
ハンドラ27を有している。好ましい実施の形態では、
メモリ管理ハンドラ27は、JVM22によって生成さ
れるOutOfMemoryErrorの発生により実行するようトリガ
される。1つの実施の形態では、メモリ管理ハンドラ2
7は、そのアプリケーションキャッシュからクラスオブ
ジェクト28a、28bおよびアプリケーションオブジ
ェクト30a、30b、30cを適切にダンプすること
により作用する。キャッシュされたクラスオブジェクト
28a、28bおよびアプリケーションオブジェクト3
0a、30b、30cをアンロードする順序は、setFre
eAppsFirst()メソッドを用いて設定される。あるいは、
その順序は、メモリ管理ハンドラ27自身においてコー
ド化された予め決められたアルゴリズムに従って決定さ
れる。アプリケーションマネージャ24は、Java
(登録商標)Runtime.gc()メソッドを呼出すことによ
り、アンロードされたクラスオブジェクト28a、28
bおよびアプリケーションオブジェクト30a、30
b、30cが回収(reclaim)可能であることをJVM
22に通知する。アプリケーションキャッシュ52から
クラスオブジェクト28a、28bをアンロードするこ
とにより、そのクラスオブジェクト28a、28bに関
連するアプリケーションオブジェクト30a、30b、
30cが同様に終了およびアンロードされる。従って、
アプリケーション実行の起動速度が重要である場合、ク
ラスオブジェクト28a、28bをアンロードする前に
アプリケーションオブジェクト30a、30b、30c
をアンロードすることが好ましい。一方で、特定のアプ
リケーションを無関係に実行させておくことが重要であ
る場合、その特定のアプリケーションを実行させておく
ために十分なメモリを解放するべく、それらオブジェク
トに関連するクラスと共に別のクラスのすべてのアプリ
ケーションオブジェクトをアンロードすることが好まし
い。アプリケーションを終了させることについての解決
法は、ローメモリ状態に応答して別々にメモリレベルを
監視するか、またはアプリケーションの結果をチェック
ポイントすることによりアプリケーションがチェックポ
イントの後に継続を再開することができるようにするこ
とである。これらの方法により、実行中のアプリケーシ
ョンは割込みされずに、または少なくとも可能な限り割
込みされずに継続することができる。
【0034】アプリケーションマネージャ24は、好ま
しくは、メモリ管理機能を提供する。1つの実施の形態
では、アプリケーションマネージャ24は、アプリケー
ションキャッシュ52およびデータキャッシュ54各々
におけるクラスオブジェクト28a、28b、アプリケ
ーションオブジェクト30a、30b、30cおよびグ
ローバルデータを参照する。それによって、それらの関
連するオブジェクトがガーベッジ・コレクトされないこ
とが保証される。
【0035】他の実施の形態では、メモリ管理ハンドラ
27は、連続的に空きメモリレベルを継続して監視し、
ローフリー(low-free)メモリまたはノーフリー(no-f
ree)メモリ時には、そのキャッシュ52、54からオ
ブジェクトを除去し、必要に応じてガーベッジ・コレク
ションをトリガして更にメモリを解放する。上述したよ
うに、ガーベッジ・コレクションは、アプリケーション
キャッシュ52またはデータキャッシュ54からアイテ
ムを除去した後にJava(登録商標)Runtime.gc()メ
ソッドを呼出すことによってトリガされる。アプリケー
ションマネージャ24を実行する場合、それがローメモ
リ状態においてメモリ50をどのように管理するかにつ
いて、選択を行わなければならない。1つの選択は、ロ
ーフリーメモリが発生した時に、アプリケーションキャ
ッシュ52またはデータキャッシュ54のいずれのキャ
ッシュから最初にアイテムが除去すべきかということで
ある。大抵のケースでは、アプリケーションオブジェク
ト30a、30b、30cおよび関連するクラスオブジ
ェクト28a、28bを除去し、必要に応じてそれらを
再ダウンロードする方が容易である。この判断は、グロ
ーバルデータを再生成するためにかかる長い時間に基づ
いている。
【0036】アプリケーションおよびグローバルデータ
オブジェクトは、好ましくは、キャッシング方式が正確
に作用するために可能な限り別々であるように設計され
ている。グローバルデータクラスがクラスオブジェクト
28a、28bのメンバとして参照される場合、クラス
オブジェクト28a、28bもまた参照されないという
ことがない限り、データクラスが参照されないというこ
とでメモリは解放されない。グローバルデータクラスが
クラスオブジェクト28a、28bを参照するという逆
の場合によっても、同じ結果となる。クラスオブジェク
ト28a、28bは、クラスメンバではなくメソッドに
おいてのみグローバルデータクラスを参照すべきであ
る。好ましくは、グローバルデータオブジェクトは、ク
ラスオブジェクト28a、28bを参照することはな
い。
【0037】図4は、アプリケーションキャッシュ52
の管理の一例としての実施の形態を示す動作フローチャ
ートである。アプリケーションマネージャ24は、クラ
イアントであるコンピュータシステム12から要求を受
信する(402)。要求の実行により空きメモリを使用
すると(例えば、loadAppl()、loadAndInit()、InitApp
l())、受信した要求の実行によりローメモリまたはノ
ーメモリ状態となったか否かを判断する(404)。そ
の場合、アプリケーションキャッシュ52からアンロー
ドするクラスオブジェクト28a、28bおよび/また
はアプリケーションオブジェクト30a、30b、30
cを選択する(406)。そして、選択したオブジェク
トをアプリケーションキャッシュ52からアンロードす
る(408)。受信した要求がloadAppl()またはloadAn
dInit()要求である場合、ネットワーク14からクラス
オブジェクトをロードし定義する(410)。要求がlo
adApp()要求である場合、その要求は完了する。要求がl
oadAndInit()要求またはInitAppl()要求である場合、ア
プリケーションオブジェクト30a、30b、30cを
インスタンス化し(412)、その要求は完了する。要
求がstartAppl()要求である場合、概してアプリケーシ
ョンオブジェクト30a、30b、30cのmain()メソ
ッドを呼出すことにより、アプリケーションを開始する
(414)。要求がstopAppl()要求である場合、アプリ
ケーションを停止する(416)。要求がunload()要求
である場合、クラスオブジェクト28a、28bをアン
ロードする(418)。要求がsetFreeMemoryLimit()要
求である場合、ローメモリ状態の判断の基準となる空き
メモリ閾値を設定する(420)。要求がsetFreeAppsF
irst()要求である場合、ローメモリまたはノーメモリ状
態が検出された時にアンロードのためにアプリケーショ
ンクラス28a、28bおよびオブジェクトクラス30
a、30b、30cが選択される順序を設定する(42
2)。要求が問合せ(例えば、いずれのアプリケーショ
ンクラスがロードされるか(applClasses())、いずれ
のアプリケーションが初期化されるか(application
s())、いずれのアプリケーションが現在実行中である
か(applInstances())、どのくらい使用可能なメモリ
が存在するか(freeMemory())、どのくらい総メモリが
存在するか(totalMemory())、現在の空きメモリ制限
閾値は何であるか(getFreeMemoryLimit())、またはク
ラスおよびアプリケーションオブジェクトをアンロード
するための現在の順序は何か(getFreeAppsFirstPolicy
()))、その問合せを実行し要求されたパラメータを返
す(424)。
【0038】ローメモリまたはノーメモリ状態が存在す
ると決定した場合(404)、一例としての実施の形態
では、アプリケーションマネージャ24は、アンロード
するよう選択されているオブジェクトに対する参照を除
去し、Java(登録商標)Runtime.gc()メソッドを呼
出すことにより、参照されないオブジェクトがアプリケ
ーションキャッシュ52から除去されるようにする。上
述したように、Java(登録商標)Runtime.gc()メソ
ッドによって参照されないクラスのみをガーベッジ・コ
レクトすることができるため、参照されないクラス28
a、28bのみがアプリケーションキャッシュ52から
除去される。JVM22の実現例によっては、そのクラ
スのClassLoaderオブジェクトもまたガーベッジ・コレ
クトされるクラスとして参照されてはならないものとし
てもよい。
【0039】図5は、本発明を採用するシステム500
の一例として実現例を示すクラス図である。図5の一例
としての実現例において定義および使用されるクラスの
各々の記述を、以下の表1に示す。表2には、図5の一
例として実現例において使用されるクラスの各々におい
て定義される主な属性の記述が含まれている。図5に示
すように、クラスApplMgr502は、クラスApplication
510の1対多のインスタンスを管理する。ApplMgr5
02は、クライアントクラスApplClient508とインタ
フェースするために、クラスClientProtocol506に通
信するクラスServerProtocol504を使用する。表1に
記述しているように、ApplMgr502は、アプリケーシ
ョンマネージャ24を実現するクラスである。Applicat
ion510は、単一のアプリケーションをモデル化して
いる。ServerProtocol504およびClientProtocol50
6は、クライアントインタフェース4を実現する。それ
らは共に、アプリケーションマネージャクラスApplMgr
502とクライアントクラスApplClient508との間の
ネットワークプロトコル48をカプセル化する。
【0040】表1 クラス:ApplMgr 記述:アプリケーションマネージャ全体のクラス クラス:Application 記述:単一のアプリケーションをモデル化 クラス:ServerProtocol,ClientProtocol 記述:ApplMgrによってサポートされるインタフェース
を表すApplMgrクラスとApplClientクラスとの間のネッ
トワークプロトコルをカプセル化 クラス:ApplBase 記述:ApplMgrによって使用されるためにApplicationが
定義しなければならないメソッドを定義するインタフェ
ース クラス:ApplClient 記述:ApplMgrクラスと対話する一例としてのクライア
ント側アプリケーション
【0041】表2 名前:ApplMgr.idata カテゴリ:属性 記述:Applicationクラスのライフタイムを超えて存続
する必要のあるグローバルデータ値のハッシュテーブ
ル。getメソッドおよびsetメソッドによりアクセスされ
る。 名前:ApplMgr.iappls カテゴリ:属性 記述:ApplMgrが管理するよう指示されたApplicationオ
ブジェクトの集まり 名前:Application.iclasses カテゴリ:属性 記述:このApplicationに関連するクラスのハッシュテ
ーブル。クラスは名前によって一意に識別される。クラ
スの階層構造を用いてアプリケーションを生成すること
ができるが、それにはハッシュテーブルの使用が必要で
ある。 名前:Application.iappls カテゴリ:属性 記述:現在実行中のアプリケーションのインスタンスの
集まり。インスタンスは、クラス名によって識別され、
インスタンスカウンタは生成される各インスタンスにつ
いてインクリメントされる。 名前:Application.imainClass カテゴリ:属性 記述:実行されるmain()ルーチンを含むクラス。実行さ
れるアプリケーションオブジェクトは、このクラスから
生成される。 名前:ServerProtocol.isock カテゴリ:属性 記述:ApplMgrとの通信のために使用されるServerSocke
t。 名前:ServerProtocol.iapplMgr. カテゴリ:属性 記述:ServerProtocolはあらゆる要求をデコードし、そ
の要求を処理するためにApplMgrに対し適当な呼出を行
う。あるいは、ServerProtocolに代えて、ApplMgr.に対
する直接のRMI呼出でもよい。 名前:ClientProtocol.isock カテゴリ:属性 記述:ClientProtocolがServerProtocolと通信する手段
であるソケット。
【0042】図6は、新たなクラスのロードを実行する
ためのクラス間の通信を示すシステム500のブロック
図である。表3は、その初期の仮説、ロード動作の結
果、およびロードを実行するために必要なエージェント
を指定している。ここに示すように、アプリケーション
マネージャクラスであるApplMgr502は、組込み機器
20のJVM22において実行中であり、かつ、ユーザ
が、クライアントであるコンピュータシステム12で実
行中のApplClient508に対し新たなクラスを組込み機
器20にダウンロードするよう命令することにより、ダ
ウンロードを要求したものと仮定する。
【0043】表3 仮説:ApplMgrは既にJVMで実行中である。 結果:アプリケーションに関連するクラスは、JVMに
ロードされており、「メインクラス」のインスタンスが
生成され、この新たなインスタンスにおいてinit()メソ
ッドが呼出される。 エージェント: User=ApplClientに対し新たなアプリケーションクラス
をApplMgrを実行している組込み機器にダウンロードす
るよう命令 ApplClient=アプリケーションクラスをダウンロードす
るホスト側プログラム ClientProtocol=クライアントのためのネットワーク通
信を処理するホスト側クラス ServerProtocol=ApplMgrのためのネットワーク通信を
処理するサーバ側クラス ApplMgr=アプリケーションマネージャクラス Application=ダウンロードされたアプリケーションを
モデル化するアプリケーションクラス 図6に示すように、ダウンロード動作は、クライアント
ユーザクラスApplClientU516等のクライアントユー
ザプリケーションからクライアントアプリケーションAp
plClient508へのユーザ要求602によって開始す
る。この例では、クライアントユーザクラスであるAppl
ClientU516は、「D」キャラクタと、それに続くク
ラスデータを含むファイルの名前と、更にそれに続くク
ラスデータを送信すべきネットワークノードとを送信す
るプロトコルに従うことにより、ダウンロード要求を生
成する。この例では、クラスデータは「test」と名づけ
られ、組込み機器20のネットワークノードアドレス
は、「HP」と名づけられている。ユーザ要求602に
より、ApplClient508が実行され、クラス「test」が
ノード「HP」にダウンロードされる。ApplClient50
8は、「test」に含まれるクラスデータをメモリに読出
し、その後ClientProtocl.loadClass()メソッドを呼出
してクラスをダウンロードする(604)。ClientProt
ocol506は、ノード「HP」上のServerProtocolへの
ネットワーク14コネクションを形成し、ネットワーク
14を介してクラスデータファイル「test」に関連する
クラスデータを送信する(606)。ServerProtocol5
04は、要求およびクラスデータをデコードし、その後
ApplMgr.loadClass()メソッドを呼出してクラスをロー
ドする(608)。ApplMgr502は、必要ならばクラ
スに対してApplicationオブジェクトを生成する(61
0)(すなわち、クラスは既にアプリケーションキャッ
シュにキャッシングされていない)。そして、ApplMgr
502は、Application510のloadClass()メソッドを
呼出し(612)、それにクラス「test」に関連するす
べてのクラスデータを渡す。新たなクラスオブジェクト
が、ApplicationsのApplMgrキャッシュに付加され(6
14)、それが管理するそのアプリケーションオブジェ
クトへのクラス「test」の付加を反映するようにアプリ
ケーションリストApplMgr.iapps23が更新される(6
14)。ロードされているクラス「test」がメインクラ
スである場合、Application510はクラスを定義して
解析し、クラスのインスタンスを生成し、インスタンス
のinit()メソッドを呼出す(618)。新たなアプリケ
ーションオブジェクトが、クラスキャッシュに付加され
(616)、その新たなアプリケーションオブジェクト
の付加を反映するようにインスタンスリスト29が更新
される(616)。真の結果は、クラスのロードが成功
したことを通知してApplClient508に戻される(62
0)。
【0044】実現例において、必要ならば、ServerProt
ocol504は、各要求を処理するための別々のスレッド
を生成し、複数の要求が同時に処理されるようにする。
このようにして実現された場合、ApplMgr502およびA
pplication510によって実現される方法は、適切に同
期しなければならない。
【0045】Application510が複数のクラスから構
成されている場合、各クラスに対しloadClass()要求が
作成されることとなる。これには、ApplMgr502が現
存のApplication510にクラスを配置および加えるこ
とができる必要がある。アプリケーションは、メインク
ラスの名前と同一の一意の名前によって識別される。慣
習的に、基底クラスおよびインタフェースは、メインク
ラスをロードする前にロードされる。これにより、メイ
ンクラスのインスタンスが正確に生成されることが保証
される。別の方法は、アプリケーションのインスタンス
を生成するために新たなApplMgrメソッドを生成すると
いうものである。これにより、同じクラスの複数のアプ
リケーションが同時に実行されることが可能になる。
【0046】図7は、アプリケーションの開始を実行す
るためのクラス間の通信を示すシステム500のブロッ
ク図である。表4は、初期の仮説、開始動作の結果、お
よび開始を実行するために必要なエージェントを指定し
ている。ここに示すように、アプリケーションマネージ
ャクラスであるApplMgr502は、組込み機器20のJ
VM22において実行中であり、かつ、ユーザが、その
ユーザのマシンで実行中のApplClient508に対し組込
み機器20でアプリケーションを開始するよう命令する
ことにより開始を要求したものと仮定する。
【0047】表4 仮説:ApplMgrは既にJVMで実行中である。ApplMgrに
より、アプリケーションクラスが予めロードされてい
る。 結果:所望のApplicationが実行を開始する。 エージェント: User=ApplCilentに対し、ノード「HP」でアプリケー
ション「test」を開始するよう命令。 ApplClient=Applicationsを開始するホスト側プログラ
ム ClientProtocol=クライアントのためのネットワーク通
信を処理するホスト側クラス ServerProtocol=ApplMgrネットワーク通信を処理する
サーバ側クラス ApplMgr=アプリケーションマネージャクラス Application=開始すべきアプリケーションをモデル化
するアプリケーションクラス ApplBase=開始中のアプリケーション・インスタンス 図7に示すように、開始動作は、クライアントユーザク
ラスApplClientU516等のクライアントユーザプリケ
ーションからクライアントアプリケーションApplClient
508へのユーザ要求702によって開始する。この例
では、クライアントユーザクラスApplClientU516
は、「B」キャラクタ(「begin(開始)」に対応)
と、それに続くアプリケーション名「test」と、更にそ
れに続くクラスデータが送信すべきネットワークノード
「HP」とを送信するプロトコルに従うことにより、開
始要求を生成する。要求702により、ApplClient50
8が実行され、ノード「HP」でアプリケーション「te
st」が開始される。ApplClient508は、ClientProtoc
ol.startAppl()メソッドを呼出してアプリケーションを
開始する(704)。ClientProtocol506は、ノード
「HP」におけるServerProtocol504へのネットワー
クコネクションを形成し、開始メッセージを送信する
(706)。ServerProtocol504は、開始要求をデコ
ードし、その後ApplMgr.startAppl()メソッドを呼出す
(708)。ApplMgr502は、適切なApplication51
0を配置し、その後Application510にstartAppl()メ
ソッドを呼出す(710)。Application510は、新
たなThread(スレッド)518を生成(712)してそ
れ自身のrun()(実行)メソッドを実行する(71
4)。run()メソッド内では、ApplBase514のメイン
メソッドが呼出され(716)、種々のパラメータが渡
される。Application510にいかなるパラメータも渡
されない場合、run()メソッドを直接に呼出すことがで
きる。そして、Application510は、アプリケーショ
ンインスタンスの状態を「実行中」に変更する(71
8)。
【0048】他の実施の形態では、ApplClassオブジェ
クト(すなわち、ClassLoader512)が、Application
510のインスタンスをモデル化するApplicationクラ
スを管理する。
【0049】図8は、アプリケーションの停止を実行す
るためのクラス間の通信を示すシステム500のブロッ
ク図である。表5は、初期の仮説、停止動作の結果、お
よび停止を実行するために必要なエージェントを指定し
ている。ここに示すように、アプリケーションマネージ
ャクラスApplMgrは組込み機器20のJVM22におい
て実行中であり、かつ、ユーザが、そのユーザのマシン
で実行中のApplClientに対し組込み機器20でアプリケ
ーションを停止するよう命令することにより停止を要求
したものと仮定する。
【0050】表5 仮説:ApplMgrは、既にJVMにおいて実行中である。A
pplMgrによりアプリケーションクラスが予めロードされ
ている。アプリケーションは既に実行中である。 結果:所望のApplicationが実行を停止する。 エージェント: User=ApplClientに対しノードHPでのアプリケーショ
ンtestの停止を命令 ApplClient=Applicationsを開始するホスト側プログラ
ム ClientProtocol=クライアントに対するネットワーク通
信を処理するホスト側クラス ServerProtocol=ApplMgrネットワーク通信を処理する
サーバ側クラス ApplMgr=アプリケーションマネージャクラス Application=停止すべきApplBaseインスタンスを含む
アプリケーションクラス ApplBase=停止すべき実行中のアプリケーションインス
タンス 図8に示すように、停止動作は、クライアントユーザク
ラスApplClientU516等のクライアントユーザプリケ
ーションからクライアントアプリケーションApplClient
508へのユーザ要求802で開始する。この例では、
クライアントユーザクラスApplClientU516は、
「E」キャラクタ(「end(終了)」に対応)と、それ
に続くアプリケーション名「test」と、更にそれに続く
クラスデータを送信すべきネットワークノード「HP」
とを送信するプロトコルに従って、停止要求を生成す
る。ユーザ要求802により、ApplClient508が実行
され、ノード「HP」でのアプリケーション「test」の
実行が停止する。ApplClient508は、ClientProtoco
l.stopAppl()メソッドを呼出してアプリケーションを停
止する(804)。ClientProtocol506は、ノード
「HP」でのServerProtocol504に対するネットワー
クコネクションを形成し、停止メッセージを送信する
(806)。ServerProtocol504は、停止要求をデコ
ードし、その後ApplMgr.stopAppl()メソッドを呼出す
(808)。ApplMgr502は、適切なApplication51
0を配置し、その後Application510にstopAppl()メ
ソッドを呼出す(810)。Application510は、sto
pAppl()に渡された名前によってApplBase514インス
タンスを配置し、そのterminate()(終了)メソッドを
呼出す(812)。そして、アプリケーションは、Thre
ad.join()を用いてApplBaseが終了したことを確実にす
る。Application510は、ApplBase514インスタン
スの状態を「終了」に変更する(814)。
【0051】アプリケーションはそれ自身のスレッドに
よって実行中であるため、ApplBase514インスタンス
の停止は、非同期イベントである。アプリケーションの
停止を、実際には待たないことが望ましい。それは、ア
プリケーションが、その終了フラグをポーリングしない
場合、停止しないためである。従って、実現例では、そ
の代りに、タイムアウトを用いてjoin()(ジョイン)メ
ソッドを使用し、stop()を呼出すことにより強制的に終
了してもよい。
【0052】図9は、Application510のインスタン
スの実行中にローメモリまたはノーメモリ状態が発生し
た場合のクラス間の通信を示すシステム500のブロッ
ク図である。表6は、初期の仮説、アウトオブメモリ状
態の結果、およびその状態の処理を実行するために必要
なエージェントを指定している。ここに示すように、ア
プリケーションマネージャクラスApplMgr502は組込
み機器20のJVM22において実行中であり、1つま
たは複数のアプリケーションクラスがロードされ実行中
であると仮定する。
【0053】表6 仮説:ApplMgrは、既にJVMにおいて実行中である。
1つまたは複数のアプリケーションクラスがロードされ
実行中である。 結果:JVMおよびApplMgrは、実行を継続し、ユーザ
プリケーションクラスおよびインスタンスキャッシュを
管理することによりメモリを解放する。 エージェント: User=ApplClientに対し、ノード「HP」でのアプリケ
ーション「stop」を停止するよう命令 ApplClient=Applicationsを開始するホスト側プログラ
ム ClientProtocol=クライアントに対するネットワーク通
信を処理するホスト側クラス ServerProtocol=ApplMgrネットワーク通信を処理する
サーバ側クラス ApplMgr=アプリケーションマネージャクラス Application=停止すべきApplBaseインスタンスを含む
アプリケーションクラス ApplBase=停止すべき実行中のアプリケーションインス
タンス
【0054】図9に示すように、実行中のApplication
510のインスタンスApplBase514は、OutOfMemoryE
rrorを生成する(902)。好ましくは、OutOfMemoryE
rrorは、Application.run()メソッド内のメモリ管理ハ
ンドラ27によって処理される(904)。メモリ管理
ハンドラ27は、ApplMgr.ourOfMemory()メソッドを呼
出す(906)ことにより、ApplMgr502に対しその
状態を通知する。そして、Application510は、run()
から戻り、ApplBase514スレッドを停止する(90
8)。ApplMgr502は、そのアプリケーションキャッ
シュ52を通して、Application.applCount()メソッド
を呼出す(908)ことにより実行中のApplBasesを有
していないクラスを探す。ApplBasesを実行していない
それらアプリケーションは、freeMemory()と命令されれ
(910)、それにより、アプリケーションキャッシュ
52からそれらのクラスをダンプし、すべてのオブジェ
クト参照をナルに設定する。その後、ApplMgr502
は、そのアプリケーションキャッシュ52からそれらア
プリケーションを除去し(912)、Runtime.gc()を呼
出してガーベッジ・コレクションによって参照されない
オブジェクトが収集されるようにする(914)。これ
により、メモリが解放される。
【0055】以上、本発明の実施例について詳述した
が、以下、本発明の各実施態様の例を示す。
【0056】(実施態様1)組込み機器(20)におい
て1つ以上のアプリケーション(26a、26b、26
c)を管理するアプリケーションマネージャ(24)で
あって、前記組込み機器(20)が、クラスオブジェク
ト(28a、28b)を格納するアプリケーションキャ
ッシュ(52)と、ネットワーク(14)を介してクラ
イアント(12)と通信するネットワークインタフェー
ス(25)と、該組込み機器(20)にインストールさ
れ該組込み機器(20)上で実行されるJava仮想マ
シン(JVM)(22)と、を備えるアプリケーション
マネージャ(24)において、(a)エントリを有し、
前記エントリの各々が、前記組込み機器(20)に現在
ロードされているクラスオブジェクト(28a、28
b)を識別するクラスオブジェクトリスト(23)と、
(b)前記ネットワークインタフェース(25)を介し
て前記クライアント(12)から受信するアプリケーシ
ョンクラス(28a、28b)をロードし、前記アプリ
ケーションクラスに対する新たなクラスオブジェクト
(28a、28b)を生成し、前記アプリケーションキ
ャッシュ(52)に前記新たなクラスオブジェクト(2
8a、28b)を格納し、前記新たなクラスオブジェク
ト(28a、28b)を前記アプリケーションキャッシ
ュ(52)にロードされているものとして識別するため
に、前記クラスオブジェクトリスト(23)に新たなエ
ントリを付加するクラスローダメソッド(loadAppl()、
loadAndInit())と、を具備するアプリケーションマネ
ージャ(24)。
【0057】(実施態様2)各クラスオブジェクト(2
8a、28b)は、前記クラスオブジェクトリスト(2
3)で識別されるものであり、エントリを有し、前記エ
ントリの各々が、前記組込み機器(20)上で現在イン
スタンス生成されている前記クラスオブジェクトのイン
スタンス(30a、30b、30c)を識別するインス
タンスリスト(29a、29b)を具備する、実施態様
1記載のアプリケーションマネージャ(24)。
【0058】(実施態様3)前記インスタンスリスト
(29a、29b)の各エントリは、該エントリに対応
する前記インスタンス(30a、30b、30c)の現
実行状態を示す実行状態属性を有する、実施態様2記載
のアプリケーションマネージャ(24)。
【0059】(実施態様4)開始すべきインスタンス
(30a、30b、30c)が存在しない場合、クラス
オブジェクト(28a、28b)の新たなインスタンス
(30a、30b、30c)を生成して、前記新たなイ
ンスタンス(30a、30b、30c)を前記クラスオ
ブジェクト(28a、28b)の前記インスタンスリス
ト(29a、29b)に付加し、前記開始すべきインス
タンスが実行を開始するようにし、前記開始すべきイン
スタンス(30a、30b、30c)が現在実行中であ
ることを示すために、前記開始すべきインスタンスの前
記インスタンスリスト(29a、29b)の前記エント
リに対応する前記実行状態属性を更新する、開始アプリ
ケーションメソッド(Init()、Start())を具備する、
実施態様3記載のアプリケーションマネージャ(2
4)。
【0060】(実施態様5)前記組込み機器(20)上
で現在実行中であり、かつ、停止すべきであるインスタ
ンス(30a、30b、30c)が実行を停止するよう
にし、前記停止すべきインスタンス(30a、30b、
30c)が実行中でないことを示すために、前記停止す
べきインスタンス(30a、30b、30c)の前記イ
ンスタンスリスト(29a、29b)の前記エントリに
対応する前記実行状態属性を更新する停止アプリケーシ
ョンメソッド(stopAppl())を具備する、実施態様4記
載のアプリケーションマネージャ(24)。
【0061】(実施態様6)ローメモリまたはアウトオ
ブメモリ状態(OutOfMemoryError())の検出に対応し
て、前記アプリケーションキャッシュ(52)にキャッ
シングされたクラスオブジェクト(28a、28b)の
うちアンロードすべきクラスオブジェクト(28a、2
8b)を選択し、前記アプリケーションキャッシュ(5
2)から前記選択したクラスオブジェクト(28a、2
8b)をアンロードするメモリ管理ハンドラ(27)を
具備する、実施態様1から実施態様5記載のアプリケー
ションマネージャ(24)。
【0062】上に詳述したように、本発明は、アプリケ
ーションマネージャおよびAPI仕様を提供し、電子機
器または装置において、およびリソース制約が制限され
た環境を有する他の組込みシステムにおいて使用するこ
とが企図されたJava仮想マシン内で実行される。本
発明は、より優先度の高いアプリケーションのためにメ
モリを解放すべくメモリリソースが制約されることとな
った場合に、将来の実行のためにアプリケーションをキ
ャッシングおよび終了する柔軟性を提供する。
【0063】以下に、付録A及び付録Bを添付する。 付録A JavaアプリケーションマネージャAPI import java.io.IOException; public interface ApplMgr { // アプリケーション中心のメソッド public string[ ] applClasses( ) throws IOException; public string[ ] applications( ) throws IOException; public string[ ] applInstances( ) throws IOException; public void loadApplClass( String applName, String className, boolean mainClass, byte classData[ ] ) throws IOException; public String initAppl( String applName ) throws IOException; // 動作するメインクラスでなければならない public String loadAndInit( String applName, String className, byte classData[ ] ) throws IOException; public String startAppl( String applName, String applId ) throws IOExcep tion; public void stopAppl( String applName, String applId ) throws IOExceptio n; public void unloadAppl( String applName ) throws IOException; // メモリAPI public long freeMemory( ) throws IOException; public long totalMemory( ) throws IOException; public double getFreeMemoryLimit( ) throws IOException; public void setFreeMemoryLimit( double percent ) throws IOException; public boolean getFreeAppsFirstPolicy( ) throws IOException; public void setFreeAppsFirst( boolean val ) throws IOException; }// interface ApplMgr 終了
【0064】 付録B RMIベースのアプリケーションマネージャインタフェースの簡単な例public i nterface ApplMgr extends java.rmi.Remote { // アプリケーション管理 API public void loadClass( String className, byte classData[ ], boolean main ) throws RemoteException; public Object startAppl( String className, String args[ ] ) throws Remot eException; public void stopAppl( Object appl ) throws RemoteException; unloadClass( String className ); //ロードされたクラスのリスト及び実行中のアプリケーション名の入手 public String[ ] enumerateApplClasses( ) throws RemoteException; public String[ ] enumerateAppls( ) throws RemoteException; // JVM情報の入手 - システム及びランタイムクラスを参照 public long freeMemory( ) throws RemoteException; public long totalMemory( ) throws RemoteException; public Properties getProperties( ) throws RemoteException; }
【図面の簡単な説明】
【図1】本発明が動作するネットワークシステムのシス
テム図である。
【図2】本発明が実行される組込み機器のブロック図で
ある。
【図3】本発明に従って、アプリケーションが実行され
る過程を示す系統線図である。
【図4】本発明に従って実現されるアプリケーションマ
ネージャの1つの実施形態の動作フローチャートであ
る。
【図5】本発明に従って実現されるアプリケーションマ
ネージャの1つの実現例のクラスダイアグラムである。
【図6】ロード動作を実行するための図5に示すクラス
間の通信を示す系統線図である。
【図7】開始動作を実行するための図5に示すクラス間
の通信を示す系統線図である。
【図8】停止動作を実行するための図5に示すクラス間
の通信を示す系統線図である。
【図9】アウトオブメモリ状態を処理するための図5に
示すクラス間の通信を示す系統線図である。
【符号の説明】
12:コンピュータシステム 14:ネットワーク 20:組込み機器 23:アプリケーションリスト 24:アプリケーションマネージャ 25:ネットワークインタフェース 26a、26b、26c:アプリケーション 27:メモリ管理ハンドラ 28a、28b:クラスオブジェクト 29a、29b:インスタンスリスト 30a、30b、30c:アプリケーションオブジェク
ト 52:アプリケーションキャッシュ

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 組込み機器において1つ以上のアプリケ
    ーションを管理するアプリケーションマネージャであっ
    て、前記組込み機器が、クラスオブジェクトを格納する
    アプリケーションキャッシュと、ネットワークを介して
    クライアントと通信するネットワークインタフェース
    と、該組込み機器にインストールされ該組込み機器上で
    実行されるJava仮想マシンと、を備えるアプリケー
    ションマネージャにおいて、(a)エントリを有し、前
    記エントリの各々が、前記組込み機器に現在ロードされ
    ているクラスオブジェクトを識別するクラスオブジェク
    トリストと、(b)前記ネットワークインタフェースを
    介して前記クライアントから受信するアプリケーション
    クラスをロードし、前記アプリケーションクラスに対す
    る新たなクラスオブジェクトを生成し、前記アプリケー
    ションキャッシュに前記新たなクラスオブジェクトを格
    納し、前記新たなクラスオブジェクトを前記アプリケー
    ションキャッシュにロードされているものとして識別す
    るために、前記クラスオブジェクトリストに新たなエン
    トリを付加するクラスローダメソッドと、を具備するア
    プリケーションマネージャ。
JP2000055728A 1999-03-01 2000-03-01 組込み機器用Javaアプリケーションマネージャ Pending JP2000250758A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US259616 1981-05-01
US09/259,616 US6430570B1 (en) 1999-03-01 1999-03-01 Java application manager for embedded device

Publications (1)

Publication Number Publication Date
JP2000250758A true JP2000250758A (ja) 2000-09-14

Family

ID=22985656

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000055728A Pending JP2000250758A (ja) 1999-03-01 2000-03-01 組込み機器用Javaアプリケーションマネージャ

Country Status (3)

Country Link
US (1) US6430570B1 (ja)
JP (1) JP2000250758A (ja)
CN (1) CN1197004C (ja)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001084303A1 (fr) * 2000-05-04 2001-11-08 Access Co.,Ltd. Procede et systeme de traitement d'informations
EP1246058A2 (en) * 2001-03-26 2002-10-02 Canon Kabushiki Kaisha Apparatus and method for managing an application in an incorporated equipment
JP2004312711A (ja) * 2003-03-25 2004-11-04 Ricoh Co Ltd 画像形成装置及び画像形成装置を遠隔のアプリケーションにより操作する方法
WO2005064467A1 (ja) * 2003-12-26 2005-07-14 Ntt Docomo, Inc. 通信端末およびプログラム
JP2005208691A (ja) * 2004-01-19 2005-08-04 Networks Plus Inc ウェブページまたはデジタル映像ページ上での情報収集とコミュニケーションを可能にするための画像データを活用した方法、画像データプログラム製品、情報処理装置およびシステム
US7032227B2 (en) 2000-08-14 2006-04-18 Twin Communications Of America, Inc. Portable operating environment for information devices
JP2006525575A (ja) * 2003-04-29 2006-11-09 ソニー エリクソン モバイル コミュニケーションズ, エービー ジャバマイクロデバイスにおけるジャバアプリケーションのデバッグ用の、オフデバイスクラス/リソースローディング方法、システム及びコンピュータプログラム製品
EP1385089A3 (en) * 2002-07-26 2007-01-24 Ricoh Company, Ltd. Image forming apparatus, information processing apparatus, program execution method and program producing method
JP2007519110A (ja) * 2004-01-21 2007-07-12 インターナショナル・ビジネス・マシーンズ・コーポレーション 可動オブジェクトを有するグリッド対応仮想マシンのための方法およびシステム
JP2010057186A (ja) * 2003-03-25 2010-03-11 Ricoh Co Ltd 端末装置、方法、及びプログラム
JP2010187070A (ja) * 2009-02-10 2010-08-26 Sony Corp 情報処理装置、情報処理方法、プログラムおよび情報処理システム
US9606846B2 (en) 2005-07-29 2017-03-28 Sap Se System and method for dynamic proxy generation

Families Citing this family (101)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6938254B1 (en) * 1997-05-06 2005-08-30 Microsoft Corporation Controlling memory usage in systems having limited physical memory
EP1073957B1 (en) 1998-03-23 2003-05-21 Microsoft Corporation Application program interfaces in an operating system
US7283991B1 (en) * 1999-03-11 2007-10-16 Microsoft Corporation Caching system for path search optimization
US6845498B1 (en) * 1999-05-11 2005-01-18 Microsoft Corporation Method and apparatus for sharing data files among run time environment applets in an integrated circuit card
EP1188291B1 (en) * 1999-06-11 2005-04-27 Microsoft Corporation General api for remote control of devices
DE19929751A1 (de) * 1999-06-30 2001-01-18 Siemens Ag System und Verfahren zur Übertragung von Daten, insbesondere zwischen einem Anwender- und einem Serverprogramm im Bereich der Automatisierungstechnik mit verteilten Objekten
US6701334B1 (en) * 1999-07-13 2004-03-02 Sun Microsystems, Inc. Methods and apparatus for implementing individual class loaders
US6874145B1 (en) * 1999-07-13 2005-03-29 Sun Microsystems, Inc. Methods and apparatus for implementing an application lifecycle design for applications
US7257812B1 (en) 1999-12-16 2007-08-14 Sun Microsystems, Inc. Methods and apparatus for managing an application
US7882501B1 (en) * 1999-08-13 2011-02-01 Oracle America, Inc. System and method for enabling dynamic modifed class reloading in an application server environment
US7028298B1 (en) * 1999-09-10 2006-04-11 Sun Microsystems, Inc. Apparatus and methods for managing resource usage
FR2801118B1 (fr) * 1999-11-17 2001-12-21 Bull Cp8 Procede de chargement d'applications dans un systeme embarque multi-application, systeme embarque correspondant, et procede d'execution d'une application du systeme embarque
US6757291B1 (en) 2000-02-10 2004-06-29 Simpletech, Inc. System for bypassing a server to achieve higher throughput between data network and data storage system
US20010049726A1 (en) * 2000-06-02 2001-12-06 Guillaume Comeau Data path engine
US6941351B2 (en) * 2000-07-11 2005-09-06 Microsoft Corporation Application program caching
US6829758B1 (en) * 2000-07-14 2004-12-07 Nokia Internet Communications, Inc. Interface markup language and method for making application code
US6651140B1 (en) * 2000-09-01 2003-11-18 Sun Microsystems, Inc. Caching pattern and method for caching in an object-oriented programming environment
US20110219035A1 (en) * 2000-09-25 2011-09-08 Yevgeny Korsunsky Database security via data flow processing
US20020165947A1 (en) * 2000-09-25 2002-11-07 Crossbeam Systems, Inc. Network application apparatus
US8010469B2 (en) 2000-09-25 2011-08-30 Crossbeam Systems, Inc. Systems and methods for processing data flows
US20110213869A1 (en) * 2000-09-25 2011-09-01 Yevgeny Korsunsky Processing data flows with a data flow processor
US20110214157A1 (en) * 2000-09-25 2011-09-01 Yevgeny Korsunsky Securing a network with data flow processing
US20070192863A1 (en) * 2005-07-01 2007-08-16 Harsh Kapoor Systems and methods for processing data flows
US20100042565A1 (en) * 2000-09-25 2010-02-18 Crossbeam Systems, Inc. Mezzazine in-depth data analysis facility
US9525696B2 (en) 2000-09-25 2016-12-20 Blue Coat Systems, Inc. Systems and methods for processing data flows
US9800608B2 (en) 2000-09-25 2017-10-24 Symantec Corporation Processing data flows with a data flow processor
EP1207454A1 (en) * 2000-11-15 2002-05-22 International Business Machines Corporation Java run-time system with modified linking identifiers
US7191453B2 (en) * 2000-11-30 2007-03-13 Intel Corporation Discovery and integration of Jini services in non-Java clients
US20020083430A1 (en) * 2000-12-26 2002-06-27 Tadao Kusuda Uninstall control apparatus which controls uninstallation of device control software
US20020129351A1 (en) * 2001-03-07 2002-09-12 Nexusedge Technologies Pty. Ltd. Software engine and method for software application loading
US6836796B2 (en) * 2001-03-16 2004-12-28 Digi International, Inc. System and method to manage network-enabled embedded devices operating under various protocols
US20030061292A1 (en) 2001-03-23 2003-03-27 Mark Underseth System and method for providing an interface for com-compliant applications to communicate with embedded systems
US7530076B2 (en) * 2001-03-23 2009-05-05 S2 Technologies, Inc. Dynamic interception of calls by a target device
JP2002351680A (ja) * 2001-05-29 2002-12-06 Matsushita Electric Ind Co Ltd アプリケーション管理装置とアプリケーション管理システム
US20030055911A1 (en) * 2001-09-17 2003-03-20 Peterson Erik Lawrence System and method for retrieving data over a network
US20030192038A1 (en) * 2002-04-09 2003-10-09 Thomas Hagmann Linking data objects to a project development system
JP2003330732A (ja) * 2002-05-17 2003-11-21 Canon Inc 画像形成装置、制御方法、制御プログラム
US7529822B2 (en) * 2002-05-31 2009-05-05 Symantec Operating Corporation Business continuation policy for server consolidation environment
FI116166B (fi) * 2002-06-20 2005-09-30 Nokia Corp Menetelmä ja järjestelmä sovellusistuntojen suorittamiseksi elektroniikkalaitteessa, ja elektroniikkalaite
US20040003018A1 (en) * 2002-06-26 2004-01-01 Pentkovski Vladimir M. Method and system for efficient handlings of serial and parallel java operations
CN1818866A (zh) * 2002-07-26 2006-08-16 株式会社理光 状态转换模型
US7526482B2 (en) * 2002-08-01 2009-04-28 Xerox Corporation System and method for enabling components on arbitrary networks to communicate
GB0229670D0 (en) * 2002-12-19 2003-01-29 Ibm System and method for managing memory resources in a shared memory system
US7089340B2 (en) * 2002-12-31 2006-08-08 Intel Corporation Hardware management of java threads utilizing a thread processor to manage a plurality of active threads with synchronization primitives
US20040153996A1 (en) * 2003-01-30 2004-08-05 International Business Machines Corporation Method and system for determining the defining classLoader of a Java class as it is being defined
US7870352B2 (en) * 2003-11-13 2011-01-11 Stalker Altan J State-based memory unloading
US8302111B2 (en) 2003-11-24 2012-10-30 Time Warner Cable Inc. Methods and apparatus for hardware registration in a network device
US7266726B1 (en) * 2003-11-24 2007-09-04 Time Warner Cable Inc. Methods and apparatus for event logging in an information network
CN100365568C (zh) * 2004-01-06 2008-01-30 英业达股份有限公司 Java小应用程序下插件功能的实现方法
US9213538B1 (en) 2004-02-06 2015-12-15 Time Warner Cable Enterprises Llc Methods and apparatus for display element management in an information network
US7168513B2 (en) * 2004-02-27 2007-01-30 The Regents Of The University Of California Dynamic legged robot
US7900206B1 (en) 2004-03-31 2011-03-01 Symantec Operating Corporation Information technology process workflow for data centers
US7610586B2 (en) * 2004-04-30 2009-10-27 Tvworks, Llc Resource manager for clients in an information distribution system
KR100559251B1 (ko) * 2004-05-12 2006-03-15 한국생산기술연구원 개방형 인터넷망 기반의 로봇 개발을 위한 분산소프트웨어 통합서비스방법
US7831965B1 (en) * 2004-08-12 2010-11-09 Oracle America, Inc. Method and apparatus for facilitating intermediate linking of binary files in a virtual machine
US7398523B2 (en) * 2004-08-19 2008-07-08 International Business Machines Corporation Adaptive class loading
US7930693B2 (en) * 2005-04-04 2011-04-19 Cisco Technology, Inc. Method and system for accessing and launching a java based applet as a locally installed application
EP1868135A1 (en) * 2005-06-29 2007-12-19 Research In Motion Limited System and method for privilege management and revocation
US8305398B2 (en) * 2005-07-01 2012-11-06 Microsoft Corporation Rendering and compositing multiple applications in an interactive media environment
US20070006065A1 (en) * 2005-07-01 2007-01-04 Microsoft Corporation Conditional event timing for interactive multimedia presentations
US8020084B2 (en) * 2005-07-01 2011-09-13 Microsoft Corporation Synchronization aspects of interactive multimedia presentation management
US20070006062A1 (en) * 2005-07-01 2007-01-04 Microsoft Corporation Synchronization aspects of interactive multimedia presentation management
US7941522B2 (en) * 2005-07-01 2011-05-10 Microsoft Corporation Application security in an interactive media environment
US8108787B2 (en) * 2005-07-01 2012-01-31 Microsoft Corporation Distributing input events to multiple applications in an interactive media environment
US20070006078A1 (en) * 2005-07-01 2007-01-04 Microsoft Corporation Declaratively responding to state changes in an interactive multimedia environment
US7721308B2 (en) * 2005-07-01 2010-05-18 Microsoft Corproation Synchronization aspects of interactive multimedia presentation management
US20070006238A1 (en) * 2005-07-01 2007-01-04 Microsoft Corporation Managing application states in an interactive media environment
US20070006079A1 (en) * 2005-07-01 2007-01-04 Microsoft Corporation State-based timing for interactive multimedia presentations
US8799757B2 (en) 2005-07-01 2014-08-05 Microsoft Corporation Synchronization aspects of interactive multimedia presentation management
US8656268B2 (en) * 2005-07-01 2014-02-18 Microsoft Corporation Queueing events in an interactive media environment
US8326990B1 (en) 2005-07-15 2012-12-04 Symantec Operating Corporation Automated optimal workload balancing during failover in share-nothing database systems
US20070061804A1 (en) * 2005-09-02 2007-03-15 Anzelde Thomas R Apparatus, system, and method for managing task instances
DE102005045904B4 (de) * 2005-09-26 2022-01-05 Siemens Healthcare Gmbh Datenverarbeitungseinrichtung mit Performance-Steuerung
US7765537B2 (en) * 2005-11-21 2010-07-27 International Business Machines Corporation Profiling interface assisted class loading for byte code instrumented logic
CA2660366C (en) * 2006-08-17 2016-08-09 Research In Motion Limited Enhanced user interface manager and method for managing non-contemporaneous user interface modules
US8151201B2 (en) * 2006-08-17 2012-04-03 Research In Motion Limited User interface manager and method for reacting to a change in system status
US20080133689A1 (en) * 2006-10-05 2008-06-05 Holt John M Silent memory reclamation
CN100471135C (zh) 2007-01-26 2009-03-18 华为技术有限公司 实现业务分发与同步的设备、系统及方法
JP4855970B2 (ja) * 2007-02-20 2012-01-18 株式会社エヌ・ティ・ティ・ドコモ 端末装置およびプログラム
US8448193B2 (en) * 2007-04-27 2013-05-21 Ricoh Company, Ltd. Image forming device, information processing method, and information processing program
US8010973B2 (en) * 2007-05-31 2011-08-30 Calix, Inc. Class loader for managing a network
US8239861B2 (en) * 2008-02-07 2012-08-07 Arm Limited Software-based unloading and reloading of an inactive function to reduce memory usage of a data processing task performed using a virtual machine
JP5184268B2 (ja) * 2008-09-08 2013-04-17 株式会社エヌ・ティ・ティ・ドコモ 情報処理装置及びプログラム
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US8732855B2 (en) 2010-09-30 2014-05-20 Google Inc. Launching a cached web application based on authentication status
US9165136B1 (en) * 2010-10-27 2015-10-20 Amazon Technologies, Inc. Supervising execution of untrusted code
US9229743B2 (en) * 2011-09-23 2016-01-05 International Business Machines Corporation Prevention of classloader memory leaks in multitier enterprise applications
US9348678B1 (en) * 2012-06-20 2016-05-24 Mobile Iron, Inc. Partitioned application environment
US9063721B2 (en) 2012-09-14 2015-06-23 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
US9632797B2 (en) * 2013-01-31 2017-04-25 Hewlett Packard Enterprise Development Lp Updating a commit list to indicate data to be written to a firmware interface variable repository
CN105095198B (zh) * 2014-04-16 2018-12-04 阿里巴巴集团控股有限公司 一种访问数据实体的方法及装置
US9405578B2 (en) 2014-07-11 2016-08-02 Accenture Global Services Limited Intelligent application back stack management
EP2975516B1 (en) * 2014-07-11 2018-06-13 Accenture Global Services Limited Intelligent application back stack management
US10853125B2 (en) * 2016-08-19 2020-12-01 Oracle International Corporation Resource efficient acceleration of datastream analytics processing using an analytics accelerator
US11716558B2 (en) 2018-04-16 2023-08-01 Charter Communications Operating, Llc Apparatus and methods for integrated high-capacity data and wireless network services
US11129213B2 (en) 2018-10-12 2021-09-21 Charter Communications Operating, Llc Apparatus and methods for cell identification in wireless networks
CN112955869A (zh) * 2018-11-08 2021-06-11 英特尔公司 功能即服务(faas)系统增强
US11129171B2 (en) 2019-02-27 2021-09-21 Charter Communications Operating, Llc Methods and apparatus for wireless signal maximization and management in a quasi-licensed wireless system
US11026205B2 (en) 2019-10-23 2021-06-01 Charter Communications Operating, Llc Methods and apparatus for device registration in a quasi-licensed wireless system
US11340955B2 (en) * 2020-01-02 2022-05-24 International Business Machines Corporation Thread pool management for multiple applications

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6026474A (en) * 1996-11-22 2000-02-15 Mangosoft Corporation Shared client-side web caching using globally addressable memory
US6067550A (en) * 1997-03-10 2000-05-23 Microsoft Corporation Database computer system with application recovery and dependency handling write cache
US6073173A (en) * 1997-03-17 2000-06-06 International Business Machines Corporation Method and apparatus for optimal rebasing of web page transmission
US5991795A (en) * 1997-04-18 1999-11-23 Emware, Inc. Communication system and methods using dynamic expansion for computer networks
US6173318B1 (en) * 1997-12-16 2001-01-09 Intel Corporation Method and apparatus for pre-fetching data for an application using a winsock client layered service provider and a transparent proxy

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001084303A1 (fr) * 2000-05-04 2001-11-08 Access Co.,Ltd. Procede et systeme de traitement d'informations
US7032227B2 (en) 2000-08-14 2006-04-18 Twin Communications Of America, Inc. Portable operating environment for information devices
EP1246058A2 (en) * 2001-03-26 2002-10-02 Canon Kabushiki Kaisha Apparatus and method for managing an application in an incorporated equipment
US8015560B2 (en) 2001-03-26 2011-09-06 Canon Kabushiki Kaisha Apparatus and method for managing application in incorporated equipment
US6947949B2 (en) 2001-03-26 2005-09-20 Canon Kabushiki Kaisha Apparatus and method for managing application in incorporated equipment
EP1246058A3 (en) * 2001-03-26 2007-06-20 Canon Kabushiki Kaisha Apparatus and method for managing an application in an incorporated equipment
EP1385089A3 (en) * 2002-07-26 2007-01-24 Ricoh Company, Ltd. Image forming apparatus, information processing apparatus, program execution method and program producing method
US7554685B2 (en) 2002-07-26 2009-06-30 Ricoh Company, Ltd. Image forming apparatus, information processing apparatus, program execution method and program producing method
JP2010057186A (ja) * 2003-03-25 2010-03-11 Ricoh Co Ltd 端末装置、方法、及びプログラム
JP4523991B2 (ja) * 2003-03-25 2010-08-11 株式会社リコー 端末装置、方法、システム、及びプログラム
JP2004312711A (ja) * 2003-03-25 2004-11-04 Ricoh Co Ltd 画像形成装置及び画像形成装置を遠隔のアプリケーションにより操作する方法
JP2006525575A (ja) * 2003-04-29 2006-11-09 ソニー エリクソン モバイル コミュニケーションズ, エービー ジャバマイクロデバイスにおけるジャバアプリケーションのデバッグ用の、オフデバイスクラス/リソースローディング方法、システム及びコンピュータプログラム製品
KR100785535B1 (ko) * 2003-12-26 2007-12-12 엔티티 도꼬모 인코퍼레이티드 통신단말 및 프로그램
AU2004309722B2 (en) * 2003-12-26 2008-08-14 Aplix Corporation Communication terminal and program
US7496922B2 (en) 2003-12-26 2009-02-24 Ntt Docomo, Inc. Communication terminal and program therefor
WO2005064467A1 (ja) * 2003-12-26 2005-07-14 Ntt Docomo, Inc. 通信端末およびプログラム
JP2005208691A (ja) * 2004-01-19 2005-08-04 Networks Plus Inc ウェブページまたはデジタル映像ページ上での情報収集とコミュニケーションを可能にするための画像データを活用した方法、画像データプログラム製品、情報処理装置およびシステム
JP2007519110A (ja) * 2004-01-21 2007-07-12 インターナショナル・ビジネス・マシーンズ・コーポレーション 可動オブジェクトを有するグリッド対応仮想マシンのための方法およびシステム
US9606846B2 (en) 2005-07-29 2017-03-28 Sap Se System and method for dynamic proxy generation
JP2010187070A (ja) * 2009-02-10 2010-08-26 Sony Corp 情報処理装置、情報処理方法、プログラムおよび情報処理システム

Also Published As

Publication number Publication date
US6430570B1 (en) 2002-08-06
CN1197004C (zh) 2005-04-13
CN1265489A (zh) 2000-09-06

Similar Documents

Publication Publication Date Title
JP2000250758A (ja) 組込み機器用Javaアプリケーションマネージャ
US6430564B1 (en) Java data manager for embedded device
US5943496A (en) Methods for developing and instantiating object classes using a java virtual machine extension
JP3405666B2 (ja) アプレットを非ipネットワーク上で実行する方法及びコンピュータ・ワークステーション
US7107592B2 (en) Method, system, and program for making objects available for access to a client over a network
US6408342B1 (en) Communications framework for supporting multiple simultaneous communications protocols in a distributed object environment
US6401099B1 (en) Asynchronous binding of named objects
JP3210606B2 (ja) 低減されたラン−タイム・メモリ空間要求を有するネットワーク移動コードを実行する方法及びコンピュータ・システム
US20030105888A1 (en) Method and apparatus for expedited file downloads in an applet environment
JP3688571B2 (ja) 情報処理装置
JPH1083308A (ja) スタブ検索及びローディング・サブシステム、スタブ検索及びローディング方法並びにスタブ検索及びローディング用記録媒体
Román et al. Design and implementation of runtime reflection in communication middleware: the dynamictao case
US7234137B2 (en) Method, system, and program for processing objects in a distributed computing environment
WO2003003688A2 (en) Application framework for mobile devices
WO2000010079A1 (en) Environment extensibility and automatic services for component applications using contexts, policies and activators
JP2002540536A (ja) コンピュータシステム用分散型オブジェクト
EP1210662A2 (en) System and method for enabling application server request failover
US20040019887A1 (en) Method, system, and program for loading program components
WO2000077617A2 (en) Method and system for dynamic proxy classes
EP1378822A1 (en) Data processing system and data processing method, information processing device and information processing method, and storage medium
US7661030B2 (en) Propagating debug information in a web services environment
AU2005203423A1 (en) Process and system for sharing program fragments
JP2005531061A (ja) モバイルアプリケーションのための実行環境
US6636885B1 (en) System using interface class in client computer to resolve references and retrieve delayed class applet from server
IL143948A (en) A method and device for dynamically extending the command of an intelligent agent