JP2005515520A - モバイル通信デバイスアプリケーション処理システム - Google Patents

モバイル通信デバイスアプリケーション処理システム Download PDF

Info

Publication number
JP2005515520A
JP2005515520A JP2003500735A JP2003500735A JP2005515520A JP 2005515520 A JP2005515520 A JP 2005515520A JP 2003500735 A JP2003500735 A JP 2003500735A JP 2003500735 A JP2003500735 A JP 2003500735A JP 2005515520 A JP2005515520 A JP 2005515520A
Authority
JP
Japan
Prior art keywords
host
module
linked
application
class
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
JP2003500735A
Other languages
English (en)
Inventor
デイビット ピー. ヤッハ,
ジョン エフ. エイ. ダムズ,
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.)
BlackBerry Ltd
Original Assignee
Research in Motion Ltd
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 Research in Motion Ltd filed Critical Research in Motion Ltd
Publication of JP2005515520A publication Critical patent/JP2005515520A/ja
Pending legal-status Critical Current

Links

Images

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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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/99931Database or file accessing
    • 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/99931Database or file accessing
    • Y10S707/99937Sorting

Abstract

1つ以上のアプリケーションによって使用するための予めリンクするクラスのシステムおよび方法。システムおよび方法はまた、ランタイム処理がホストシステムとターゲットシステムとの間に分割する場合に使用され得る。ホストシステムにおいて、少なくともいくつかのクラスは、ロードされ、かつ、リンクされる。少なくとも1つのリンクホストリンクモジュールは、リンクされたクラスから生成される。ホストリンクモジュールは、ターゲットシステム上で動作する1つ以上のアプリケーションによる使用が利用可能にされる。

Description

(関連出願)
本出願は、2001年5月30日に出願された米国仮出願第30/294,331号「ホストシステムとターゲットシステムとの間の処理マシーンランタイム(runtime)を分割する方法」に対して優先権を主張する。この参照による、米国仮出願第30/294,331号の図面を含む全ての開示は、本明細書に援用される。
(背景)
本発明は、処理マシーンランタイムの環境の分野に関する。特に、本発明は、ターゲットシステムでのリソースを保存するためにホストシステムとターゲットシステムとの間の処理マシーンランタイムを分割する方法に関する。
現在、バーチャルマシーンの最新の技術は、Sun Microsystems,Inc(Sun)からのJava(R)バーチャルマシーン(JVM)である。Sun Microsystems Java(R)技術の中心は、Addison−Wesley Pub Co;ISBN:0201432943のTim LindholmとFrank YellinによるJava(R)バーチャルマシーン規格のセカンドエディションのチャプター4のクラスファイルフォーマットにより現在、特定化されるような、Java(R)バーチャルマシーンコードまたはバイトコードである。
クラスファイルバイトコードは、SolarisTM、Win32、LinuxTM、Mac、および他の動作可能なプラットフォーム上で、SunのJava(R)TMランタイム環境(JRE)と共動する。通常、Java(R)プログラム言語で書かれたソースコードは、「Java(R)c」などのJava(R)TMコンパイラを使用して、バーチャルマシーンバイトコードをそれぞれのクラスファイルフォーマットにコンパイルされ、その後、JREまたは互換性のあるランタイム環境、および処理マシーンを使用して実行される。
図1を参照して、階層のJREアーキテクチャブロック図は、Sunの技術の幾つかの局面を示す。種々のメカニズム(100Aおよび100B)は、プログラムソフトウェア(110Aおよび110B)バイトコードクラスファイルを提供する。例えば、コンパイラ100Aは、ソフトウェア110Aをバイトコードクラスファイルにコンパイルする。あるいは、ウェブブラウザは、ソフトウェア100Bバイトコードクラスファイルをダウンロードするためにソフトウェア「plugin」110Bを使用し得る。
クラスファイル内のバイトコードは、通常、各クラスがクラスファイルを有する幾つかの他のクラスを参照する。このために、標準パッケージ120クラスファイルは、ソフトウェア(110Aおよび110B)の例によって再利用されるためのシェアソフトウェアリソースとして提供される。JVM140は、クラスファイルを取得し、ソフトウェア(110Aおよび110B)および標準パッケージクラスファイル120を実行する。
示されたものはまた、最上位にJRE142動作を有する種々のシステム130である。ランタイムにおける標準パッケージは、アプリケーションプログラマのインターフェース(API)で示される特定のランタイムプラットフォームを定義する。
Java(R)TM2スタンダードエディション(J2SE)は、Sun参照プラットフォームAPIである。それらはまた、JVM上で駆動される標準パッケージのセットで構成されるJREを含む参照インプリメンテーションを提供する。アプリケーションディベロッパは、J2SE標準パッケージクラスを参照するJava(R)TMプログラム言語におけるアプリケーションを書き込み得、J2SEコンプライアントランタイムシステム上でアプリケーションを実行させることが期待され得る。J2SEとの比較によって通常定義される他のプラットフォームが存在する。例えば、J2SEとJava(R)TM2エンタープライズエディション(J2EE)とのスーパーセットを更なる特徴として加える。特定の関心は、J2SEとJava(R)TM2マイクロエディション(J2ME)とのサブセットである。
J2SEプラットフォームは、例えば、SolarisTM,Win32,Mac,LinuxTM、および他の図1のブロックによって示されるような、システム上で動作されるように首尾よく適応され得るが、J2SEは、複数のデバイス上で動作するために首尾よくは適用されない。例えば,標準J2SEパッケージのクラスファイルは、ディスク領域の16メガバイト以上で現在消費(consume)し得る。ディスク領域の16メガバイト以上は、複数のデバイスの格納容量を越え得る。
この問題を処理するために、Sunは、Java(R)TM2マイクロエディション(J2ME)プラットフォーム、付加的なバーチャルマシーン、および、関連するデバイス構成を紹介する。
接続され制限されたデバイス構成(CLDC)およびKバーチャルマシーン(KVM)は、ユーザが、128Kから512Kのメモリでユーザの手で小さなコンシュマーデバイスを処理し、モバイル情報デバイスプロフィール(MIDP)とともに使用される場合、セルフォンおよび2wayペイジャなどのデバイスに対するアプリケーション環境を提供し得る。
接続されたデバイス構成(CDC)およびCバーチャルマシーン(CVM)は、エマージング、2MB以上のメモリを有する次世代コンシュマーデバイスを処理し、基本プロフィールとともに用いられる場合、次世代コンシュマーデバイスのためのアプリケーション環境を提供し得る。
J2MEの利点は、上述のCLDCまたはCDCとともに用いられる場合、より少ないスタンダードクラスパッケージは、J2SEと比較されるような複数のデバイスを格納する。したがって、J2MEは、J2SEの特徴の全てをサポートしないことを犠牲にして、デバイス上のより少ない領域を取り上げ得る。
Java(R)TMランタイム技術は、異なるシステム及びデバイスに対して利用可能であり得るが、そして、J2MEプラットフォームは、機能を取り除く事によってデバイスの制限された格納領域問題を処理するが、J2MEは、デバイスランタイムインプリメンテーションの効果を処理し得ないので、適切な解決法を考慮し得ない。従って、ターゲットデバイスに対して最適化するランタイムのための必要性(および、他の必要性)が存在する。
本発明のよりよい理解のために、Java(R)ランタイム技術に関する以下の情報が提供される。Sun JVMのセクション§2.17.1におけるLindholmに従って、「Java(R)バーチャルマシーンは、幾つかの特定のクラスの主要な方法を呼び出すことおよび、ストリングスのアレイである単一の引数を通過することによって実行を開始する。このことは、特定のクラスにロードさせ(§2.17.2)、それが使用する他のタイプに対してリンクさせ(§2.17.3)、および、初期化させる(§2.17.4)」。従って、図1のJVM140を開始する場合に「主要な」クラスの名前を特定化することによって、クラスファイルは、ロードされ、場色コードインストラクションの実行は、クラスファイルの静的で主要のエントリポイントで開始する。さらに、クラスなど「主要な」クラスによって使用される参照されたタイプは、リンクされ、初期化される。「主要な」クラスファイルによる他のクラスの使用に応じて、重要なランタイムリソースは、使用されたクラスファイルのロードおよびリンクのためにコンシュームされる。
Java(R)TMランタイム技術は、ランタイムシステムが「主要な」クラスが実行に対して特定化される時間ごとに必要とされる全てのファイルをロードしリンクすることが必要である。ここで、実行は、デバイスなどのターゲットシステム上のリソースの険しい(precipitous)消費の原因であり得る。
通常のJava(R)アプリケーションは、幾つかの支持クラスファイルを有する可能性と同様の静的な主要なエントリポイントを含む少なくと一つの「主要な」クラスファイルを有する。
以下のJava(R)TMプログラムリストの例が、次で考慮される。
Figure 2005515520
上記は、二つのクラスに対するソースコードを提供し、HelloおよびByeのそれぞれは、Hello.Java(R)fileおよびBye.Java(R)fileにおける各クラスに対するソースの配置によって、および、Hello.classファイルおよびBye.classファイルを取得するための命令「Java(R)c Hello.Java(R) Bye.Java(R)」を使用する事によってなどの、当業者に公知のフォーマット方法をクラスファイルにコンパイルされ得る。
Helloクラスは、静的な主要ポイントを提供し、従って、JVM140を開始する場合「主要な」クラスとして特定されることに適用可能である。
図2を参照して、図1のランタイムのリンク技術は、上述の「Hello」プログラムの例を参照して考慮される。複数のクラスファイル200は、(図1の)バーチャルマシーン140に対して利用可能である。各クラスファイルは、他の使用されるクラスファイルに対する参照を取り除くためにバーチャルマシーン140によって使用される象徴的な情報を有する。
通常、Hello.class ファイル210Aは、JVM140を開始する場合に特定化されるような220Aでまずロードされる。JVM140は次いで、ロードされたクラス220Aの主要なエントリポイントでのバイトコード指示を実行するために進む。Helloクラス220Aは幾つかの標準パッケージクラスを使用するので、使用されるクラスに対するクラスファイルは、Helloクラス220Aにロードされリンクされる。同様に、Helloクラスで使用されるString.classファイル210C、System.classファイル210D、および、他のクラスファイル210は、220C,220D,220でロードされ、230C,230Dおよび230でリンクされる。Helloクラスはまた、Bye class(標準パッケージクラスでない指示クラス)を使用し、その結果、ファイル210Eは、220Eでロードされ,230Eでリンクされる。
図面には示されないが、クラスファイル210が220でロードされ、230でリンクされる時間ごとに、任意のクラスファイル(ロードされる220)の使用ロードされリンクされ得る。例えば、ロードされた支持Bye class220Eの場合、複数の同じクラスがHello class210Aとして使用される。Bye class220Eが230Eにロードされリンクされる場合に応じて、Bye class220Eは、Helloクラスによって使用されロードされるクラスと共通であるまた、クラスファイル210をロードすることを有し得る。しかしながら、Bye220Aによって使用される全てのクラスは、支持Byeクラスを使用し得るためにHelloに対するようなByeに究極的同様にリンクされなければならない。この状況は、標準パッケージクラスと同様である。
(220で)ロードし、(230で)リンクするトラディショナルクラスファイルは、重大なランタイムリソースをコンシュームし、クラスファイルをロードすることおよびリンクすることが、プログラムを実行するための命令の特定によってトリガされる場合に、図3Aおよび3Bを参照して次でさらに説明されるように、「主要な」プログラムの実行をスローダウンし得る。
図3Aおよび図3Bを参照して、図2のランタイムリンキング技術をさらに示すフローチャート、特に選択的な遅発分解(late resolution)が、説明される。「メイン」クラスは、ハードドライブまたはネットワーク等のクラス記憶200から310にロードされる。クラスは、315において検証され、準備される。遅発分解が320において判定される際に利用されない場合は、全ての利用されるクラスは、325にリンクされ、ロードされる。遅発分解が320において利用されるか利用されないかに関わらず、「メイン」クラスは、330において初期化される。
メインエントリポイントからの命令が、335において取り出される。取り出された命令が、340において判定される際に分解されていないリファレンスを含まない場合は、取り出された命令は、345において実行される。しかし、取り出された命令が340において判定される際に、まだロードされていないクラスに対するクラスリファレンス等の分解されていない識別子リファレンスを含む場合、そして、遅発分解が350において判定される再利用されない場合、ランタイムにおいてエクセプションが投げられる。遅発分解が、350において判定される際に利用される場合、かつ、355において参照されたクラスがロードされ得ない場合、ランタイムにおいてエクセプションが投げられる。しかし、遅発分解が350において判定される際に利用される場合、かつ、参照されたクラスがロードされ得る場合、参照されたクラスはロードされ、かつ、リファレンスは345におおいて命令を実行する前に360において分解される。365において判定される際に実行すべき命令がさらにある場合、次の命令が335において取り出され、その他の場合は、バーチャルマシンは終了する。
遅発分解が利用される場合、幾つかのクラスファイルは、メインプログラムバイトコードの実行の間に360においてロードされ、リンクされる。もしくは、遅発分解が利用されない場合は、幾つかのクラスファイルは、JVM140に対して「メイン」クラスファイルを特定した後、メインプログラムバイトコードを実行する前に、325においてロードされ、リンクされる。どちらの場合も、メインプログラムがランタイムにおいてJVM140による実行のための特定される時と、メインプログラムが終了するかまたはエクセプションを投げるかのどちらかの時との間に、ローディングおよびリンキングのために、リソースの険しい消費が続いて起こり得る。
従って、遅発分解を排除することによってでさえ、リンキングおよびローディングのトリガーとなる実行において、クラスファイルをローディングおよびリンキングするために、リソースの険しい消費に対する潜在的な危険性が存在する。
(要旨)
本発明は、上述の問題およびその他の問題を乗り越える。本発明の教示に応じて、1つ以上のアプリケーションによって利用するために、クラスをプレリンキングするシステムおよび方法が提供される。本システムおよび方法はまた、ランタイム処理がホストシステムとターゲットシステムとの間のスプリットである場所において、利用され得る。ホストシステムにおいて、少なくともいくつかのクラスが、ロードされ、リンクされる。少なくとも1つのホストにリンクされるモジュールが、リンクされたクラスから生成される。ホストにリンクされたモジュールは、ターゲットシステムにおいて動作する1つ以上のアプリケーションにおいて利用するために利用可能になる。
本発明がより明確に理解され得るように、ここで本発明の実施形態が、添付の図を参照して例のみによってより詳細に説明される。
同一の参照記号は、同様の要素を参照するように異なる図において利用される。
(詳細な説明)
図4は、モジュールベースのランタイムシステムの実施形態を示す。リンクされていないクラスファイルではなく、処理マシン440は、すでにロードされ、リンクされたクラスを含むモジュール450を実行する。より詳細には、モジュール450は、クラスファイルをロードし、リンクした閉じられたセットにおいて発見される情報を含むことにより、ターゲット処理マシン440に対するコマンド、記号情報ならびにコードサイズおよび速度を最適化する。モジュール450により、ランタイムは、全ての実行においてこの仕事を繰り返すのではなく、メインプログラムの複数の実行において、中間のローディングおよびリンキング仕事を再利用することができる。モジュール450は、ローディングよびリンキングのトリガーとなる実行の代替物を提供する。
コンパイラ(または他のメカニズム)405は、他のクラス411に対する記号参照409を含むクラスファイル407を受取る。コンパイラ405は、バイトコードの形式のクラスファイル407および411を処理することにより、記号参照409は分解される。処理されたクラスファイルは、モジュール450として処理マシン440に提供される。処理マシン440は、典型的には、モジュールサイズが従来のランタイムクラスファイルよりも実質的に小さい(例えば、Java(R)クラスファイルサイズと比較して、約8倍の縮小があり得る)ため、より効果的に、ターゲットデバイス430において作動する。また、複数の実行の前に、健全さのチェックを利用して一度モジュールコードが検証され得、それにより、その後の実行速度が増加する。モジュールはコード通信を最小化するように構成され得、特に、通信帯域幅制限デバイスにおいて有用である。モジュール450は、コード設定および実行時間を最小化するように構成され得、特にランタイムリソースが制限デバイスにおいて有用である。モジュール450は、既存の処理マシンランタイムに適用され得る一方で、図5に示されるように、リファレンスAPIとの互換性を維持する。
図5は、様々なメカニズム405Aおよび405Bがソフトウェア410を提供する実施形態を示す。コンパイラ405Aは、ソフトウェア410をコンパイルする。もしくは、他のメカニズム405Bが、ソフトウェア410をダウンロードするか、別の方法でソフトウェア410を取得するために利用され得る。ソフトウェア410のインスタンスによって再利用されるソフトウェアリソースをシェアするように、標準的なクラスパッケージ420が提供される。処理マシン440は、標準的なクラスパッケージ420を利用して、クラスを取得し、かつ、ソフトウェア410を実行する。
また、上部で処理マシン440が動作する、モバイルデバイス430A,パーソナルデータアシスタント(PDA)430B、電気器具430C、小型軽量クライアント430Dまたは他のデバイス430E等の様々なターゲットデバイス430が示される。
図5において、モジュール450は、ソフトウェア410を提供するメカニズムと機械コードを実行する処理マシン440との間に導入される。しかし、処理マシン440は、直接的にクラスファイルを利用するのではなく、ここでモジュール450の利用によって処理される以外は、提供されるソフトウェア410のクラスおよび標準的なクラスパッケージ420をさらに利用する。コンパイラが、入力においてクラスファイルおよびソースファイルの両方を取り、かつ、出力においてモジュールを生成し得るので、クラスファイルはさらに利用され得る。
モジュール450の存在のために、処理マシン440は、バーチャルマシンである必要もなければ、クラスファイル形式を知る必要さえなく、それにより、クラスファイルをロードし、リンクし、かつ分解する必要性を排除することによって、ターゲットシステムにおける性能を最適化する。図6を参照して説明されるように、提供されるランタイムが、ホストシステムとターゲットデバイス430との間のスプリットである場合は、さらなる最適化が可能である。
図6は、モジュールベースのランタイムシステムのスプリットの実施形態を示す。クラスランタイム処理は、ホストシステム530とターゲットシステム430との間のスプリットである。モジュールの利用により、ランタイムは、ホストシステムとターゲットデバイスとの間で効果的なスプリットであり得、ターゲットデバイスにおいて効果的にランタイムを最適化する。
ホストシステムスプリットランタイムにおいて、クラスファイル(407および411)は、510においてホストリンクされ、ホストリンクモジュール520になる。閉じられたクラスファイルセット分析の仕事は、ホストシステム530にオフロードされる。ターゲットシステムスプリットランタイムにおいて、ホストリンクされるモジュール520は、540において、ホストシステム530から通信され得、550において、ターゲットリンクされ、ターゲットリンクされたモジュール560となる。任意の追加のクラス分解が、ターゲットシステム430において必要とされる場合、さらに必要とされるターゲットモジュール識別子562が、550において、ホストリンクされたモジュール520とターゲットリンクされて、ターゲットリンクされたモジュール560を形成する。処理マシン440は、ターゲットリンクされたモジュール560を実行する。
図7は、別のスプリットランタイムシステムを示すブロック図である。ホストシステム530に対して、クラスファイル410は、ホストリンクされたモジュール520に510でホストリンクされている。このシステムに対して、ホストリンキングの詳細は、以下に図8、9および10を参照してさらに記載される。ターゲットシステム430に対して、ホストリンクされたモジュール520は、540でホストシステム530と通信し、ターゲットリンクされたモジュール560にターゲットリンクされる(550)。ホストとターゲットの間の通信540は、任意の媒体を介して起こり得、これにより、モジュール(単数または複数)は、(例えば、ターゲットがモバイル通信デバイスである場合にはモバイル通信ネットワークを通して、キャリア信号で具体化されるデータ信号を通して)ターゲットに提供され得る。ターゲットリンキングの詳細は、以下で図8、9および11を参照してさらに説明される。
図8を参照して、クラスファイルのローディング、モジュール内へのスプリットリンキング、および、図6および7のスプリットモジュールランタイムの実行を示すブロック図がここで説明される。閉じられたクラスファイルセットの解析動作がホストシステム400Aにオフロードされる。従って、クラスファイル600は、610でロードされ、ホストリンクされたモジュール520Aおよび520Fにホストリンクされる。Hello.classファイル610AおよびBye.classファイル610E(ここで、HelloクラスファイルがByeクラスにプレリンクされる)に存在する最適化された情報を含む、例えば「Hello」モジュール520A用のアプリケーションモジュールが示される。モジュール520Aは、また、ライブラリモジュール520Fに対するシンボリック参照615を有する。ライブラリモジュール520Fは、HellおよびByeクラスが用いる標準パッケージクラス(例えば、オブジェクトクラスファイル610B、ストリングクラスファイル610C、システムクラスファイル610Dおよび他のクラスファイル610)の全てを含む。ライブラリモジュール520Fは、全てのパブリックシンボルを出し得、これにより、HellO等の多くの異なる「メイン」クラスが標準クラスパッケージファイルの全てを再使用し得る。あるいは、ライブラリモジュールは、HelloおよびByeクラスによって用いられるこれらのクラスファイルのみを含むか、全ての用いられたクラスさえもモジュール520Aに直接に含まれ得る。後者の場合は、ターゲットシステムに対する任意のシンボル分析を必要とはしない。
少なくとも1つのホストリンクされたモジュール(520Aおよび/または520F)が利用可能な場合、540で候補モジュール620Aおよび620Fをターゲットシステム400Bのランタイムと通信可能である。一度候補モジュール(620Aおよび602F)がターゲットシステムで受信されると、候補モジュールは、ターゲットリンクされたモジュール560Aおよび560Fにターゲットリンクされ、任意のモジュールシンボリック参照615は、630で示されるように分析される。メインモジュールクラス(例えば、Helloクラス640)は、実行のために特定化され得る。しかし、有利には、各時間において、Helloクラスのメインプログラムが実行し、ターゲットリンキング630が参照650を提供する際に、参照650を分析する必要性は無い。
図9によると、フローチャートは、図8のリンキング技術をさらに図示し、ホストリンキングステップおよびターゲットリンキングステップを図示していることが示される。ホストにおけるスプリットランタイムシステムにおいて、クラス600は、ロードされ、800でホストリンクされたモジュール520にホストリンクされる。従って、少なくとも1つのホストリンクされたモジュール520は、ターゲット上のスプリットランタイムシステムに送られる。
ターゲット上のスプリットランタイムシステムにおいて、少なくとも1つの候補ホストリンクされたモジュール620は、900でターゲットリンクされたモジュール560にターゲットリンクされる。少なくとも1つのターゲットリンクされたモジュール560は、730で実行される。新規のモジュールが740で決定されると所望される場合、ホストリンキングプロセス800、通信プロセス(700および720)ならびにターゲットリンキングプロセス900のサイクルが続き得る。しかし、新規のモジュールが所望されない場合、ローディングおよびリンキングのオーバーヘッド無く、ターゲットリンクされたモジュールの実行が730で繰り返されることが続く。
図10によると、フローチャートは、図9のホストリンキングステップをさらに図示することが示される。ホストのスプリットランタイムシステムにおいて、ホストリンクされたモジュール520が出したシンボルは、810で外部のモジュール識別子815を提供する。また、クラス600は、820で候補ホストクラス825を提供する。候補ホストクラス825のクラス参照は、外部モジュール識別子815を用いることによって、830でモジュール参照と置き換えられ、これにより、候補モジュールクラス835の閉じられたセットを提供する。従って、候補モジュールが出した識別子845は、840で提供される。候補モジュールクラス835および出された識別子845は、次いで、850で検証される。860で決定されるように検証される場合、ホストリンクされた候補モジュールは、ホストリンクされたモジュール520として870で提供される。860で決定されるように検証されない場合、エクセプション(exception)が投げられる。
図11によると、フローチャートは、図9のターゲットリンキングステップをさらに図示することが示される。デバイスのスプリットランタイムシステムにおいて、受信された候補モジュール620は、910で候補モジュール参照915を提供する。また、ターゲットリンクされたモジュール560は、920でターゲットモジュール識別子925を提供する。次に、候補モジュールにおけるモジュール参照の分析は、930で分析されたモジュール935を提供する。分析されたモジュール935は、940で検証され、分析されたモジュール935が他のターゲットリンクされたモジュール560によって960で格納される。しかし、分析されたモジュール935が950で決定されたように首尾良く検証されない場合、エクセプションが投げられる。動作の好ましいモードを含んで、本発明の好ましい実施形態を詳細に説明してきたので、本発明およびその動作が異なる要素およびステップによって実行されることが理解される。本実施形態は、例示によってのみ提示され、本発明のシステムおよび方法の範囲することを意図しておらず、特許請求の範囲に規定される。
本システムおよび方法の広い範囲を示すために、以下のものが提供される。ビジュアルマシーンコードは、通常ソフトウェアによってインタプリタされる。しかし、ビジュアルマシーンコードプロセッサは、ハードウェアで実装され得る。本システムおよび方法をハードウェアプロセスマシーンランタイムに適応することは、本発明の範囲内である。本システムおよび方法の広い範囲のさらなる例として、本システムおよび方法は、コマンド、シンボリック情報、および、本システムおよび方法のモジュールを用いることによるコードを考慮してもよい。本システムおよび方法は、例えば、いくつかの場合において、機能を失うことなく、Java(R)クラスファイルのサイズと比較して8倍のモジュールサイズだけ減らすことによって、従来のランタイムクラスファイルよりも実質的に小さいモジュールサイズを考慮してもよい。本システムおよび方法は、何回も実行する前に一度だけ健全性(sanity)チェックすることによってモジュールコードが検証され得ることを提供し得る。
本システムおよび方法は、また、モジュールが新規のクラスのみを結合して、モジュール格納装置のサイズを最小化して、通信帯域幅が制限されたデバイスへの効率良いモジュールの送達を考慮することを可能にし得る。本システムおよび方法の広い範囲の別の例として、本システムおよび方法は、全ての必要とされたクラスを結合し得、リソースが制限されたデバイスにおけるコードセットアップおよび実行時間を最小化し得る。本システムおよび方法は、存在する処理マシーンランタイムに適応され得、一方で、参照APIとの互換性を維持する。本システムおよび方法は、モジュールが動的に共にリンクされ得、一方で、シンボリック参照の数を最小化し得ることを提供し得る。さらに、本システムおよび方法は、デバイスの格納装置からモジュールのコードが直接に実行され得ること(クラスファイルは、コードとは違い、実行前に格納装置からロードされる必要がある)を提供し得る。
以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。
図1は、従来のランタイム技術を示すブロック図である。 図2は、図1のランタイムのリンキング技術を示すブロック図である。 図3Aは、特に選択的な遅発分解を示す、図2のランタイムリンキング技術をさらに示すフローチャートである。 図3Bは、特に選択的な遅発分解を示す、図2のランタイムリンキング技術をさらに示すフローチャートである。 図4は、例示的なスプリットランタイムシステムを示すブロック図である。 図5は、例示的なスプリットランタイムシステムを示すブロック図である。 図6は、異なる例示的なスプリットランタイムシステムを示すブロック図である。 図7は、異なる例示的なスプリットランタイムシステムを示すブロック図である。 図8は、スプリットランタイムシステムのためのリンキング技術を示すブロック図である。 図9は、ホストリンキングステプおよびターゲットリンキングステップを導入して、図8にリンキング技術をさらに示すフローチャートである。 図10は、図9のホストリンキングステップをさらに示すフローチャートである。 図11は、図9のターゲットリンキングステップをさらに示すフローチャートである。

Claims (83)

  1. アプリケーションを実行するモバイル通信デバイスランタイムシステムであって、
    ロードされ、かつリンクされたクラスを有する予めリンクされたモジュールを含み、
    該予めリンクされたモジュールは、閉集合がロードされ、リンクされたクラスファイルの情報を有し、
    該モバイル通信デバイス上で動作するアプリケーションであって、該アプリケーションは、該アプリケーション実行中に該クラスを用いるアプリケーションを含み、
    該アプリケーションは、該アプリケーションの実行中に該予めリンクされたモジュールへのアクセスを有し、これにより、該クラスのローディングおよびリンキングを繰り返す該アプリケーションの必要性は、該予めリンクされたモジュールの該使用により、該アプリケーションの該実行中に、排除されるモバイル通信デバイスランタイムシステム。
  2. 前記予めリンクされたモジュールを生成するホストシステムと、
    前記予めリンクされたモジュールがターゲットシステムに提供される通信機構とをさらに含み、
    該アプリケーションが該ターゲットシステム上で動作する請求項1に記載のシステム。
  3. 前記ターゲットシステムは、前記アプリケーションによる使用のために、他のモジュールと予めリンクされたモジュールをターゲットリンクするターゲットリンクする手段を含む請求項2に記載のシステム。
  4. 前記予めリンクされたモジュールは、実質的に、コマンド、記号情報およびコードを最適化する請求項1に記載のシステム。
  5. 前記クラスファイルは、前記クラスを含み、記号情報を含む請求項1に記載のシステム。
  6. 前記予めリンクされたモジュールが検証される請求項1に記載のシステム。
  7. 前記予めリンクされたモジュールは、前記アプリケーションによって必要とされた全てのクラスを含む複数のモジュールを含む請求項1に記載のシステム。
  8. 前記予めリンクされたモジュールは、複数のモジュールを含み、該モジュールは、記号参照の数を実質的に最小にする一方で、動的にリンクされる請求項1に記載のシステム。
  9. 前記アプリケーションは、デバイス上で動作し、前記予めリンクされたモジュールは、直接的に、該デバイス上のストレージから実行可能である請求項1に記載のシステム。
  10. 前記予めリンクされたモジュールは、前記デバイス上で動作する複数のアプリケーションの実行において、ロードするステップおよびリンクするステップの再使用を提供する請求項9に記載のシステム。
  11. 前記予めリンクされたモジュールは、前記アプリケーションの実行前に生成される請求項1に記載のシステム。
  12. 前記予めリンクされたモジュールは、コード設定および実行時間に基づいて構成される請求項1に記載のシステム。
  13. 前記アプリケーションは、帯域幅限定デバイス上で動作する請求項1に記載のシステム。
  14. 前記アプリケーションがモバイルデータデバイス上で動作する請求項1に記載のシステム。
  15. 前記アプリケーションがパーソナルデータアシスタント上で動作する請求項1に記載のシステム。
  16. 前記アプリケーションが装置上で動作する請求項1に記載のシステム。
  17. 前記アプリケーションが薄いクライアントアプリケーション上で動作する請求項1に記載のシステム。
  18. 前記クラスがJava(R)ベースクラスを含む請求項1に記載のシステム。
  19. ターゲットシステム上で動作するアプリケーションによって使用のためにホストシステムにてクラスをホストリンクする方法であって、
    少なくとも数個のクラスを該ホストシステムにてロードするステップと、
    該ロードされたクラスを該ホストシステムにてリンクするステップと、
    該リンクされたクラスから少なくとも一つのホストリンクされたモジュールを形成するステップとを包含し、
    前記ホストリンクされたモジュールは、該ターゲットシステム上で動作する該アプリケーションによって使用のために利用可能とされる方法。
  20. サービスアプリケーションは、前記ホストシステムにて、前記ロードするステップにて用いられるように、前記クラスの少なくとも一つを提供する請求項19に記載の方法。
  21. ソフトウェアライブラリは、前記ホストシステムにて前記ロードするステップにて用いられるように、前記クラスの少なくとも一つを提供する請求項19に記載の方法。
  22. Java(R)アプリケーションは、前記ホストシステムにて前記ロードするステップにて用いられるように前記クラスの少なくとも一つを提供する請求項19に記載の方法。
  23. 前記ホストシステムにて前記ロードされたクラスの前記リンクするステップは、実質的に、コマンド、記号情報およびコードを最適化する請求項19に記載の方法。
  24. 前記クラスのファイルは記号情報を含む請求項19に記載の方法。
  25. 健全性チェックを用いて、前記ホストリンクされたモジュールを前記ホストシステムにて検証するステップをさらに包含する請求項19に記載の方法。
  26. 前記ターゲットシステム上の前記ホストリンクされたモジュールの複数の実行前に、再度、健全性チェックを用いて、前記ホストリンクされたモジュールを前記ホストシステムにて検証するステップをさらに包含する請求項19に記載の方法。
  27. 前記ホストリンクされたモジュールは、前記アプリケーションによって必要とされた全てのクラスを含む複数のモジュールを含む請求項19に記載の方法。
  28. 前記ホストリンクされたモジュールは、複数のモジュールを含み、該モジュールは、記号参照の数を最小にする一方で、動的にリンクされる請求項19に記載の方法。
  29. 前記ホストリンクされたモジュールは、直接に、前記ターゲットシステム上のストレージから実行可能である請求項19に記載の方法。
  30. 前記ホストリンクされたモジュールは、閉集合がロードされ、リンクされたクラスファイルの情報を含む請求項19に記載の方法。
  31. 前記ホストリンクされたモジュールは、前記アプリケーションの複数の実行において前記ロードするステップおよび前記リンクするステップの再使用を提供する請求項19に記載の方法。
  32. 前記ホストシステムは、該ホストリンクされたモジュールの生成中に、モジュール参照を分解する請求項31に記載の方法。
  33. 前記ターゲットシステムに提供されている前記ホストリンクされたモジュールは、ホストリンクされたモジュールに関連されるクラスを分解する、前記ターゲットシステムの必要性を排除する請求項32に記載の方法。
  34. 前記ホストリンクされたモジュールは、前記アプリケーションおよび第2のアプリケーションの複数の実行において、前記ロードするステップおよび前記リンクするステップの再使用を提供する請求項19に記載のシステム。
  35. 前記ホストリンクされたモジュールは、前記アプリケーションの実行前に、生成される請求項19に記載の方法。
  36. 前記ホストリンクされたモジュールは、前記ターゲットシステムへのコード通信に基づいて構成される請求項19に記載の方法。
  37. 前記ホストリンクされたモジュールは、コード設定および実行時間に基づいて構成される請求項19に記載の方法。
  38. 前記ホストリンクされたモジュールを、前記アプリケーションによって使用のために前記ターゲットシステムに提供するステップをさらに包含する請求項19に記載の方法。
  39. 前記ホストリンクされたモジュールを、前記ホストシステムから前記ターゲットシステムに、モバイル通信ネットワークを介して、前記アプリケーションによって使用のために、送信するステップをさらに包含する請求項19に記載の方法。
  40. 前記ホストシステムと前記ターゲットシステムとの間に、該ホストシステムにて前記ホストリンクされたモジュールを形成するステップにより、かつ、前記アプリケーションによって使用のために、該ターゲットシステムにて該ホストリンクされたモジュールを少なくとも一つのターゲットリンクされたモジュールにリンクするステップにより、処理マシーンランタイムを分割するステップをさらに含む請求項19に記載の方法。
  41. 前記アプリケーションによって使用のために前記ターゲットシステムにて前記ホストリンクされたモジュールを他のモジュールにターゲットリンクするステップをさらに包含する請求項19に記載の方法。
  42. 前記ホストシステムにて前記ロードされたクラスをリンクするステップにおいて使用のためにエクスポートされた識別子のテーブルを提供するステップをさらに包含する請求項41に記載の方法。
  43. 前記ターゲットシステムは帯域幅限定デバイスを含む請求項19に記載の方法。
  44. 前記ターゲットシステムは前記アプリケーションを実行する処理マシーンを含む請求項19に記載の方法。
  45. 前記ターゲットシステムは、前記アプリケーションを実行する仮想マシーンを含む請求項19に記載の方法。
  46. 前記ターゲットシステムは、モバイルデータデバイスを含む請求項19に記載の方法。
  47. 前記ターゲットシステムはパーソナルデータアシスタントを含む請求項19に記載の方法。
  48. 前記ターゲットシステムは装置を含む請求項19に記載の方法。
  49. 前記ターゲットシステムは薄いクライアントアプリケーションを含む請求項19に記載の方法。
  50. 前記ターゲットシステムは、前記ホストリンクされたモジュールを処理する仮想マシーンコードプロセッサを含む請求項19に記載の方法。
  51. 前記ターゲットシステムは、前記ホストリンクされたモジュールを処理するハードウェア処理マシーンランタイムを含む請求項19に記載の方法。
  52. 前記クラスはJava(R)ベースクラスを含む請求項19に記載の方法。
  53. 請求項19の方法を実行するように、プログラムコードを含む、コンピュータ読み出し可能媒体上に格納されたコンピュータソフトウェア。
  54. 請求項19の方法に従って製造されたホストリンクされたモジュール。
  55. ターゲットシステムにおけるホストリンクモジュールを操作する方法であって、該ホストリンクモジュールは少なくともいくつかのクラスをロードするステップを経てホストシステムによって生成され、該ホストシステムは該ロードされたクラスと該ホストシステムにおいてリンクし、該リンクされたクラスからの少なくとも1つのホストリンクモジュールを形成する、方法は、
    該ターゲットシステムにおいて該ホストシステムから該ホストリンクモジュールを受信するステップと、
    任意の追加のクラスが該ホストリンクモジュールとリンクされるべきかどうかを判断するステップと、
    追加のクラスがリンクされるべきである場合、次に、ターゲットリンクモジュールを形成するために該追加のクラスと該ホストリンクモジュールとをリンクするステップと、
    該ターゲットリンクモジュールが該ターゲットシステム上で動作するアプリケーションによって使用されることを可能にするステップと
    を包含する、方法。
  56. 前記ターゲットシステムに提供される前記ホストリンクモジュールは、該ホストリンクモジュールと関連した分解しているクラスから該ターゲットシステムを削除する、請求項55に記載の方法。
  57. 前記ターゲットシステムに提供された前記ホストリンクモジュールは、該ホストリンクモジュールと関連したクラスを解決するために該ターゲットシステムに対する必要性を削除する、請求項55に記載の方法。
  58. 前記ターゲットシステムは、帯域幅限界デバイスを含む、請求項55に記載の方法。
  59. 前記ターゲットシステムは、前記アプリケーションを実行するための処理マシーンを含む、請求項55に記載の方法。
  60. 前記ターゲットシステムは、前記アプリケーションを実行するための仮想マシーンを含む、請求項55に記載の方法。
  61. 前記ターゲットシステムは、モバイルデータデバイスを含む、請求項55に記載の方法。
  62. 前記ターゲットシステムは、パーソナルデータアシスタントを含む、請求項55に記載の方法。
  63. 前記ターゲットシステムは、電気器具を含む、請求項55に記載の方法。
  64. 前記ターゲットシステムは、小型軽量クライアントアプリケーションを含む、請求項55に記載の方法。
  65. 前記ターゲットシステムは、前記ホストリンクモジュールを処理するための仮想マシーンコードプロセッサを含む、請求項55に記載の方法。
  66. 前記ターゲットシステムは、前記ホストリンクモジュールを処理するためのハードウェア処理マシーンランタイムを含む、請求項55に記載の方法。
  67. 前記クラスは、Java(R)ベースのクラスを含む、請求項55に記載の方法。
  68. コンピュータ読み出し可能媒体に格納されたコンピュータソフトウェアであって、該コンピュータソフトウェアは、請求項55による方法を実行するためのプログラムコードを含む、コンピュータソフトウェア。
  69. 前記ホストリンクモジュールは、前記ターゲットシステム上の複数の実行より前に、一旦健全性チェックを用いて前記ホストシステムで点検される、請求項55に記載の方法。
  70. 前記ホストリンクモジュールは、前記アプリケーションによって必要とされる全てのクラスを含む複数のモジュールを含む、請求項55に記載の方法。
  71. 前記ホストリンクモジュールは、複数のモジュールを含み、該モジュールは、記号参照の数を本質的に最小化する間に動的にリンクされる、請求項55に記載の方法。
  72. 前記ホストリンクモジュールは、前記ターゲットシステム上の格納装置から直接実行可能である、請求項55に記載の方法。
  73. 前記ホストリンクモジュールは、前記アプリケーションの複数の実行において、前記ロードするステップ再利用および前記前記リンクするステップの再利用を提供する、請求項55に記載の方法。
  74. 前記ホストシステムは、前記ホストリンクモジュールの生成中に、モジュールリファレンスを解決する、請求項73に記載の方法。
  75. 前記ホストリンクモジュールは、前記アプリケーションおよび第2のアプリケーションの複数の実行において、前記ロードするステップの再利用およびリンクするステップの再利用を提供する、請求項55に記載の方法。
  76. 前記ホストリンックモジュールは、前記アプリケーションの実行の前に生成される、請求項55に記載の方法。
  77. 前記ホストリンクモジュールは、前記ターゲットシステムとのコード通信に基づいて構成される、請求項55に記載の方法。
  78. 前記ホストリンクモジュールは、コードセットアップおよび実行時間に基づいて構成される、請求項55に記載の方法。
  79. モバイル通信ネットワークを介して前記ターゲットシステムにおける前記ホストシステムから、前記ホストリンクモジュールを受信するステップをさらに包含する、請求項55に記載の方法。
  80. 前記ホストシステムにおける前記ホストリンクモジュールを形成することによって、かつ、前記ターゲットシステムにおいて、前記アプリケーションによる使用のための少なくとも1つのターゲットシステムに該ホストリンクモジュールをターゲットリンクすることによって、該ホストシステムと該ターゲットシステムとの間の処理マシーンランタイムを分類するステップをさらに包含する、請求項55に記載の方法。
  81. ロードされ、リンクされるクラスを含む予めリンクされたモジュールと、
    クラスファイルにロードされ、かつ、リンクされたクローズセットの情報を有する予めリンクされたモジュールと、
    アプリケーションの実行中に該クラスを使用するアプリケーションと
    を含む、アプリケーションを実行するためのモジュールベースのランタイムシステムであって、
    該アプリケーションの実行中に使用するための該予めリンクされたモジュールとのアクセスを有するアプリケーションであって、該クラスのローディングおよびリンキングを繰り返すための該アプリケーションの必要性は、該予めリンクされたモジュールの使用のために、該アプリケーションの実行中に削除される、モジュールベースのランタイムシステム。
  82. ホストシステムにおいて少なくともいくつかのクラスをロードするステップと、
    該ホストシステムにおいて該ロードされたクラスにリンクするステップと、
    該リンクされたクラスから少なくとも1つのホストリンクモジュールを形成するステップと
    を包含する処理を経て生成されるホストリンクモジュールであって、
    該ホストリンクモジュールは、該ターゲットシステムで動作するアプリケーションによる使用が利用可能にされる、
    ターゲットシステムで動作するアプリケーションによる使用のためのホストリンクモジュール。
  83. ホストリンクモジュールを含む搬送波において実現されるコンピュータデータ信号であって、該ホストリンクモジュールはロードされリンクされるクラスを含み、該ホストリンクモジュールはクラスファイルにロードされ、かつ、リンクされるクローズセットの情報を有し、該ホストリンクモジュールはアプリケーションの実行中に該クラスを使用する該アプリケーションによって使用し、該アプリケーションは該アプリケーションの実行中に該ホストリンクモジュールへのアクセスを有し、それにより、該クラスのローディングおよびリンキングを繰り返すための該アプリケーションの必要性が、該ホストリンクモジュールの使用のために該アプリケーションの実行中に削除される、コンピュータデータ信号。
JP2003500735A 2001-05-30 2002-05-30 モバイル通信デバイスアプリケーション処理システム Pending JP2005515520A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US29433101P 2001-05-30 2001-05-30
PCT/CA2002/000799 WO2002097619A2 (en) 2001-05-30 2002-05-30 A mobile communications device application processing system

Publications (1)

Publication Number Publication Date
JP2005515520A true JP2005515520A (ja) 2005-05-26

Family

ID=23132947

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003500735A Pending JP2005515520A (ja) 2001-05-30 2002-05-30 モバイル通信デバイスアプリケーション処理システム

Country Status (12)

Country Link
US (2) US7493616B2 (ja)
EP (2) EP2244185B1 (ja)
JP (1) JP2005515520A (ja)
CN (1) CN100337198C (ja)
AT (1) ATE481677T1 (ja)
BR (2) BR0209761A (ja)
CA (1) CA2448962C (ja)
DE (1) DE60237718D1 (ja)
HK (1) HK1072299A1 (ja)
MX (1) MXPA03010975A (ja)
RU (1) RU2299463C2 (ja)
WO (1) WO2002097619A2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BR0209761A (pt) * 2001-05-30 2006-02-07 Research Motion Ltd Sistema de processamento de aplicação de dispositivo de comunicação móvel
US7941807B2 (en) * 2004-04-30 2011-05-10 International Business Machines Corporation Transitional resolution in a just in time environment
US8832656B2 (en) * 2004-09-07 2014-09-09 Blackberry Limited Testing systems and methods for a resource constrained device
DE102004058882A1 (de) * 2004-12-06 2006-06-08 Giesecke & Devrient Gmbh Erzeugen von Programmcode in einem Ladeformat und Bereitstellen von ausführbarem Programmcode
US9183011B2 (en) * 2006-10-31 2015-11-10 Oracle America Inc. Method and system for runtime environment emulation
US8141042B2 (en) * 2007-03-06 2012-03-20 International Business Machines Corporation Extending portability of java code through the use of AOP
CA2889724C (en) 2009-12-21 2021-06-08 Kik Interactive Inc. Systems and methods for accessing and controlling media stored remotely
US9042266B2 (en) 2011-12-21 2015-05-26 Kik Interactive, Inc. Methods and apparatus for initializing a network connection for an output device
CN103034546B (zh) * 2012-12-17 2016-08-24 北京奇虎科技有限公司 iOS系统中应用程序间通信的方法及装置
CN103870316B (zh) * 2014-04-11 2016-09-07 烽火通信科技股份有限公司 一种智能操作系统上的java虚拟机实现方法

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5103459B1 (en) 1990-06-25 1999-07-06 Qualcomm Inc System and method for generating signal waveforms in a cdma cellular telephone system
US5249218A (en) 1992-04-06 1993-09-28 Spectrum Information Technologies, Inc. Programmable universal interface system
US5561800A (en) * 1993-05-19 1996-10-01 Hewlett-Packard Company Method and apparatus for incrementally linking modified routines into software
US5613120A (en) * 1994-10-20 1997-03-18 Silicon Graphics, Inc. System and method for enabling, without recompilation, modification of class definitions and implementations in an object-oriented computer program
CA2143488C (en) * 1995-02-27 2000-01-11 Robert Paul Duncan Dynamic link libraries without linker or loader support
US5815718A (en) * 1996-05-30 1998-09-29 Sun Microsystems, Inc. Method and system for loading classes in read-only memory
FI106175B (fi) 1997-08-18 2000-11-30 Nokia Mobile Phones Ltd Datansiirto matkaviestinverkossa
US6112304A (en) * 1997-08-27 2000-08-29 Zipsoft, Inc. Distributed computing architecture
US5966702A (en) * 1997-10-31 1999-10-12 Sun Microsystems, Inc. Method and apparatus for pre-processing and packaging class files
US6349344B1 (en) * 1997-12-16 2002-02-19 Microsoft Corporation Combining multiple java class files into a run-time image
US6654954B1 (en) * 1998-02-17 2003-11-25 International Business Machines Corporation Computer system, program product and method utilizing executable file with alternate program code attached as a file attribute
US6110226A (en) * 1998-02-19 2000-08-29 Cygnus Solutions Java development environment using optimizing ahead-of-time compiler
US6199196B1 (en) * 1998-03-20 2001-03-06 Sun Microsystems, Inc. Methods and apparatus for linking a program for remote execution
US6658492B1 (en) * 1998-03-20 2003-12-02 Sun Microsystems, Inc. System and method for reducing the footprint of preloaded classes
US6493870B1 (en) * 1998-03-20 2002-12-10 Sun Microsystems, Inc. Methods and apparatus for packaging a program for remote execution
US6330709B1 (en) * 1998-03-30 2001-12-11 International Business Machines Corporation Virtual machine implementation for shared persistent objects
FI110987B (fi) 1998-03-31 2003-04-30 Nokia Corp Menetelmä tiedonsiirtovirtausten kytkemiseksi
US6061520A (en) * 1998-04-07 2000-05-09 Sun Microsystems, Inc. Method and system for performing static initialization
US6260187B1 (en) * 1998-08-20 2001-07-10 Wily Technology, Inc. System for modifying object oriented code
DE19840029C1 (de) * 1998-09-02 2000-04-20 Siemens Ag Verfahren zum Linken von in einen Arbeitsspeicher eines Prozessors nachgeladenen Programmodulen auf einer Chipkarte
JP2000122876A (ja) * 1998-10-16 2000-04-28 Matsushita Electric Ind Co Ltd 情報処理装置
US6230184B1 (en) * 1998-10-19 2001-05-08 Sun Microsystems, Inc. Method and apparatus for automatically optimizing execution of a computer program
US6295643B1 (en) * 1998-12-10 2001-09-25 International Business Machines Corporation Method and apparatus for improving java virtual machine performance using persistent execution information
CA2267477C (en) 1999-03-30 2003-10-14 Object Technology International Inc. Packaging memory image files
US6618855B1 (en) * 1999-05-27 2003-09-09 Sun Microsystems, Inc. Caching untrusted modules for module-by-module verification
US6618769B1 (en) * 1999-05-27 2003-09-09 Sun Microsystems, Inc. Module-by-module verification
JP2001051853A (ja) 1999-08-06 2001-02-23 Matsushita Electric Ind Co Ltd リンク装置および仮想マシン
GB9921721D0 (en) * 1999-09-14 1999-11-17 Tao Group Ltd Loading object-oriented computer programs
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
US6745386B1 (en) * 2000-03-09 2004-06-01 Sun Microsystems, Inc. System and method for preloading classes in a data processing device that does not have a virtual memory manager
US6810519B1 (en) * 2000-09-29 2004-10-26 International Business Machines Corporation Achieving tight binding for dynamically loaded software modules via intermodule copying
BR0209761A (pt) * 2001-05-30 2006-02-07 Research Motion Ltd Sistema de processamento de aplicação de dispositivo de comunicação móvel

Also Published As

Publication number Publication date
RU2003134647A (ru) 2005-05-27
EP2244185A1 (en) 2010-10-27
CA2448962A1 (en) 2002-12-05
WO2002097619A3 (en) 2004-10-28
US20090210877A1 (en) 2009-08-20
EP1497717A2 (en) 2005-01-19
DE60237718D1 (de) 2010-10-28
EP1497717B1 (en) 2010-09-15
CN1592887A (zh) 2005-03-09
RU2299463C2 (ru) 2007-05-20
MXPA03010975A (es) 2004-03-26
ATE481677T1 (de) 2010-10-15
CN100337198C (zh) 2007-09-12
BRPI0209761B1 (pt) 2018-04-03
US8627316B2 (en) 2014-01-07
BRPI0209761A8 (pt) 2018-02-14
CA2448962C (en) 2009-10-06
HK1072299A1 (en) 2005-08-19
US20040148613A1 (en) 2004-07-29
EP2244185B1 (en) 2014-01-01
WO2002097619A2 (en) 2002-12-05
BR0209761A (pt) 2006-02-07
US7493616B2 (en) 2009-02-17

Similar Documents

Publication Publication Date Title
US8627316B2 (en) Mobile communications device application processing system
EP1795030B1 (en) Apparatus, system and methods for testing a device with constrained resources
US6381737B1 (en) Automatic adapter/stub generator
US8307352B2 (en) Classpath optimization in a Java runtime environment
US6272674B1 (en) Method and apparatus for loading a Java application program
US7765527B2 (en) Per thread buffering for storing profiling data
US6918106B1 (en) Method and apparatus for collocating dynamically loaded program files
US6233725B1 (en) Method and apparatus to coordinate and control the simultaneous use of multiple just in time compilers with a java virtual machine
US20030018959A1 (en) Customization of Java runtime environments
US7096467B2 (en) Initialization of Java classes in Java virtual machine environments
EP1481320B1 (en) Two tier clusters for representation of objects in java programming environments
US6978448B1 (en) Method and apparatus for rewriting bytecodes to minimize runtime checks
US20030018958A1 (en) Optional attribute generator for customized Java programming environments
US6918109B2 (en) Execution of synchronized Java methods in Java computing environments
EP1324194A2 (en) Method and apparatus for efficient object sub-typing
US20030041319A1 (en) Java bytecode instruction for retrieving string representations of java objects
Gebala et al. Compiler to interpreter: experiences with a distributed programming language

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061107

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20070207

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070502

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070531

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070831

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20071017