JP4376181B2 - プログラム実行処理端末装置 - Google Patents

プログラム実行処理端末装置 Download PDF

Info

Publication number
JP4376181B2
JP4376181B2 JP2004513936A JP2004513936A JP4376181B2 JP 4376181 B2 JP4376181 B2 JP 4376181B2 JP 2004513936 A JP2004513936 A JP 2004513936A JP 2004513936 A JP2004513936 A JP 2004513936A JP 4376181 B2 JP4376181 B2 JP 4376181B2
Authority
JP
Japan
Prior art keywords
program
unit
execution format
runtime execution
runtime
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.)
Expired - Fee Related
Application number
JP2004513936A
Other languages
English (en)
Other versions
JPWO2003107186A1 (ja
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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co 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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Publication of JPWO2003107186A1 publication Critical patent/JPWO2003107186A1/ja
Application granted granted Critical
Publication of JP4376181B2 publication Critical patent/JP4376181B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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

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)

Description

本発明は、受信したプログラムを解釈実行処理する情報端末装置、プログラム実行処理方法及びプログラムに関するものであり、特に、高速なプログラムの起動を実現する情報端末装置、プログラム実行処理方法及びプログラムに関する。
近年、携帯電話やPHS(Personal Handyphone System)、PDA(Personal Digital Assistance)などに代表される携帯情報端末に備わっている通信機能を用いたデータ配信サービスが普及している。
その代表例として、画像や着信メロディなどのコンテンツの配信サービスがあげられる。また、単なるデータではなくプログラムをダウンロードし、携帯情報端末上でアプリケーションとして実行させることができる。つまり、プログラムをダウンロードすることによって、携帯情報端末に最初から用意された機能(アプリケーション)だけではなく、後から新たにさまざまな機能を追加し、使用することが可能となる。
このプログラム配信サービスでは、例えば、電子電話帳や電子スケジュール帳などのPIM(Personal Information Manager)アプリケーションや、ゲームアプリケーションなどの提供を行う。ユーザは、自分の使用したい機能、あるいは自分の使いやすいユーザインタフェース、自分の気に入った画面構成などを備えたアプリケーションを自由に選択し、プログラムをダウンロードすることにより、選択したアプリケーションを使用することが可能となる。
プログラム配信の仕組みを実現するために、有望なソフトウェアアーキテクチャとしてJava(登録商標)がある。Java(登録商標)は仮想マシンの仕組みを備え、機器のハードウェアやOSに依存せずにプログラムを動作させることができるため、ワークステーションやパーソナルコンピュータ(以下、PCと略称する)などのコンピューティング分野においてのみならず、家電機器に対しても有効なアーキテクチャと見なされている。
また、携帯情報端末において、既に多くの機種にJava(登録商標)仮想マシンが搭載されており、プログラム配信サービスが開始されている。今後、仮想マシンの仕組みを前提としたプログラム配信サービスは、さらに普及していくものと予想される。
しかしながら、携帯情報端末上で、仮想マシンの仕組みを用いて、ダウンロードしたアプリケーションを実行させる場合に問題になるのが、その起動時間の長さである。
ここでの起動時間とは、ユーザあるいは携帯情報端末に搭載されている他のアプリケーション(ブラウザ、メーラ、電話など)が、携帯情報端末内部の仮想マシンに対して、特定のアプリケーションの解釈実行を開始するという指示を与えてから、携帯情報端末の表示画面上に開始が指示されたアプリケーションの初期画面が出力されるまでの経過時間を指す。つまり、起動時間とは、アプリケーションが使用可能になるまでの待ち時間であり、ユーザにとって、実際にアプリケーションを利用していない余分な時間であるため、起動時間が長くなるほど、アプリケーションの実行効率が低下する。
例えば、一般的なJava(登録商標)仮想マシンの起動処理は、大きく以下の3つの処理から構成される。以下、Java(登録商標)を用いて説明するが、他の仮想マシンあってもよいことを、予め記述しておく。
(1)初期化処理
(2)クラス検証処理
(3)クラスロード処理
それぞれの処理についての詳細は、非特許文献1を参照されたい。ここでは以降の説明に必要な、処理の概要のみ述べることとする。
Java(登録商標)では、プログラムはクラスファイルと呼ばれる1つ以上のファイルから構成される。プログラムがダウンロードされる際には、通常クラスファイルは1つのファイルにパッケージされた形式で提供されるが、ダウンロード後、これは1つ以上のクラスファイルとして展開され、携帯情報端末内のファイルとして保存される。
(1)初期化処理は、Java(登録商標)仮想マシンの実行を可能にするために必要な初期作業である。具体的には、仮想マシンが使用するメモリ領域(Java(登録商標)ヒープ領域など)を確保する処理、ガーベジコレクション処理の初期化、クラスローダの初期化、スレッド管理の初期化などを行う。
(2)クラス検証処理は、実行の対象であるプログラムの安全性を保証するために行う処理である。具体的には、クラスファイルの形式の検査と、クラスファイルに含まれるバイトコードなどがJava(登録商標)の仕様に準拠していることを検査する。
(3)クラスロード処理は、クラスファイルを、Java(登録商標)仮想マシンが実行可能な記録形式(以下ランタイム実行形式と呼ぶ)として、仮想マシンが使用するメモリ領域上に展開する処理である。対象となるクラスファイルは、実行するプログラムの最初の実行メソッドとなるmainメソッドを持ったクラスファイルと、そのクラスファイルから参照を辿ることのできる全てのクラスファイルである。
以上のような各処理が含まれるため、仮想マシンの仕組みを用いたアプリケーションの起動時間は、携帯情報端末の機械語で記述されたアプリケーション(ネイティブアプリケーション)を起動するのに比して、長いものになっていた。
起動時間のうち、(2)クラス検証処理や(3)クラスロード処理は、概してアプリケーション(プログラム)のサイズが大きくなればなるほど、その処理に長い時間を要するようになり、アプリケーションの実行効率が低下する。特に、PIMアプリケーションのように、頻繁に何度も立ち上げが行われるような種類のアプリケーションは、起動時間が長くなることで、大きく利便性を欠いたものになりがちである。
これに対し、Java(登録商標)処理系のクラスファイル形式に対して、前もって何らかの処理を行うことによって、アプリケーションの実行効率を高めるための技術が、特許文献1の「クラスファイルのプリプロセシング及びパツケージングのための方法及び装置」および特許文献2の「動的リンキングおよび動的ローデイングの存在下において動的にデイスパツチされたコールの静的結合」に開示されている。
ティム・リンドホルムとフランク・イエーリン(Tim Lindholm and Frank Yellin)著,「ザ・ジャバ・ヴァーチャル・マシーン・スペシフィケイション(The Java(TM) Virtual Machine Specification)」,アディソン−ウェスレイ(Addison-Wesley),1997年 特開2000−29706号公報 特開平11−327906号公報
しかしながら、上述した特許文献1および特許文献2で開示された技術は、いずれもアプリケーションの解釈実行速度の高速化や、メモリの効率的な利用を目的としたものであり、ハードウェア資源に関して価格やサイズなどの制約が厳しい携帯情報端末などの情報家電機器において、Java(登録商標)などの処理系を適用した場合に問題になりがちな、起動時間の短縮を達成するためのものではなかった。
本発明は、上記問題を解決するためになされたものであり、起動処理の中の(3)クラスロード処理を「アプリケーションを初めて起動するときにだけ必要なクラスロード処理」と「アプリケーションの2度目以降の起動でも必要なクラスロード処理」の2つに分け、「初めてのクラスロード処理」による処理結果を、クラスファイル形式とは別の記録形式(以下、テンポラリランタイム実行形式と呼ぶ)として格納しておくことにより、そのプログラムの起動の際に「2度目以降のクラスロード処理」しか行わなくてもよいようにし、プログラムの起動時間の短縮を図ることを目的としている。
上記課題を解決するために、本発明のプログラム実行処理端末装置は、受信したプログラムを解釈実行処理する端末装置であって、前記受信したプログラムを記憶する不揮発性のメモリを有するプログラム記憶部と、前記プログラム記憶部に記憶されているプログラムをランタイム実行形式に変換するローダ部と、前記ローダ部が変換したランタイム実行形式を記憶する揮発性のメモリを有するランタイム実行形式記憶部と、前記ローダ部からの要求を受け、前記ランタイム実行形式記憶部の揮発性のメモリに記憶されたランタイム実行形式をテンポラリランタイム実行形式に変換するランタイムセービング部と、前記ランタイムセービング部によって変換されたテンポラリランタイム実行形式を記憶する不揮発性のメモリを有するテンポラリランタイム実行形式記憶部と、前記テンポラリランタイム実行形式記憶部に記憶されているテンポラリランタイム実行形式をランタイム実行形式に変換して前記ランタイム実行形式記憶部の揮発性のメモリ前記変換したランタイム実行形式を格納するポストローダ部と、前記ランタイム実行形式記憶部の揮発性のメモリに記憶されたランタイム実行形式を解釈実行するインタプリタ部と、前記プログラム記憶部の不揮発性のメモリに記憶されているプログラムの起動が指示された際に、前記テンポラリランライム実行形式記憶部の不揮発性のメモリに当該プログラムに対応するテンポラリランタイム実行形式が存在するか否かを判断し、存在しないと判断した場合には前記ローダ部に当該プログラムをランタイム実行形式へ変換するよう要求し、存在すると判断した場合には前記ポストローダ部に前記テンポラリランタイム実行形式記憶部の不揮発性のメモリに記憶されている当該プログラムに対応するテンポラリランタイム実行形式をランタイム実行形式へ変換して前記ランタイム実行形式記憶部の揮発性のメモリに格納するよう要求する制御部とを備え、前記ローダ部は、前記プログラム記憶部の不揮発性のメモリに記憶されているプログラムに含まれるデータへの参照値を、当該データが前記ランタイム実行形式記憶部の揮発性のメモリに格納される格納場所に対応する値であるポインタ値へ変換することにより、当該プログラムを当該ランタイム実行形式へ変換すると共に、前記ランタイム実行形式への変換後、前記ランタイムセービング部へ前記ランタイム実行形式記憶部の揮発性のメモリに記憶されたランタイム実行形式を前記テンポラリランタイム実行形式に変換するよう要求し、前記ランタイムセービング部は、前記ランタイム実行形式記憶部の揮発性のメモリに記憶した前記ランタイム実行形式に含まれるデータの格納場所に対応するポインタ値を、当該ポインタ値が指すデータを含むクラスの識別番号および前記ポインタ値が指すデータのエントリ番号に変換すること、および前記ランライム実行形式のサイズに関するデータを追加することにより、前記ランタイム実行形式を前記テンポラリランタイム実行形式に変換し、前記ポストローダ部は、前記テンポラリランタイム実行形式記憶部の不揮発性のメモリに記憶されているテンポラリランタイム実行形式に含まれる前記ポインタ値が指すデータを含むクラスの識別番号および前記ポインタ値が指すデータのエントリ番号から前記ポインタ値に変換することにより、当該テンポラリランタイム実行形式を前記ランタイム実行形式へ変換する。
このように構成することにより、ランタイムセービング部が前記ランタイム実行形式記憶部の揮発性のメモリに記憶されたランタイム実行形式をテンポラリランタイム実行形式に変換し、テンポラリランタイム実行形式記憶部の不揮発性のメモリにランタイムセービング部によって変換されたテンポラリランタイム実行形式を記憶するので、プログラムは最初の1回目に起動される時は、通常のロード処理を行い、ロード処理の後にランタイムセービング処理を行い、テンポラリランタイム実行形式を生成しテンポラリランタイム実行形式記憶部の不揮発性のメモリに記憶しておくことで、そのプログラムは2回目以降の起動を端末装置の電源を一旦遮断し、再度電源を投入した後に行なったとしてもテンポラリランタイム実行形式記憶部の不揮発性のメモリに記憶されたテンポラリランタイム実行形式ランタイム実行形式に変換し生成するポストロード処理を通常のロード処理に置き換えることが可能となり、2回目以降のプログラムの起動に要する処理時間を短縮することができる。
また、前記プログラム記憶部に記憶されているプログラムをテンポラリランタイム実行形式に変換することによってテンポラリランタイム実行形式を得てもよい。このように、予めプログラムをプレロード処理して、テンポラリランタイム実行形式を生成しておくことによって、プログラムの起動は最初の1回目から、ポストロード処理によって通常のロード処理に置き換えることが可能となり、プログラムの起動に要する処理時間を短縮することができる。
以下、本発明の実施の形態について、図面を用いて詳細に説明する。
(実施の形態1)
携帯情報端末を用いたプログラムのダウンロードサービスでは、既にJava(登録商標)の仕組みを用いたものが普及しているため、本発明はその仕組みを拡張することで実現することができる。本説明においては、Java(登録商標)の仕組みを用いた場合にはどのような実施の形態になるかを適宜交えながら説明を行う。
図1は、本発明の実施の形態1における、携帯情報端末のハードウェア構成を示す図である。図1において、中央演算装置(CPU)1と、記憶装置2と、入力装置3と、出力装置4と、送受信装置5を備えており、それぞれシステムバス6を介して接続されている。
記憶装置2は、ROM、RAM、およびハードディスクなどで構成され、CPU1が処理する際に用いられる記憶領域やプログラム自体を記憶する領域として用いられる。入力装置3は、キーボードやキーボタン、マウス、マイクなどで構成され、ユーザからの指示の入力処理を行う。出力装置4は、ディスプレイなどの表示装置やスピーカーなどで構成され、CPU1から出力されるデータの画面表示や、音声データの再生などの処理を行う。送受信装置5は、無線あるいは有線伝送路を介してデータ通信を行い、CPU1は、送受信装置5を介して外部装置(図示せず)からプログラムなどのデータをダウンロードすることができる。
図2は、本実施の形態のプログラム実行処理端末装置の構成を示すブロック図である。プログラム実行処理端末装置は、プログラムダウンロード部101と、ローダ部102と、ランタイムセービング部103と、プレローダ部104と、ポストローダ部105と、インタプリタ部106と、制御部107と、プログラム記憶部301と、テンポラリランタイム実行形式記憶部302と、ランタイム実行形式記憶部303を備えている。
プログラムダウンロード部101は、プログラム配信先よりプログラムを受信し、受信したプログラムを制御部107を介してプログラム記憶部301に記憶格納する。プログラムダウンロード部101は、従来の携帯情報端末が備えるプログラムのダウンロードの仕組みを用いて実現することができる。
ローダ部102は、制御部107からの要求に従い、プログラム記憶部301に格納されたプログラムをランタイム実行形式に変換し、ランタイム実行形式記憶部303に格納する処理を行う。また、インタプリタ部106にプログラムの実行開始を通知する。さらに、変換したランタイム実行形式をランタイムセービング部103に通知し、ランタイムセービング処理を要求する。
ランタイムセービング部103は、ローダ部102からの要求に従い、ランタイム実行形式記憶部303に格納されたランタイム実行形式をテンポラリランタイム実行形式に変換し、テンポラリランタイム実行形式記憶部302に格納する処理を行う。
プレローダ部104は、制御部107からの要求に従い、プログラム記憶部301に格納されたプログラムをテンポラリランタイム実行形式に変換し、テンポラリランタイム実行形式記憶部302に格納する処理を行う。
ポストローダ部105は、テンポラリランタイム実行形式記憶部302に記憶されたテンポラリランタイム実行形式を、ランタイム実行形式に変換し、ランタイム実行形式記憶部303に格納する処理を行う。また、インタプリタ部106にプログラムの実行開始を通知する。
インタプリタ部106は、ローダ部102またはポストローダ部105からの実行開始の通知に従い、ランタイム実行形式記憶部303に格納されているランタイム実行形式を解釈実行する。Java(登録商標)の仕組みを用いた場合、このインタプリタ部106は、従来のJava(登録商標)仮想マシンを用いて実現することができる。
制御部107は、プログラムの起動が指示された際に、テンポラリランタイム実行形式記憶部302に起動対象のプログラムのテンポラリランタイム実行形式が存在するか否かを判断し、存在しない場合にはローダ部102にランタイム実行形式への変換を要求し、存在する場合にはポストローダ部105にランタイム実行形式への変換を要求する。テンポラリランタイム実行形式をランタイム実行形式へ変換するには、後述するように、大部分のデータをコピーするとともに、間接参照表現のアドレスデータを実際のアドレスへ変換するだけでよいため、プログラムをランタイム実行形式に変換する場合と比較して処理時間は短い。これにより、既にランタイム実行形式を保持しているプログラムに関しては、起動時間を短縮することが可能となる。
プログラム記憶部301は、プログラムダウンロード部101がプログラム配信先より受信したプログラムを格納する。なお、フラッシュメモリ等に代表される不揮発性メモリ、すなわち携帯情報端末の電源がOFFになっても記録が保持され続けるデバイスによって実現された場合、携帯情報端末の電源がOFFになった場合にプログラムの再ダウンロードを防ぐことが可能となる。また、ダウンロードしたプログラムだけでなく、前もって特定のプログラムが格納されていてもよい。さらに、ROMなどの格納データが消去不能なメモリを用いて、前もって格納されているプログラムは固定であってもよい。
ランタイム実行形式記憶部303は、ローダ部102またはポストローダ部105が変換したランタイム実行形式を格納する。ランタイム実行形式は解釈実行を行う対象として、インタプリタ部106から直接アクセスされる記憶領域であるため、高速なアクセスが可能な記憶デバイスによって実現されたほうがよい。例えば揮発性のRAMなどがこれに使用される。
テンポラリランタイム実行形式記憶部302は、ランタイムセービング部103が変換したテンポラリランタイム実行形式を格納する。テンポラリランタイム実行形式記憶部302は、特に揮発性・不揮発性を問わない。プログラムの起動時間の短縮を実現するためには、データのアクセス速度が、プログラム記憶部301の実現に用いられているものよりは高速な記憶デバイスが用いられることが望ましい。なお、テンポラリランタイム実行形式記憶部302として例えばフラッシュメモリのような不揮発性のメモリを用いれば、携帯情報端末の電源を切る直前にテンポラリランタイム実行形式記憶部302に記憶されていたテンポラリランタイム実行形式を、一旦電源を切ってから次に電源を入れたときに利用することができるため好ましい。
なお、本実施の形態ではランタイムセービング部103とプレローダ部104を共に備えているとしたが、本発明はこれに限定されない。すなわち、どちらか一方のみを備えていてもよい。この場合にも本実施の形態と同様に、プログラムの起動時間を短縮することができる。
図3は、ローダ部102、ランタイムセービング部103、プレローダ部104、ポストローダ部105の各処理部で行う、データの流れの一例を示す図である。プログラム配信先からプログラム201をダウンロードしてから、ランタイム実行形式203が解釈実行されるまでの、データの変換の流れを示している。
まず、プログラム配信先から送信されたプログラム201をプログラムダウンロード部101が受信し、プログラム記憶部301に格納する。
次に、プログラム201の起動が指示されると、制御部107からの指示に従い、ローダ部102がプログラム201をランタイム実行形式203に変換し、インタプリタ部106がランタイム実行形式203を解釈実行する。また、同時にランタイムセービング部103がランタイム実行形式203をテンポラリランタイム実行形式202に変換し、テンポラリランタイム実行形式記憶部302に格納する。再度、プログラム201の起動が指示されると、制御部107からの指示に従い、ポストローダ部105がテンポラリランタイム実行形式202をランタイム実行形式203に変換し、インタプリタ部106がランタイム実行形式203を解釈実行する。
また、プレロード処理を行う場合のデータの変換の流れを以下に示す。プレローダ部104がプログラム201をテンポラリランタイム実行形式202に変換し、テンポラリランタイム実行形式記憶部302に格納する。プログラム201の起動が指示されると、制御部107からの指示に従い、ポストローダ部105がテンポラリランタイム実行形式202をランタイム実行形式203に変換し、インタプリタ部106がランタイム実行形式203を解釈実行する。
図4から図8は、図3で説明したプログラム201、ランタイム実行形式203、テンポラリランタイム実行形式202の構造の一例を示した。以下、順に説明する。
プログラム201は、携帯電話によって解釈実行が可能な形式を持ったデータとして獲得することができる。携帯電話にJava(登録商標)の仕組みが用いられている場合には、Java(登録商標)の実行形式であるクラスファイルがプログラム201としてダウンロードされる。
プログラム201の構造の一例を図4に示す。図4はプログラム201に記録されたデータ内容をC言語に倣って構造体表現したものである。u1型、u2型、u4型はそれぞれ符号なしの1バイト、2バイト、4バイトのデータ量を表現している。Java(登録商標)では、プログラム201は通常、1つ以上のクラスファイルから構成されるが、クラスファイル自体の構造はどのクラスファイルも同じである。クラスファイルの構造自体は、非特許文献1に詳説されている。図4では特に、最上位に位置付けられる構造体のみ示している。
次に、ランタイム実行形式203の構造の一例を図5および図6に示す。ランタイム実行形式203は、ランタイム実行形式記憶部303に格納される連続したメモリイメージとして実現される。クラスファイルのフォーマット自体は先に述べたように規定されているが、ランタイム形式のフォーマットに関してはJava(登録商標)仮想マシンの実装依存とされており、何ら規定はされていない。
図5および図6では、ランタイム実行形式203を、クラス単位のメモリイメージとして示している。Java(登録商標)の実際のプログラムは、2つ以上のクラスファイルから構成されることも多いが、その場合には同様のメモリイメージがクラスファイルの数だけ生成されることになる。クラスを表現したメモリイメージはその中に、さらに下位の構造であるコンスタントプール構造のランタイム形式、インタフェース構造のランタイム形式、フィールド構造のランタイム形式、メソッド構造のランタイム形式、アトリビュート構造のランタイム形式を含んでいる。
図5および図6のメモリイメージの中で白い箱で示されたデータは、図4における同名のデータの値がそのまま記録されることを意味している。図5および図6のメモリイメージの中で網掛けで表現されているデータは、そのデータがメモリイメージの中の、他のデータ格納場所のアドレスを指す参照値(ポインタ)であることを表現している。具体的には、次の通りになっている。
「*constant_pool」は、コンスタントプール構造のランタイム形式の先頭を指すポインタ、「(constant_pool*)this_class」および「(constant_pool*)super_class」は、コンスタントプール構造の中のエントリのアドレスを指すポインタ、「*interfaces」は、インタフェース構造のランタイム形式の先頭を指すポインタ、「*fields」は、フィールド構造のランタイム形式の先頭を指すポインタ、「*methods」は、メソッド構造のランタイム形式の先頭を指すポインタ、「*attributes」は、アトリビュート構造のランタイム形式の先頭を指すポインタである。
なお、ポインタ値は必ずしも、そのポインタが含まれるのと同じクラスのメモリイメージの中の構造を指しているとは限らず、他のクラスのメモリイメージの構造を指している場合もある。
ランタイム実行形式203のメモリイメージはポインタを含んでおり、このポインタ値はメモリイメージ変換の際に一定の値には決定付けられない(ランタイム実行形式記憶部303中でのメモリイメージの配置位置によって、ポインタ値は変動するからである)。
さらに詳細には、図5および図6の中で描いたポインタ以外でも、コンスタントプール構造の中のエントリ、インタフェース構造の中のエントリ、フィールド構造の中のエントリ、メソッド構造の中のエントリ、アトリビュート構造の中のエントリの其々のそれぞれのデータの中にもポインタ値が含まれている可能性があるが、本説明中では割愛する。
次に、テンポラリランタイム実行形式202の構造の一例を図7および図8に示す。テンポラリランタイム実行形式202は、テンポラリランタイム実行形式記憶部302に格納される。メモリイメージとして記録されても、データをバイト列としたファイルとして記録されてもどちらでもよいが、ここでは図5および図6の表現と同じくメモリイメージとして示すことにする。ここに示すのは図5および図6で示したランタイム実行形式203の実施の形態に対応した、テンポラリランタイム実行形式202の実現例である。
図7および図8のメモリイメージには、図5および図6と比較して新たに以下のデータが先頭に加わっている。
「class_id」は、メモリイメージに対してクラス単位に、一意に与えられる識別データ(クラスの識別番号)である。複数のクラスのメモリイメージが作成される場合、このclass_idの値は重複してはならない。「runtime_image_size」は、本テンポラリランタイム実行形式から生成されるランタイム実行形式のメモリサイズを記録したものである。
また、図7および図8のメモリイメージには、図5および図6とは異なり、ポインタ値がない。図5および図6にてポインタとして表現されていたデータは、全て次の2つのデータの組に変換されている(図7および図8の中で網がけされている部分)。
「ref_class_id」は、クラスの識別番号を指定する。この後続データには必ずエントリ番号が続く。「エントリ番号」は、コンスタントプール構造/インタフェース構造/フィールド構造/メソッド構造/アトリビュート構造の中のデータのエントリ番号を示す。
テンポラリランタイム実行形式202の実施の形態では、ランタイム実行形式203の中でポインタとして表現される部分を全て「クラスID」+「エントリの番号」という形式(間接参照表現)に変換して記録を行っている。
先に述べたように、ランタイム実行形式203の中のポインタ表現は、時として別のクラスのメモリイメージの構造を指している場合がある。どのクラスのメモリイメージのものであるかを特定するために、エントリ番号は必ずclass_idと組み合わせた形で表現される。
テンポラリランタイム実行形式203のメモリイメージはポインタを含んでいないため、テンポラリランタイム実行形式記憶部302の中でのメモリイメージの配置位置によらず、メモリイメージ変換の際に一意のデータ列に決定付けられる。すなわち、あるクラスを表現するテンポラリランタイム実行形式の記録内容は常に一意、という状態を保っている。
以上が、各データ形式の構造に関する説明である。
次に、図2の構成図に描かれた各処理部が行う、処理内容に関して説明する。
図9は、ローダ部102におけるデータ変換の処理の流れの一例を示す。
まず、ローダ部102によって変換されるランタイム実行形式203のメモリ使用量を計算する(ステップ601)。これはプログラム201に含まれるクラスファイルを検査し、constant_pool_count、interfaces_count、fields_count、methods_count、attributes_countといった、各構造のエントリ数を示す数値と、各構造のエントリ毎のサイズにより算出することが可能である。
ステップ601で算出した値に基づいて、ランタイム実行形式203の格納先であるランタイム実行形式記憶部303に、保存メモリ領域の空きが存在するか否かを検査する(ステップ602)。空きが存在しない場合(ステップ602がN)、ローダ部102によるデータ変換処理の続行を不可能と判断して、ロード処理そのものを取りやめ、プログラムの起動不可能であることをユーザに通知し、処理を終了する(ステップ603)。一方、空きが存在する場合(ステップ602がY)、ランタイム実行形式記憶部303に、ステップ601で計算した値の分だけのメモリ領域を確保する(ステップ604)。
次に、クラスファイルを検査し、ランタイム実行形式203の中でポインタ値として表現される部分以外のデータをコピーすることにより、ランタイム実行形式記憶部303にデータを格納する(ステップ605)。これは図5および図6のメモリイメージの中で白い箱で示されたデータに相当する。
最後に、クラスファイルから、ランタイム実行形式203の中でポインタ値として表現されるデータを計算し、算出したデータをランタイム実行形式記憶部303に格納し、プログラム201からランタイム実行形式203への変換処理を終了する(ステップ606)。これは図5および図6のメモリイメージの中で網掛けで表現した箱で示されたデータに相当する。
図10は、ランタイムセービング部103におけるデータ変換の処理の流れの一例を示す。
まず、ランタイムセービング部103によって変換されるテンポラリランタイム実行形式202のメモリ使用量を計算する(ステップ701)。これはランタイム実行形式203を検査し、constant_pool_count、interfaces_count、fields_count、methods_count、attributes_countといった、各構造のエントリ数を示す数値と、各構造のエントリ毎のサイズにより算出することが可能である。
ステップ701で算出した値に基づいて、テンポラリランタイム実行形式202の格納先であるテンポラリランタイム実行形式記憶部302に、保存メモリ領域の空きが存在するか否かを検査する(ステップ702)。空きが存在しない場合(ステップ702がN)、ランタイムセービング部103によるデータ変換処理の続行を不可能と判断して、ランタイムセービング処理そのものを取りやめ、処理を終了する(ステップ703)。一方、空きが存在する場合(ステップ702がY)、テンポラリランタイム実行形式記憶部302に、ステップ701で計算した値の分だけのメモリ領域を確保する(ステップ704)。
次に、ランタイムセービング処理の対象となる全てのクラスに対して識別番号を与え、テンポラリランタイム実行形式202のclass_idデータとしてテンポラリランタイム実行形式記憶部302にデータを格納する(ステップ705)。
ランタイムセービング処理の処理元となるデータであるランタイム実行形式203が、ランタイム実行形式記憶部303の中で、その記録のために使用しているメモリ量の数値を計算し、テンポラリランタイム実行形式202のruntime_image_sizeデータとしてテンポラリランタイム実行形式記憶部302に格納する(ステップ706)。
ランタイム実行形式203のメモリイメージを検査し、ランタイム実行形式203の中でポインタ値として表現される部分以外のデータを、テンポラリランタイム実行形式202のデータとしてコピーすることにより、テンポラリランタイム実行形式記憶部302にデータを格納する(ステップ707)。これは図7および図8のメモリイメージの中で白い箱で示されたデータに相当する。
最後に、ランタイム実行形式203のメモリイメージを検査し、ランタイム実行形式203の中でポインタ値として表現されるデータに関して変換を行い、変換したデータをテンポラリランタイム実行形式記憶部302に格納し、ランタイム実行形式203からテンポラリランタイム実行形式202への変換処理を終了する(ステップ708)。ポインタ値のデータは、「そのポインタが指す構造を含むクラスの識別番号」と「構造の中のエントリ番号」という形に変換される。これは図7および図8のメモリイメージの中で、class_id、runtime_image_size以外の、網掛けで表現した箱で示されたデータに相当する。
図11は、プレローダ部104におけるデータ変換の処理の流れの一例を示す。
まず、プレローダ部104によって変換されるテンポラリランタイム実行形式202のメモリ使用量を計算する(ステップ801)。これは処理前のクラスファイルを検査し、constant_pool_count、interfaces_count、fields_count、methods_count、attributes_countといった、各構造のエントリ数を示す数値と、各構造のエントリ毎のサイズにより算出することが可能である。
ステップ801で算出した値に基づいて、テンポラリランタイム実行形式202の格納先であるテンポラリランタイム実行形式記憶部302に、保存メモリ領域の空きが存在するか否かを検査する(ステップ802)。空きが存在しない場合(ステップ802がN)、プレローダ部104によるデータ変換処理の続行を不可能と判断して、プレロード処理そのものを取りやめ、処理を終了する(ステップ803)。一方、空きが存在する場合(ステップ802がY)、テンポラリランタイム実行形式記憶部302に、ステップ801で計算した値の分だけのメモリ領域を確保する(ステップ804)。
次に、プレロード処理の対象となる全てのクラスに対して識別番号を与え、テンポラリランタイム実行形式202のclass_idデータとしてテンポラリランタイム実行形式記憶部302にデータを格納する(ステップ805)。
プレロード処理の処理元となるデータであるプログラム201が、ランタイム実行形式203に変換された場合に使用するメモリ量の数値を計算し、テンポラリランタイム実行形式202のruntime_image_sizeデータとしてテンポラリランタイム実行形式記憶部302に格納する(ステップ806)。
プログラム201を検査し、テンポラリランタイム実行形式202の中で、他の構造への参照値として表現される部分以外のデータをテンポラリランタイム実行形式202のデータとしてコピーする(ステップ807)。これは図7および図8のメモリイメージの中で白い箱で示されたデータに相当する。
最後に、プログラム201を検査し、テンポラリランタイム実行形式202の中で、他の構造への参照値として表現される部分のデータを、「参照先の構造を含むクラスの識別番号」と「構造の中のエントリ番号」という形のデータに変換し、プログラム201からテンポラリランタイム実行形式202への変換処理を終了する(ステップ808)。
これは図7および図8のメモリイメージの中で、class_id、runtime_image_size以外の、網がけの箱で示されたデータに相当する。
図12は、ポストローダ部105におけるデータ変換の処理の流れの一例を示す。
まず、ポストローダ部105によって変換されるランタイム実行形式203のメモリ使用量を計算する(ステップ901)。これは、テンポラリランタイム実行形式202のデータruntime_image_sizeを参照することで簡単に得ることが出来る。
ステップ901で得た値に基づいて、ランタイム実行形式203の格納先であるランタイム実行形式記憶部303に、保存メモリ領域の空きが存在するか否かを検査する(ステップ902)。空きが存在しない場合(ステップ902がN)、ポストローダ部105による処理の続行を不可能と判断して、ポストロード処理そのものを取りやめ、プログラムの起動不可能であることをユーザに通知し、処理を終了する(ステップ903)。一方、空きが存在する場合(ステップ902がY)、ランタイム実行形式記憶部303に、ステップ901で計算した値の分だけのメモリ領域を確保する(ステップ904)。
次に、テンポラリランタイム実行形式202を検査し、ランタイム実行形式203の中でポインタ値として表現される部分以外のデータをコピーすることにより、ランタイム実行形式記憶部303にデータを格納する(ステップ905)。これは図5および図6のメモリイメージの中で白い箱で示されたデータに相当する。
最後に、ランタイム実行形式203の中でポインタ値として表現されるデータを計算し、算出したデータをランタイム実行形式記憶部303に格納し、テンポラリランタイム実行形式202からランタイム実行形式203への変換処理を終了する(ステップ906)。この計算は、テンポラリランタイム実行形式202の中の参照値、すなわち「参照先の構造を含むクラスの識別番号」と「構造の中のエントリ番号」という形のデータを、ポインタに変換することによって実現できる。このデータは図5および図6のメモリイメージの中で網掛けで表現した箱で示されたデータに相当する。
以上により、前もってテンポラリランタイム実行形式を保持していることにより、ポストロード処理のみでプログラムを起動実行することが可能となる。これにより、(1)変換されるランタイム実行形式203のメモリ使用量の計算が簡単である。(2)テンポラリランタイム実行形式202のメモリイメージは、プログラム201(クラスファイル形式)のデータと比較して、ランタイム実行形式203のメモリイメージに非常に近い形でデータを保存しており、ポインタ値以外はほとんどメモリイメージをコピーする形で簡単にランタイム実行形式203が得られる。という大きな2つの効果により、イメージの変換の処理量を大幅に少なくすることができ、プログラムの起動時間を短縮することが可能となる。
図13は、ランタイムセービング処理時の画面表示について説明した図である。
なお、本発明の実施の形態1において、プログラムがロードされた後に、続けてランタイムセービング処理を行うものとする。つまり、ランタイムセービング部103は、ローダ部102によるロード処理の終了タイミングに、テンポラリランタイム実行形式を生成し格納するメモリ領域の空きが存在するか否かをチェックし、空きがあると判断された場合に直ちにランタイムセービング処理を行えばよい。
図13(a)では、ローダ部102がプログラム201をランタイム実行形式203に変換する処理中における携帯情報端末の表示画面出力と、ランタイムセービング部103がランタイム実行形式203をテンポラリランタイム実行形式202に変換する処理中における携帯情報端末の表示画面出力とを変更し、ユーザに処理状況を通知する例を示している。この場合、ユーザがランタイムセービング処理を余計な処理と考え、プログラムが実行開始するまでの待ち時間に余分なストレスを感じる可能性がある。
図13(b)では、これら2つの処理の表示画面出力をあえて変更せずに同一にし、ユーザにこれらの処理の境界を通知しない例を示している。これにより、ランタイムセービング処理の処理時間をロード処理に隠蔽し、ユーザに無用なストレスを与えないようにすることができる。
図14は、プレロード処理時の画面表示について説明した図である。
なお、本発明の実施の形態1において、プログラムがダウンロードされた時に、テンポラリランタイム実行形式を生成し格納するメモリ領域の空きが存在すれば、無条件にプレロード処理を行うものとする。つまり、プレローダ部104は、ダウンロード処理の終了後に、テンポラリランタイム実行形式を変換し格納するメモリ領域の空きが存在するか否かをチェックし、空きがあると判断された場合に直ちにプレロード処理を行えばよい。
図14(a)では、プログラムダウンロード部101がプログラム201をダウンロードする処理中における携帯情報端末の表示画面出力と、プレローダ部104がプログラム201をテンポラリランタイム実行形式202に変換する処理中における携帯情報端末の表示画面出力とを変更し、ユーザに処理状況を通知する例を示している。この場合、ユーザがプレロード処理を余計な処理と考え、プログラムが実行開始するまでの待ち時間に余分なストレスを感じる可能性がある。
図14(b)では、これら2つの処理の表示画面出力をあえて変更せずに同一にし、ユーザにこれらの処理の境界を通知しない例を示している。これにより、プレロード処理の処理時間をダウンロード処理に隠蔽し、ユーザに無用なストレスを与えないようにすることができる。
以上により、ランタイムセービング部103またはプレローダ部104により、前もってテンポラリランタイム実行形式を保持することができ、ポストロード処理のみでプログラムの解釈実行が可能となることにより、起動時間を短縮することができる。
(実施の形態2)
本発明の実施の形態1では、ランタイムセービング部によるランタイムセービング処理は、プログラムがロードされた後に、続けてロードされたプログラムに対して行うものとした。しかし、これ以外の判断基準に基づき、ランタイムセービング処理の対象プログラムを選択決定することができる。以下に、図を用いて詳細を説明する。
図15は、本発明の実施の形態2におけるプログラム実行処理端末装置の構成を示すブロック図である。プログラムダウンロード部101と、ローダ部102と、プレローダ部104と、ポストローダ部105と、インタプリタ部106と、制御部107と、ランタイムセービング部110と、プログラム記憶部301と、テンポラリランタイム実行形式記憶部302と、ランタイム実行形式記憶部303と、設定情報記憶部304と、インタプリット履歴記憶部305とから構成されている。プログラムダウンロード部101と、ローダ部102と、プレローダ部104と、ポストローダ部105と、インタプリタ部106と、制御部107と、プログラム記憶部301と、テンポラリランタイム実行形式記憶部302と、ランタイム実行形式記憶部303は、図2で説明したものと同じである。ここでは、新規に追加したランタイムセービング部110と、設定情報記憶部304と、インタプリット履歴記憶部305について説明する。
ランタイムセービング部110は、設定情報記憶部304またはインタプリット履歴記憶部305に格納されている設定情報または履歴情報に基づき、ランタイムセービング処理の開始タイミングと対象プログラムを選択決定する。
設定情報記憶部304は、ランタイムセービング処理を行う対象プログラムを識別する設定情報を格納する。この設定情報は、ランタイムセービング部110から参照され、ランタイムセービング処理対象と指定されているプログラム(高速起動指定のプログラム)がロードされた場合に、続けてランタイムセービング処理を実行する。
設定情報記憶部304に格納された設定情報は、例えば、ユーザの入力指定に基づいて決定する。図16に、入力画面の一例を示す。ユーザは携帯情報端末の表示画面に表示したプログラム一覧から、各プログラムごとに高速起動のONあるいはOFFを指定することができる。図16では、「Schedule」および「MemoPad」というプログラムが高速起動ONとして指定されている。高速起動ONとして指定されているプログラムがロードされた場合には、ランタイムセービング処理を行い、それ以外のプログラムがロードされた場合にはランタイムセービング処理は行わない。なお、ユーザの入力指定に関係なく、常に特定のプログラムを高速起動指定することも可能である。
インタプリット履歴記憶部305は、各プログラムが過去に解釈実行された履歴情報を格納する。この履歴情報は、ランタイムセービング部110から参照され、履歴情報から使用頻度が高いと判断されるプログラムがロードされた場合に、続けてランタイムセービング処理を実行する。
インタプリット履歴記憶部305に格納された履歴情報の一例を、図17に示す。図17では、プログラム記憶部301に格納された全てのプログラムごとに、これまでに何回起動されたかという情報と、最後に起動された時刻はいつか、という情報をテーブルとして保持している。なお、平均起動時間や、起動間隔など、他の情報を含んでもよく、また、例えば起動回数だけといった、一つの情報のみでもよい。あるプログラムがロードされた場合に、そのプログラムについてランタイムセービング処理を行うか否かの判定については、例えば以下の判断基準を適用することが考えられる。なお、インタプリット履歴記憶部305の履歴情報を用いた他の判断基準であってもよい。
第1の判断基準は、3回以上起動されたことがあるプログラムがロードされた場合には、そのプログラムは頻繁に使用されるとみなし、ランタイムセービング処理を行う。選択基準の数値に関しては3回でなくとも、任意の数でも良い。
第2の判断基準は、全てのプログラムの中で、これまでに起動された回数の多い、上位2つのプログラムに関しては、そのプログラムは頻繁に使用されるとみなし、ランタイムセービング処理を行う。選択基準の数値に関しては上位2つでなくとも、任意の数でも良い。
以上により、ランタイムセービング処理の対象プログラムを選択することが可能となり、高速起動が必要なプログラムや使用頻度が高いプログラムを選択して、ランタイムセービング処理を実施することができる。よって、高速起動が不要なプログラムや使用頻度が低いプログラムのテンポラリランタイム実行形式によってテンポラリランタイム実行形式記憶部302の記憶領域が占有されてしまうのを防止できる。つまりテンポラリランタイム実行形式記憶部302の空き記憶領域不足によって高速起動が必要なプログラムや使用頻度が高いプログラムのランタイムセービング処理が失敗に終わるのを防止することができ、効率的なランタイムセービング処理を実施することができる。
(実施の形態3)
本発明の実施の形態1では、プレローダ部によるプレロード処理は、プログラムがダウンロードされた時に、続けてダウンロードされたプログラムに対して行うものとした。しかし、これ以外の判断基準に基づき、プレロード処理の開始タイミングと対象プログラムを選択決定することができる。
図18は、本発明の実施の形態3におけるプログラム実行処理端末装置の構成を示すブロック図である。プログラムダウンロード部101と、ローダ部102と、ポストローダ部105と、インタプリタ部106と、制御部107と、ランタイムセービング部110と、プレローダ部111と、プレロード制御部112と、プログラム記憶部301と、テンポラリランタイム実行形式記憶部302と、ランタイム実行形式記憶部303と、設定情報記憶部304と、インタプリット履歴記憶部305とから構成されている。プログラムダウンロード部101と、ローダ部102と、ポストローダ部105と、インタプリタ部106と、制御部107と、ランタイムセービング部110と、プログラム記憶部301と、テンポラリランタイム実行形式記憶部302と、ランタイム実行形式記憶部303と、設定情報記憶部304と、インタプリット履歴記憶部305は、図15で説明したものと同じである。ここでは、新規に追加したプレローダ部111と、プレロード制御部112について説明する。
プレローダ部111は、プレロード制御部112から通知を受信することにより、プログラム記憶部301に記録されたプログラムを、テンポラリランタイム実行形式に変換し、テンポラリランタイム実行形式記憶部302に格納するプレロード処理を行う。特に、特定プログラムを指定する識別子が通知された場合、プレロード処理対象として、通知されたプログラムを選択する。なお、制御部107からプレロード開始の指示を受信することにより、プログラムをダウンロードした際に、続けてプレロード処理を実施することも可能である。また、設定情報記憶部304またはインタプリット履歴記憶部305に格納されている設定情報または履歴情報に基づき、プレロード処理の対象プログラムを選択決定する。
プレロード制御部112は、携帯情報端末の機器状態に基づいて、プレロード開始のタイミングを決定し、プレローダ部111に処理の開始を通知する。なお、プレロード対象のプログラムをプレロード制御部112で決定し、決定済みのプログラムをプレローダ部111に通知してもよいし、プレロード対象のプログラムを指定せずに開始のタイミングのみを通知し、プレローダ部111が処理対象のプログラムを選択してもよい。また、機器状態としては、例えば以下の各判断基準を適用することが考えられる。
第1の判断基準は、携帯情報端末が一定時間以上、ユーザの入力操作を何も受け付けない(待ち受け)状態に入っていれば、プレロード処理を行う。この場合、プレロード制御部112は、前もって設定した時間長データ(基準時間)を保持しており、携帯情報端末に対してユーザの入力操作が加えられていない(待ち受け)状態の連続時間を計測し、基準時間と比較することにより、開始タイミングを決定する。
図19に、プレロード制御部112における処理の流れの一例を示す。
まず、待ち受け状態の連続時間を初期化する(ステップ1501)。
携帯情報端末の機器状態として、一定時間以上ユーザの入力を何も受け付けていない(待ち受け)状態に入っているか否かを検出する(ステップ1502)。待ち受け状態でない場合(ステップ1502がN)、ステップ1501に遷移し、処理を繰り返す。一方、待ち受け状態である場合(ステップ1502がY)、待ち受け状態の連続時間を更新し(ステップ1503)、その連続時間の長さと、基準時間との比較を行う(ステップ1504)。
待ち受け状態の連続時間が基準時間を越えるまで(ステップ1504がN)、ステップ1502からステップ1504を繰り返す。待ち受け状態の連続時間が基準時間を越えた時(ステップ1504がY)、プレロード処理の開始タイミングと決定し、プレローダ部111に処理の開始を通知する。
なお、基準時間は、ROM化されているなどして携帯情報端末に固有の値でもよいが、ユーザの入力によって数値を変更することができてもよい。ユーザによる設定時の表示画面の一例を図20に示す。ここでは、基準時間として15分が設定されており、待ち受け状態の連続時間が15分を越えたタイミングで、プレロード処理を開始する。
第1の判断基準を用いれば、ユーザが携帯情報端末を操作していない間にプレロード処理が実行されるので、プレロード処理がユーザに対して隠匿される。よって、プレロード処理の実行によってユーザに何らのストレスを与えることがないという利点がある。
第2の判断基準は、携帯情報端末が待ち受け状態から脱した時に、プレロード処理を行う。この場合、プレロード制御部112は、携帯情報端末が待ち受け状態から、ユーザの入力操作が加わるなどして非待ち受け状態に入ったこと、すなわち待ち受け状態が終了したことを検出することにより、開始タイミングを決定する。
第3の判断基準は、携帯情報端末の中の内部時刻が一定のものになった場合、プレロード処理を行う。この場合、プレロード制御部112は、前もって設定した時刻データ(基準時刻)を保持しており、実際の現在時刻と基準時刻とを比較し、一致したことを検出することにより、開始タイミングを決定する。
なお、基準時刻は、ROM化されているなどして携帯情報端末に固有の値でもよいが、ユーザの入力によって数値を変更することができてもよい。ユーザによる設定時の表示画面の一例を図21に示す。ここでは、基準時刻として13時15分が設定されており、実際の現在時刻が13時15分になったタイミングで、プレロード処理を開始する。
第4の判断基準は、携帯情報端末の電源が入った時に、プレロード処理を行う。この場合、プレロード制御部112は、電源が入力されたことにより、開始タイミングを決定する。携帯情報端末の電源入力の検出の仕組み自体は、従来の携帯情報端末で用いられているデバイスからのイベント通知等の仕組みを用いて実現することが可能である。
第5の判断基準は、携帯情報端末が折りたたみ式の形状の端末(例えば折りたたみ式の携帯電話)であって、ユーザによる携帯情報端末の折りたたみの開閉があった時にプレロード処理を行う。この場合、プレロード制御部112は、携帯情報端末が閉じた状態から開いた状態へ移行した、あるいは、携帯情報端末が開いた状態から閉じた状態へ移行したことを検出することにより、開始タイミングを決定する。携帯情報端末の折りたたみの開閉の検出の仕組み自体は、従来の携帯情報端末で用いられているデバイスからのイベント通知等の仕組みを用いて実現することが可能である。
第6の判断基準は、携帯情報端末と別の電子機器との間で、通信が発生した時にプレロード処理を行う。この場合、プレロード制御部112は、携帯情報端末と別の電子機器との間にデータ通信が発生したことを検出することにより、開始タイミングを決定する。通信が発生したことを検出する仕組み自体は、従来の携帯電話で用いられているデバイスからのイベント通知等の仕組みを用いて実現することが可能である。
ここでの通信とは、具体的には、音声通話の着呼、HTTPを用いたデータ通信、FTPを用いたデータ通信、SSLを用いたデータ通信、IrDAを用いたデータ通信、などが考えられる。もちろん携帯情報端末がサポートするその他の種類の通信であっても良い。また、通信の発生に基づいて開始されるプレロード処理対象のプログラムは、発生した通信の種類に関連付けられたものが選択されても良い。このプログラムの選択に関しては後述する(図23)。
第7の判断基準は、携帯情報端末と別の電子機器との着脱があった場合にプレロード処理を行う。この場合、プレロード制御部112は、携帯情報端末に別の電子機器が付加(装着)された、あるいは、携帯情報端末に付加(装着)されていた別の電子機器が外されたことを検出することにより、開始タイミングを決定する。外部デバイスの着脱が発生したことを検出する仕組み自体は、従来の携帯情報端末で用いられている外部デバイスからのイベント通知等の仕組みを用いて実現することが可能である。
ここでの外部デバイスとは、具体的には、SDカード等外部記憶デバイス、Bluetooth(登録商標)等の機能拡張ユニット、USBコネクタ、イヤホン、マイク、電源コネクタ、充電器、キーボードなどが考えられる。もちろん携帯情報端末がサポートするその他の種類の外部デバイスであっても良い。また、外部デバイスの着脱に基づいて開始されるプレロード処理対象のプログラムは、外部デバイスの種類に関連付けられたものが選択されても良い。このプログラムの選択に関しては後述する(図23)。
第8の判断基準は、携帯情報端末に実装されている別のアプリケーションの実行開始あるいは実行終了した場合にプレロード処理を行う。この場合、プレロード制御部112は、携帯情報端末に実装されている別のアプリケーションの実行が開始された、あるいは、別のアプリケーションの実行が終了したことを検出することにより、開始タイミングを決定する。別のアプリケーションの実行が開始あるいは終了したことを検出する仕組み自体は、従来の携帯情報端末で用いられているソフトウェア間通信の仕組みを用いて実現することが可能である。
ここでの別のアプリケーションとは、具体的には、ブラウザ、メーラ、スケジュール帳、メディアプレイヤーなど、携帯情報端末に搭載されるアプリケーションであれば何でも良い。また、この別のアプリケーションは機械語(ネイティブ)で記述されていても良いし、Java(登録商標)など他の実行系を用いた仕組みによって記述されていても良い。また、別のアプリケーションの開始あるいは終了に伴ってプレロード処理されるプログラムは、実行が開始されたアプリケーションから連携起動される可能性があるなど、この別のアプリケーションの種類に関連付けられたものが選択されても良い。このプログラムの選択に関しては後述する(図23)。
第9の判断基準は、携帯情報端末のユーザの入力操作に伴って、一定の画面遷移が行われた時にプレロード処理を行う。この場合、プレロード制御部112は、ユーザに入力操作に基づいて、携帯情報端末の内部状態の遷移が発生したことを検出することにより、開始タイミングを決定する。なお、内部状態ごとに、ユーザの入力操作可能な指示の組み合わせが設定されており、特定の入力操作が行われた際の次の処理動作が決定する。つまり、内部状態は、ユーザの入力操作や外部との通信状況などによって順次遷移していくものであり、内部状態の遷移に伴って表示画面が変化するものが多い。プレロード制御部112は、内部状態の遷移の中で、前もって設定されているある特定の遷移が行われた場合にそれを検出するものとする。内部状態の遷移の検出自体は、従来の携帯情報端末で用いられているソフトウェア間通信の仕組みを用いて実現することが可能である。
図22に内部状態の遷移の一例を示す。この例では「(1)メニュー選択状態」「(2)アプリ選択状態」「(3)Javaアプリ選択状態」という3つの内部状態を示している。プレロード制御部112は、特定の内部状態遷移(図22(2)から(3)への遷移)が発生すると、これを検出し、プレローダ部111に処理の開始を通知する。プレローダ部111は、この通知を受けて、プログラムのプレロード処理を開始する。また、内部状態遷移に伴ってプレロード処理されるプログラムは、内部状態の遷移の種類に関連付けられたものが選択されても良い。このプログラムの選択に関しては後述する(図23)。
以上により、各判断基準に基づいてプレロード処理の開始タイミングを決定することが可能となり、ダウンロード時のみだけでなく、効率的なプレロード処理を実施することができる。
次に、処理の対象となるプログラムをどのように選択するのかについて説明する。
大きくは2つの選択基準があり、(A)プレローダ部111がプログラムを選択する場合と、(B)プレロード制御部112から処理対象のプログラムが通知される場合とに分けられる。(A)の場合、例えば以下の各選択基準を適用することが考えられる。
第1の選択基準は、携帯情報端末にダウンロードされているプログラムの中から適当に(ランダムに)選択する。この場合、プレローダ部111は、プログラム記憶部301に記録されているプログラムの中から適当に選択してプレロード処理を行えば良い。
第2の選択基準は、設定情報記憶部304に格納された設定情報に基づいて、携帯情報端末にダウンロードされているプログラムの中から、高速起動指定のプログラムとして設定されているプログラムを選択し、プレロード処理を行う。それ以外のプログラムに関しては、プレロード処理の対象としない。なお、設定情報記憶部304については、既に実施の形態2で説明した。
第3の選択基準は、インタプリット履歴記憶部305に格納された履歴情報に基づいて、使用頻度が高いと判断されるプログラムを選択し、プレロード処理を行う。例えば、最も多い回数起動されたことのあるプログラムを選択する、あるいは、一番最近に起動されたプログラムを選択するなどである。なお、インタプリット履歴記憶部305については、既に実施の形態2で説明した。
(B)の場合、プレロード処理が開始される条件に伴って、プレロード制御部112が、処理対象プログラムを選択する。この場合、プレロード制御部112は、プレロード処理の開始条件と処理対象のプログラムの対応表である、プレロード処理対応テーブルを保持し、この対応テーブルに基づいて、処理対象のプログラムを選択決定する。
図23に、プレロード処理対応テーブルの一例を示す。ここでは、プレロード処理を開始する条件に、条件番号という一意のID番号を割当て、各条件を識別している。また、図23では、開始条件を文章で記述しているが、条件番号との意味の対応付けが、番号の重複無くなされていればよい。さらに、プレロード処理対象のプログラムの識別子を文字列で表現しているが、他の表現であってもよい。各プレロード処理開始条件と関連性の高い、すなわち次に実行される可能性の高いと思われるプログラムを、予めプレロード処理対応テーブルに記録しておくことで、プレロード処理による起動の高速化の効果を得やすくなる。例えば、本発明をEメール送受信機能付きの携帯電話に適用した場合には、携帯電話がEメールを受信したときに、ユーザがEメールの受信に気付いてEメールを閲覧しようとすることが想定されるため、携帯電話がEメールを受信したときにメーラのプログラムをプレロードするように設定しておくことが有効である。これにより、ユーザがメーラを起動させるときの起動時間が短縮される。
以上により、プレロード処理の開始タイミングや対象プログラムを選択することが可能となり、高速起動が必要なプログラムや使用頻度が高いプログラムを選択して、効率的なプレロード処理を実施することができる。
(実施の形態4)
図24は、本発明の実施の形態4におけるプログラム実行処理端末装置の構成を示すブロック図である。プログラムダウンロード部101と、ローダ部102と、ランタイムセービング部110と、ポストローダ部105と、インタプリタ部106と、制御部107と、プレローダ部113と、別アプリ指示通知部114と、プログラム記憶部301と、テンポラリランタイム実行形式記憶部302と、ランタイム実行形式記憶部303と、設定情報記憶部304と、インタプリット履歴記憶部305とから構成されている。プログラムダウンロード部101と、ローダ部102と、ランタイムセービング部110と、ポストローダ部105と、インタプリタ部106と、制御部107と、プログラム記憶部301と、テンポラリランタイム実行形式記憶部302と、ランタイム実行形式記憶部303と、設定情報記憶部304と、インタプリット履歴記憶部305は、図15で説明したものと同じである。ここでは、新規に追加したプレローダ部113と別アプリ指示通知部114について説明する。
プレローダ部113は、別アプリ指示通知部114から通知を受信することにより、プログラム記憶部301に記録されたプログラムを、テンポラリランタイム実行形式に変換し、テンポラリランタイム実行形式記憶部302に格納するプレロード処理を行う。特に、特定プログラムを指定する識別子が通知された場合、プレロード処理対象として、通知されたプログラムを選択する。なお、制御部107からプレロード開始の指示を受信することにより、プログラムをダウンロードした際に、続けてプレロード処理を実施することも可能である。
別アプリ指示通知部114は、携帯情報端末に実装されている別アプリケーションからのプレロード開始の指示があったことをプレローダ部113に通知する。
図25に、別のアプリケーションからプレロード開始が指示される場合の処理概要の一例を図示する。
別のアプリケーションからプレロード開始の指示を受け取る仕組み自体は、例えば別のアプリケーションのソースコード中から呼び出しが可能なAPIを、携帯情報端末中に備えることで実現することができる。このAPIが呼び出されることにより、別アプリ指示通知部114が処理を行い、プレローダ部113にプレロード処理の開始を指示する。図25では、preloading_startと示されているAPIが、別のアプリケーションから呼び出され、プレローダ部113にプレロード処理の開始を通知する働きを行う例を示した。
また、プレロード処理されるプログラムは、APIが呼び出しの際に一緒に指定することもできる。図25では、APIの引数としてプログラムを指定する例を示した。引数program_idは、プログラム記憶部301に格納されたプログラムの識別子を表現しており、preloading_startの処理でプレローダ部113に対して行われる通知は、program_idの情報も含むものとする。プレローダ部113はこのprogram_idの情報を受け取り、プレロード処理されるプログラムを選択する。なお、プログラムを指定せずに、プレローダ部113が、次にプレロードする対象のプログラムを選択実行することも可能である。
以上により、プレロード処理の発生のトリガを機器状態に基づいて決定するのでなく、実行中のアプリケーションの中で自由に指定することが可能となる。つまり、特定のプログラムのプレロード処理を呼び出すようなアプリケーションを作成することにより、そのアプリケーションを実行する携帯情報端末に、次に実行予定などの特定のプログラムに対するプレロード処理を行わせることにより、特定のプログラムの起動時間を短縮することができる。
本発明によれば、プログラム配信サービスを利用して携帯情報端末にダウンロードした例えばJava(登録商標)等によるプログラムを起動する場合に、プレロード処理やランタイムセービング処理を行うことにより、プログラムの起動時間の長さを短縮することができる。
本発明の実施の形態における携帯情報端末のハードウェア構成図 本発明の実施の形態におけるプログラム実行処理端末装置の構成を示すブロック図 本発明の実施の形態におけるクラスロード処理におけるデータ変換の関係図 本発明の実施の形態におけるプログラムの構造の一例を示す図 本発明の実施の形態におけるランタイム実行形式の構造の一例を示す図 本発明の実施の形態におけるランタイム実行形式の構造の一例を示す図 本発明の実施の形態におけるテンポラリランタイム実行形式の構造の一例を示す図 本発明の実施の形態におけるテンポラリランタイム実行形式の構造の一例を示す図 本発明の実施の形態におけるローダ部の動作手順の一例を示すフローチャート 本発明の実施の形態におけるランタイムセービング部の動作手順の一例を示すフローチャート 本発明の実施の形態におけるプレローダ部の動作手順の一例を示すフローチャート 本発明の実施の形態におけるポストローダ部の動作手順の一例を示すフローチャート 本発明の実施の形態におけるランタイムセービング処理時の画面表示の一例を示す図 本発明の実施の形態におけるプレロード処理時の画面表示の一例を示す図 本発明の実施の形態におけるプログラム実行処理端末装置の構成を示すブロック図 本発明の実施の形態における設定情報の入力画面の一例を示す図 本発明の実施の形態におけるインタプリット履歴情報の一例を示す図 本発明の実施の形態におけるプログラム実行処理端末装置の構成を示すブロック図 本発明の実施の形態におけるプレロード制御部の動作手順の一例を示すフローチャート 本発明の実施の形態における基準時間の入力画面の一例を示す図 本発明の実施の形態における基準時刻の入力画面の一例を示す図 本発明の実施の形態における内部状態遷移の一例を示す図 本発明の実施の形態におけるプレロード処理対応テーブルの一例を示す図 本発明の実施の形態におけるプログラム実行処理端末装置の構成を示すブロック図 本発明の実施の形態における別アプリ指示通知部の処理概要の一例を示す図
符号の説明
CPU
記憶装置
入力装置
出力装置
送受信装置
システムバス
101 プログラムダウンロード部
102 ローダ部
103,110 ランタイムセービング部
104,111,113 プレローダ部
105 ポストローダ部
106 インタプリタ部
107 制御部
112 プレロード制御部
114 別アプリ指示通知部
201 プログラム
202 テンポラリランタイム実行形式
203 ランタイム実行形式
301 プログラム記憶部
302 テンポラリランタイム実行形式記憶部
303 ランタイム実行形式記憶部
304 設定情報記憶部
305 インタプリット履歴記憶部

Claims (14)

  1. 受信したプログラムを解釈実行処理する端末装置であって、
    前記受信したプログラムを記憶する不揮発性のメモリを有するプログラム記憶部と、
    前記プログラム記憶部に記憶されているプログラムをランタイム実行形式に変換するローダ部と、
    前記ローダ部が変換したランタイム実行形式を記憶する揮発性のメモリを有するランタイム実行形式記憶部と、
    前記ローダ部からの要求を受け、前記ランタイム実行形式記憶部の揮発性のメモリに記憶されたランタイム実行形式をテンポラリランタイム実行形式に変換するランタイムセービング部と、
    前記ランタイムセービング部によって変換されたテンポラリランタイム実行形式を記憶する不揮発性のメモリを有するテンポラリランタイム実行形式記憶部と、
    前記テンポラリランタイム実行形式記憶部に記憶されているテンポラリランタイム実行形式をランタイム実行形式に変換して前記ランタイム実行形式記憶部の揮発性のメモリ前記変換したランタイム実行形式を格納するポストローダ部と、
    前記ランタイム実行形式記憶部の揮発性のメモリに記憶されたランタイム実行形式を解釈実行するインタプリタ部と、
    前記プログラム記憶部の不揮発性のメモリに記憶されているプログラムの起動が指示された際に、前記テンポラリランライム実行形式記憶部の不揮発性のメモリに当該プログラムに対応するテンポラリランタイム実行形式が存在するか否かを判断し、存在しないと判断した場合には前記ローダ部に当該プログラムをランタイム実行形式へ変換するよう要求し、存在すると判断した場合には前記ポストローダ部に前記テンポラリランタイム実行形式記憶部の不揮発性のメモリに記憶されている当該プログラムに対応するテンポラリランタイム実行形式をランタイム実行形式へ変換して前記ランタイム実行形式記憶部の揮発性のメモリに格納するよう要求する制御部とを備え、
    前記ローダ部は、前記プログラム記憶部の不揮発性のメモリに記憶されているプログラムに含まれるデータへの参照値を、当該データが前記ランタイム実行形式記憶部の揮発性のメモリに格納される格納場所に対応する値であるポインタ値へ変換することにより、当該プログラムを当該ランタイム実行形式へ変換すると共に、前記ランタイム実行形式への変換後、前記ランタイムセービング部へ前記ランタイム実行形式記憶部の揮発性のメモリに記憶されたランタイム実行形式を前記テンポラリランタイム実行形式に変換するよう要求し、
    前記ランタイムセービング部は、前記ランタイム実行形式記憶部の揮発性のメモリに記憶した前記ランタイム実行形式に含まれるデータの格納場所に対応するポインタ値を、当該ポインタ値が指すデータを含むクラスの識別番号および前記ポインタ値が指すデータのエントリ番号に変換すること、および前記ランライム実行形式のサイズに関するデータを追加することにより、前記ランタイム実行形式を前記テンポラリランタイム実行形式に変換し、
    前記ポストローダ部は、前記テンポラリランタイム実行形式記憶部の不揮発性のメモリに記憶されているテンポラリランタイム実行形式に含まれる前記ポインタ値が指すデータを含むクラスの識別番号および前記ポインタ値が指すデータのエントリ番号から前記ポインタ値に変換することにより、当該テンポラリランタイム実行形式を前記ランタイム実行形式へ変換する、プログラム実行処理端末装置。
  2. 前記プログラム記憶部の不揮発性のメモリに前記受信したプログラムが記憶された後に続けて、前記制御部からの要求に従ってプログラムをテンポラリランタイム実行形式に変換するプレロード処理を行うプレローダ部をさらに備え、
    前記プレローダ部は、前記プログラムに含まれるデータの参照値を当該参照値に対応するデータを含むクラスの識別子および当該参照値に対応するデータのエントリ番号に変換すること、および前記プログラムが前記ランタイム実行形式へ変換された場合のサイズを算出し、当該算出したサイズに関するデータを追加することにより、前記プログラムをテンポラリランタイム実行形式に変換し、
    前記テンポラリランタイム実行形式記憶部は、前記プレローダ部が変換したテンポラリランタイム実行形式を前記テンポラリランタイム実行形式記憶部の不揮発性のメモリに記憶することを特徴とする、請求項1記載のプログラム実行処理端末装置。
  3. 前記プログラム実行処理端末装置は、表示画面を更に備え、
    前記ローダ部がプログラムをランタイム実行形式に変換する処理がなされていることと、前記ランタイムセービング部がランタイム実行形式をテンポラリランタイム実行形式に変換する処理がなされていることとを、前記プログラム実行処理端末装置が備える表示画面に出力することを特徴とする、請求項1または2記載のプログラム実行処理端末装置。
  4. 前記プログラム記憶部の不揮発性のメモリに記憶されているプログラムに対する高速起動設定情報を記憶する設定情報記憶部を更に備え、
    前記ランタイムセービング部は、前記設定情報記憶部に記憶している高速起動設定情報に基づいて、テンポラリランタイム実行形式に変換するプログラムを選択決定することを特徴とする、請求項1または2記載のプログラム実行処理端末装置。
  5. 前記プログラム実行処理端末装置は、表示画面を更に備え、
    前記プログラムを受信する処理がなされていることと、前記プレローダ部が前記受信して、前記プログラム記憶部に記憶されたプログラムをテンポラリランタイム実行形式に変換する処理がなされていることとを、前記プログラム実行処理端末装置が備える表示画面に出力することを特徴とする、請求項記載のプログラム実行処理端末装置。
  6. 前記プログラム記憶部の不揮発性のメモリに記憶されているプログラムに対する高速起動設定情報を記憶する設定情報記憶部を更に備え、
    前記プレローダ部は、前記設定情報記憶部に記憶している高速起動設定情報に基づいて、テンポラリランタイム実行形式に変換するプログラムを選択決定することを特徴とする、請求項3記載のプログラム実行処理端末装置。
  7. 前記プログラム記憶部の不揮発性のメモリ記憶されているプログラムを解釈実行した履歴情報を記録するインタプリット履歴記憶部を更に備え、
    前記プレローダ部は、前記インタプリット履歴記憶部に記憶している履歴情報に基づいて、テンポラリランタイム実行形式に変換するプログラムを選択決定することを特徴とする、請求項3記載のプログラム実行処理端末装置。
  8. 前記プログラム実行処理端末装置は、
    ユーザからの入力を受け付ける入力部と、
    前記入力部からの入力が継続してなされない時間が所定時間を越えると、前記プレローダ部に処理の開始を要求するプレロード制御部とを更に備える、請求項2記載のプログラム実行処理端末装置。
  9. 前記プログラム実行処理端末装置が内部で管理している現在時刻と、前もって設定されている開始時刻とを比較した結果に基づいて、前記プレローダ部に処理の開始を要求するプレロード制御部を更に備える、請求項2記載のプログラム実行処理端末装置。
  10. 前記プログラム実行処理端末装置に対するユーザの入力操作に応じて前記プログラム実行処理端末装置の内部状態を検出する検出部と、
    前記プログラム実行処理端末装置の内部状態が所定の状態となったことを前記検出部が検出すると、前記プレローダ部に処理の開始を要求するプレロード制御部とを更に備える、請求項2記載のプログラム実行処理端末装置。
  11. 前記プレローダ部がプログラムをテンポラリランタイム実行形式に変換する処理を開始する条件と、変換の対象となるプログラムとの対応を示した対応情報を記録するプレロード処理対応記憶部と、
    前記プレロード処理対応記憶部に記憶している対応情報に基づいて、前記テンポラリランタイム実行形式に変換する処理を開始する条件を満たすプログラムを選択し、前記プレローダ部に前記選択したプログラムを前記テンポラリランタイム実行形式に変換する処理の開始を要求するプレロード制御部とを更に備える、請求項2記載のプログラム実行処理端末装置。
  12. 前記プレロード処理対応記憶部に記憶される対応情報において、前記プレローダ部がプログラムをテンポラリランタイム実行形式に変換する処理を開始する条件と、当該条件を満たした後にユーザによって実行されることが予想されるプログラムとが対応付けられていることを特徴とする、請求項11記載のプログラム実行処理端末装置。
  13. 前記情報端末装置は、プログラムを受信することなしに動作可能なアプリケーションを保持しており、
    前記アプリケーションからの指示通知を受信し、受信した前記アプリケーションからの指示通知に基づいて、テンポラリランタイム実行形式への変換を行う開始タイミングを決定し、前記プレローダ部に処理の開始を要求するプレロード指示通知部を更に備え、
    前記プレローダ部は、前記プレロード指示通知部から開始が要求された際に、プログラムをテンポラリランタイム実行形式に変換する処理を行うことを特徴とする、請求項2記載のプログラム実行処理端末装置。
  14. 前記アプリケーションからの指示通知には、前記プログラム記憶部に記憶されているプログラムから特定のプログラムを判別するためのプログラム識別子を含み、
    前記プレロード指示通知部は、受信した指示通知に含まれるプログラム識別子を指定して、前記プレローダ部に処理の開始を要求し、
    前記プレローダ部は、前記プレロード指示通知部からの開始の要求に含まれるプログラム識別子に基づいて、テンポラリランタイム実行形式に変換する対象となるプログラムを決定することを特徴とする、請求項13記載のプログラム実行処理端末装置。
JP2004513936A 2002-06-18 2003-06-03 プログラム実行処理端末装置 Expired - Fee Related JP4376181B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2002176855 2002-06-18
JP2002176855 2002-06-18
PCT/JP2003/006980 WO2003107186A1 (ja) 2002-06-18 2003-06-03 プログラム実行処理端末装置、プログラム実行処理方法及びプログラム

Publications (2)

Publication Number Publication Date
JPWO2003107186A1 JPWO2003107186A1 (ja) 2005-10-20
JP4376181B2 true JP4376181B2 (ja) 2009-12-02

Family

ID=29728124

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004513936A Expired - Fee Related JP4376181B2 (ja) 2002-06-18 2003-06-03 プログラム実行処理端末装置

Country Status (6)

Country Link
US (1) US7506323B2 (ja)
EP (1) EP1515232A4 (ja)
JP (1) JP4376181B2 (ja)
CN (1) CN1310148C (ja)
AU (1) AU2003241885A1 (ja)
WO (1) WO2003107186A1 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100697416B1 (ko) * 2003-09-30 2007-03-20 교세라 가부시키가이샤 모바일 통신 단말기, 정보 제공 시스템 및 프로그램을기록한 컴퓨터 판독가능한 기록 매체
US7493596B2 (en) * 2004-06-30 2009-02-17 International Business Machines Corporation Method, system and program product for determining java software code plagiarism and infringement
US7647581B2 (en) * 2004-06-30 2010-01-12 International Business Machines Corporation Evaluating java objects across different virtual machine vendors
US7539975B2 (en) * 2004-06-30 2009-05-26 International Business Machines Corporation Method, system and product for determining standard Java objects
US9727604B2 (en) * 2006-03-10 2017-08-08 International Business Machines Corporation Generating code for an integrated data system
US9361137B2 (en) 2006-03-10 2016-06-07 International Business Machines Corporation Managing application parameters based on parameter types
US8160999B2 (en) * 2006-12-13 2012-04-17 International Business Machines Corporation Method and apparatus for using set based structured query language (SQL) to implement extract, transform, and load (ETL) splitter operation
US8219518B2 (en) 2007-01-09 2012-07-10 International Business Machines Corporation Method and apparatus for modelling data exchange in a data flow of an extract, transform, and load (ETL) process
US9298721B2 (en) * 2007-02-28 2016-03-29 Qualcomm Incorporated Prioritized search results based on monitored data
US8745507B2 (en) * 2007-11-30 2014-06-03 At&T Intellectual Property I, L.P. Preloader employing enhanced messages
CN101520733B (zh) * 2008-02-27 2014-04-16 国际商业机器公司 装载类的方法和装置及重组类存档文件方法
US20100011357A1 (en) * 2008-07-13 2010-01-14 International Business Machines Corporation System and method for garbage collection in a virtual machine
US8875115B2 (en) * 2008-11-29 2014-10-28 International Business Machines Corporation Type merging technique to reduce class loading during Java verification
US8458676B2 (en) * 2009-06-30 2013-06-04 International Business Machines Corporation Executing platform-independent code on multi-core heterogeneous processors
US9069543B2 (en) 2011-12-22 2015-06-30 International Business Machines Corporation Predictive operator graph element processing
EP3594805B1 (en) * 2012-12-17 2021-05-12 BlackBerry Limited System and methods for launching an application on an electronic device
US11095743B2 (en) * 2014-07-16 2021-08-17 Tensera Networks Ltd. Optimized content-delivery network (CDN) for the wireless last mile
US11483415B2 (en) 2014-07-16 2022-10-25 Tensera Networks Ltd. Background pre-rendering of user applications
US11489941B2 (en) 2014-07-16 2022-11-01 Tensera Networks Ltd. Pre-loading of user applications including skipping of selected launch actions
KR102401772B1 (ko) * 2015-10-02 2022-05-25 삼성전자주식회사 전자 장치에서 어플리케이션 실행 장치 및 방법
US11915012B2 (en) 2018-03-05 2024-02-27 Tensera Networks Ltd. Application preloading in the presence of user actions
US11922187B2 (en) 2018-03-05 2024-03-05 Tensera Networks Ltd. Robust application preloading with accurate user experience
WO2021019415A1 (en) 2019-07-30 2021-02-04 Tensera Networks Ltd. Pre-rendering of application user-interfaces in user devices
WO2022118131A1 (en) 2020-12-03 2022-06-09 Tensera Networks Preloading of applications having an existing task

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07191853A (ja) 1993-12-27 1995-07-28 Nec Corp メモリファイル化処理システム
JPH07271603A (ja) 1994-03-31 1995-10-20 Mitsubishi Electric Corp オーバレイプログラムロード方式
JP3727677B2 (ja) * 1994-09-20 2005-12-14 石塚硝子株式会社 ガラス製品のプレス成形装置
JP3586943B2 (ja) 1995-10-20 2004-11-10 富士通株式会社 プログラムロード装置と方法
US5958003A (en) 1996-02-21 1999-09-28 International Business Machines Corporation Method and computer system for improving the response time of a computer system to a user request
JPH11212893A (ja) 1997-10-08 1999-08-06 Sony Corp 電子機器におけるプログラム起動装置、プログラム起動方法、媒体および電子機器
US5966702A (en) 1997-10-31 1999-10-12 Sun Microsystems, Inc. Method and apparatus for pre-processing and packaging class files
GB2331814B (en) * 1997-11-19 2002-11-13 Ibm Pre-emptive download of software in data processing network
US6553564B1 (en) * 1997-12-12 2003-04-22 International Business Machines Corporation Process and system for merging trace data for primarily interpreted methods
US6349344B1 (en) * 1997-12-16 2002-02-19 Microsoft Corporation Combining multiple java class files into a run-time image
DE69911104T2 (de) 1998-03-24 2004-07-08 Sun Microsystems, Inc., Palo Alto Statische Bindung von dynamisch abgesendeten Anrufen in Anwesenheit von dynamischer Verknüpfung und Ladung
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
CA2255042C (en) * 1998-11-30 2004-04-13 Leonard W. Theivendra Class loader
JP3889227B2 (ja) 2000-01-21 2007-03-07 富士通株式会社 プログラム実行装置、プログラム実行方法、記録媒体、及び制御プログラム
GB0013132D0 (en) * 2000-05-31 2000-07-19 Ibm Virtual machine with reiitialisation

Also Published As

Publication number Publication date
WO2003107186A1 (ja) 2003-12-24
AU2003241885A1 (en) 2003-12-31
US20050066283A1 (en) 2005-03-24
US7506323B2 (en) 2009-03-17
EP1515232A1 (en) 2005-03-16
CN1310148C (zh) 2007-04-11
CN1613061A (zh) 2005-05-04
JPWO2003107186A1 (ja) 2005-10-20
EP1515232A4 (en) 2007-09-05

Similar Documents

Publication Publication Date Title
JP4376181B2 (ja) プログラム実行処理端末装置
US20090031243A1 (en) Method and apparatus for controlling display of windows
US7246346B2 (en) System and method for persisting dynamically generated code in a directly addressable and executable storage medium
CN105975311B (zh) 一种应用启动方法及装置
US20070266231A1 (en) Portable Electronic Device and Method for Loading Resource Data of the Portable Electronic Device
JP2005509194A (ja) プレインターナライズ済プログラムファイルの作成及び使用のための方法並びに装置
JP2007523421A (ja) ユーザインターフェイスにおけるメニュー項目の表示
GB2365553A (en) Trace information in a virtual machine
US20090125839A1 (en) Method and apparatus for controlling display of windows
WO2014107987A1 (en) File presenting method and apparatus for a smart terminal
WO2023272919A1 (zh) 一种资源数据读取方法、装置、电子设备和存储介质
KR100452343B1 (ko) 기계어 코드 실행영역을 포함하는 이동통신 단말기용 파일을 기록하는 저장매체 및 그를 이용한 파일 실행방법
CN102156654A (zh) 一种软件安装包的安装方法及系统
US7966600B2 (en) Distributed resource understanding tool management
US20080155521A1 (en) System, Method, Apparatus and Computer Program Product for Providing Memory Footprint Reduction
JP4768984B2 (ja) コンパイル方法、コンパイルプログラムおよびコンパイル装置
JP2004171258A (ja) パーミッショントークン管理システム及びプログラム
US6922735B2 (en) Management of co-processor information by integrating non-program information with program information
JP2009211187A (ja) 情報処理装置
US10310871B2 (en) Non-transitory computer-readable recording medium storing control program, control device and control method
JP2013029999A (ja) テストコード生成装置、テストコード生成方法及びテストコード生成プログラム
JP4504756B2 (ja) Java(登録商標名)実行環境におけるメモリ管理方法及びメモリ管理プログラム
CN116991447B (zh) 一种操作系统更新方法及相关设备
JP2008059494A (ja) ミドルウェア選択制御装置
JPH11232103A (ja) プログラムリンク方式及びメソッドサーチ方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090126

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090327

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090420

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090717

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090728

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090817

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090908

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120918

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130918

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees