(57)【要約】【課題】  リンク後プログラムを記憶するメモリの容量の制限の中でリンク後プログラムの実行時の速度を可及的に向上させる。【解決手段】  初期設定として、リンクを行う対象が全てのクラスライブラリに設定される（２２１）。これにより、全てのクラスライブラリがリンクされる（２２３）。次に、リンク後プログラムを記憶するメモリがオーバーフローしているか否かが判定される（２２５）。オーバーフローしておれば、現在リンクされているクラスライブラリを使用しているアプリケーションの数の最大値が変数Ｎに付与される（２３１）。次に、Ｎ個以上のアプリケーションで使用されているクラスライブラリはリンクしない、という内容へ設定が変更され、再度リンクが行われる（２２３）。メモリがオーバーフローしていなければ、処理は終了する（２２８）。【選択図】      図２
2004318860.tif 000002
【特許請求の範囲】
【請求項１】
メモリを有するコンピュータを、
１以上のリンク後プログラムの完成へ向けて複数のリンク前プログラムから１又は複数個をリンクする結合手段と、
完成後又は未完成の前記１以上のリンク後プログラムを前記メモリに記憶させる記憶手段と、
前記メモリの定められた容量がオーバーフローしない範囲で、前記結合手段に前記複数のリンク前プログラムのうち定められた優先順位の高いものから優先的に且つ最大限度でリンクさせる管理手段として機能させるためのプログラムリンクプログラム。
【請求項２】
前記管理手段は、前記結合手段にリンクを行わせ、その結果により前記最大限度を見出す請求項１記載のプログラムリンクプログラム。
【請求項３】
前記管理手段は、前記結合手段にリンクを行わせることなく、リンクの各段階における前記１以上のリンク後プログラムのサイズを評価することにより、前記最大限度を見出す請求項１記載のプログラムリンクプログラム。
【請求項４】
前記定められた優先順位は、各リンク前プログラムが前記１以上のリンク後プログラム作成のために使われる頻度の低い順、各リンク前プログラムのサイズの小さい順、各リンク前プログラムが前記１以上のリンク後プログラム作成のために使われている頻度と前記各リンク前プログラムサイズとの積の小さい順、各リンク前プログラムの実行時リンク時間の大きい順、及び前記１以上のリンク後プログラムの実行にともなう各リンク前プログラムの実行頻度の高い順、の中から選択された少なくとも１つである請求項１乃至３の何れかに記載のプログラムリンクプログラム。
【請求項５】
メモリを有するコンピュータを、
１以上のリンク後プログラムの完成へ向けて複数のリンク前プログラムから１又は複数個をリンクする結合手段と、
完成後又は未完成の前記１以上のリンク後プログラムを前記メモリに記憶させる記憶手段と、
前記メモリの定められた容量がオーバーフローしない範囲で、前記結合手段に前記複数のリンク前プログラムのうち定められた優先順位の高いものから優先的に且つ最大限度でリンクさせる管理手段として機能させるためのプログラムリンクプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項６】
メモリと、
１以上のリンク後プログラムの完成へ向けて複数のリンク前プログラムから１又は複数個をリンクする結合手段と、
完成後又は未完成の前記１以上のリンク後プログラムを前記メモリに記憶させる記憶手段と、
前記メモリの定められた容量がオーバーフローしない範囲で、前記結合手段に前記複数のリンク前プログラムのうち定められた優先順位の高いものから優先的に且つ最大限度でリンクさせる管理手段とを備えるプログラムリンク装置。
【請求項７】
メモリと、
１以上のリンク後プログラムの完成へ向けて複数のリンク前プログラムから１又は複数個をリンクする結合手段と、
完成後又は未完成の前記１以上のリンク後プログラムを前記メモリに記憶させる記憶手段と、
前記メモリの定められた容量がオーバーフローしない範囲で、前記結合手段に前記複数のリンク前プログラムのうち定められた優先順位の高いものから優先的に且つ最大限度でリンクさせる管理手段と、
前記メモリに記憶される前記１以上のリンク後プログラムのうち指定を受けたものを実行する実行制御手段と、を備え、
前記実行制御手段は、実行すべきリンク後プログラムが未完成である場合に、前記複数のリンク前プログラムから１又は複数をリンクすることにより前記実行すべきリンク後プログラムを完成する実行時リンク手段を有する端末装置。
【請求項８】
前記複数のリンク前プログラムを取得する取得手段と、
前記取得手段が取得した前記複数のプログラムを保存する保存手段とを更に備える請求項７記載の端末装置。
【請求項９】
１以上のリンク後プログラムの完成へ向けて複数のリンク前プログラムから１又は複数個をリンクする結合ステップと、
完成後又は未完成の前記１以上のリンク後プログラムをメモリに記憶させる記憶ステップとを備え、
前記結合ステップは、前記メモリの定められた容量がオーバーフローしない範囲で、前記複数のリンク前プログラムのうち定められた優先順位の高いものから優先的に且つ最大限度でリンクするプログラムリンク方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本特許出願に係る発明は、いわゆるソースプログラム即ち原始言語で記述されたプログラムをコンパイラによって変換して得られる中間言語プログラム、具体的には例えば実行時の絶対アドレスが決定されていないプログラムや汎用のライブラリプログラムを複数結合し、例えば実行時の絶対アドレスが決定されたオブジェクトプログラムを作成するリンカに関するものである。しかし上記、実行時の絶対アドレスの決定の有無は１つの例示であってこれに限定されるものではない。
【０００２】
本特許出願に係る発明は、特に、実行時環境でのメモリサイズに制限の大きい、携帯機器を始めとする各種装置で実行される、例えばＪａｖａ（Ｒ）言語（本明細書において、商品名に付される（Ｒ）は、当該商品名が登録商標であることを表す）で記述されたプログラムのリンカに関するものである。しかしこれらもあくまで１つの例示であって、これに限定されるものではない。
【背景技術】
【０００３】
従来において、Ｊａｖａ（Ｒ）言語やＣ言語で記述されたプログラムを複数結合し、実行プログラムを作成するリンカとして、例えば、下記特許文献１、特許文献２に記載のものが知られていた。例えば従来のＪａｖａ（Ｒ）実行環境では、アプリケーションプログラムのＪａｖａ（Ｒ）ソースコードは、中間言語のバイトコードに変換され、各クラス単位でファイルとして記憶される。
【０００４】
アプリケーションが起動されると、これらのクラスファイルから必要なものをロードし、これらをリンクすることにより実行プログラムが作成される。この方式を実行時リンク方式と呼ぶ。この方式によるプログラムと処理の流れを図１２に示す。図１２の例では、中間言語で記述されているクラスＡ、クラスＢ、クラスＸ、及びクラスＹの各プログラムがサーバ９０９に記憶されている。従来の実行時リンク方式は、これらの４つのプログラムを事前に端末装置９０１にロードし、記憶する。
【０００５】
例えばこれらの中からクラスＡ、クラスＢ、クラスＸの各プログラムをリンクすることによってアプリケーションプログラム９０２が作成されると仮定する。このアプリケーションプログラム９０２を端末装置９０１が起動すると、その時点でリンカ（すなわちプログラムリンクプログラム）が実行時リンクを行う。すなわちリンカは、クラスＡ、クラスＢ、クラスＸの各プログラムをリンクすることによってアプリケーションプログラム９０２を作成し、実行に供する。
【０００６】
又、例えばこれらの中からクラスＡ、クラスＢ、クラスＹの各プログラムをリンクすることによってアプリケーションプログラム９０３が作成されると仮定する。このアプリケーションプログラム９０３を端末装置９０１が起動すると、その時点でリンカが実行時リンクを行う。すなわちリンカは、クラスＡ、クラスＢ、クラスＹの各プログラムをリンクすることによってアプリケーションプログラム９０３を作成し、実行に供する。
【０００７】
一方、例えば従来のＣ言語実行環境では、ソースプログラムはコンパイルされることによりオブジェクトプログラムに変換され、同時に必要な全てのライブラリが事前にリンクされることにより実行形式ファイルが作成され記憶される。アプリケーションが起動されると、この実行形式ファイルがロードされ、実行される。
【０００８】
この方式を事前リンク方式と呼ぶ。この方式によるプログラムと処理の流れを図１３に示す。図１３の例では、中間言語で記述されているクラスＡ、クラスＢ、クラスＸ、及びクラスＹの各プログラムが例えばサーバ９２９に記憶されている。サーバ９２９によってこれらのプログラムの事前リンクが行われ、アプリケーションプログラム９２２とアプリケーションプログラム９２３が作成されている。
【０００９】
端末装置９２１はこれらのアプリケーションプログラム９２２とアプリケーションプログラム９２３をロードして記憶する。そして、これらのアプリケーションプログラム９２２とアプリケーションプログラム９２３の何れかが起動されると、端末装置９２１は、起動されたプログラムを即時に実行することができる。
【特許文献１】特開平１０−０６９３７６号公報
【特許文献２】特表２０００−５１４５８４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
図１２に示す実行時リンク方式では、端末装置９０１がロードして記憶するのは、クラスＡ、クラスＢ、クラスＸ、クラスＹの各中間言語プログラムを１つずつである。したがって、重複してライブラリを記憶する必要が無く、記憶領域を節減することができる。これは例えば携帯機器のように記憶部の容量に制限があるような機器では大きなメリットとなり得た。しかし一方、実行時リンク方式は、アプリケーションが起動されてからリンクを行うため、アプリケーションの起動から実際に実行されるまで長い時間を要するという欠点を有していた。
【００１１】
これに対して、図１３に示す事前リンク方式は、先にリンクを行って実行形式ファイルを作っておくため、アプリケーションが起動されるとすぐに実行することが可能である。このことは、事前リンク方式の持つ大きなメリットであった。しかし他方、事前にリンクを行っておくことによって、端末装置９２１は、アプリケーションプログラム９２２とアプリケーションプログラム９２３とで共通に使用するライブラリであるクラスＡとクラスＢを、重複して記憶しなければならない。このことは、例えば携帯機器のように記憶部の容量に制限があるような機器では大きな欠点となっていた。
【００１２】
本発明は上記の問題点に鑑みてなされたもので、リンク後プログラムを記憶するメモリの容量の制限の中でリンク後プログラムの実行時の速度を可及的に向上させることを可能にするプログラムリンクプログラム、プログラムリンクプログラムを記録した記録媒体、プログラムリンク装置、端末装置及びプログラムリンク方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記課題を解決し上記目的を達成するために、請求項１記載の発明は、プログラムリンクプログラムであって、メモリを有するコンピュータを、１以上のリンク後プログラムの完成へ向けて複数のリンク前プログラムから１又は複数個をリンクする結合手段と、完成後又は未完成の前記１以上のリンク後プログラムを前記メモリに記憶させる記憶手段と、前記メモリの定められた容量がオーバーフローしない範囲で、前記結合手段に前記複数のリンク前プログラムのうち定められた優先順位の高いものから優先的に且つ最大限度でリンクさせる管理手段として機能させるためのものである。
【００１４】
又、請求項５記載の発明は、プログラムリンクプログラムを記録したコンピュータ読み取り可能な記録媒体であって、メモリを有するコンピュータを、１以上のリンク後プログラムの完成へ向けて複数のリンク前プログラムから１又は複数個をリンクする結合手段と、完成後又は未完成の前記１以上のリンク後プログラムを前記メモリに記憶させる記憶手段と、前記メモリの定められた容量がオーバーフローしない範囲で、前記結合手段に前記複数のリンク前プログラムのうち定められた優先順位の高いものから優先的に且つ最大限度でリンクさせる管理手段として機能させるためのものである。
【００１５】
更に、請求項６記載の発明は、プログラムリンク装置であって、メモリと、１以上のリンク後プログラムの完成へ向けて複数のリンク前プログラムから１又は複数個をリンクする結合手段と、完成後又は未完成の前記１以上のリンク後プログラムを前記メモリに記憶させる記憶手段と、前記メモリの定められた容量がオーバーフローしない範囲で、前記結合手段に前記複数のリンク前プログラムのうち定められた優先順位の高いものから優先的に且つ最大限度でリンクさせる管理手段とを備えるものである。
【００１６】
請求項１、５、又は６記載の発明によれば、管理手段が結合手段に、メモリの定められた容量がオーバーフローしない範囲で、複数のリンク前プログラムのうち定められた優先順位の高いものから優先的に且つ最大限リンクさせるので、リンク後プログラムを記憶するメモリの容量の制限の中でリンク後プログラムの実行時の速度を可及的に向上させることができる。なお、本発明において「メモリの定められた容量」は、メモリの全容量に限られず、リンク後プログラムを記憶するためにメモリに任意に割り当てられた容量であってもよい。
【００１７】
請求項２記載の発明は、請求項１記載のプログラムリンクプログラムであって、前記管理手段が、前記結合手段にリンクを行わせ、その結果により前記最大限度を見出すものである。
【００１８】
請求項２記載の発明によれば、管理手段が結合手段にリンクを行わせ、その結果により結合手段にリンクさせる最大限度を見出すので、リンクさせる最大限度を精度良く見出すことができる。
【００１９】
請求項３記載の発明は、請求項１記載のプログラムリンクプログラムであって、前記管理手段が、前記結合手段にリンクを行わせることなく、リンクの各段階における前記１以上のリンク後プログラムのサイズを評価することにより、前記最大限度を見出すものである。
【００２０】
請求項３記載の発明によれば、管理手段が結合手段にリンクを行わせることなく、リンクの各段階における１以上のリンク後プログラムのサイズを評価することにより、結合手段にリンクさせる最大限度を見出すので、リンクさせる最大限度を短時間で見出すことができる。また、リンクさせる最大限度を見出すために、メモリの定められた容量を超える容量を余分に確保しておく必要がない。
【００２１】
請求項４記載の発明は、請求項１乃至３の何れかに記載のプログラムリンクプログラムであって、前記定められた優先順位は、各リンク前プログラムが前記１以上のリンク後プログラム作成のために使われる頻度の低い順、各リンク前プログラムのサイズの小さい順、各リンク前プログラムが前記１以上のリンク後プログラム作成のために使われている頻度と前記各リンク前プログラムサイズとの積の小さい順、各リンク前プログラムの実行時リンク時間の大きい順、及び前記１以上のリンク後プログラムの実行にともなう各リンク前プログラムの実行頻度の高い順、の中から選択された少なくとも１つであるものである。
【００２２】
請求項４記載の発明によれば、定められた優先順位が、上記のように定められた複数の順位の中から選択された少なくとも１つであるので、複数のリンク前プログラムのうちメモリへの負荷の軽いもの、或いは、リンク後プログラム実行の場面で処理速度を高める効果の高いものが優先的にリンクされる。すなわち、メモリの容量の制限の中でリンク後プログラムの実行時の速度を、より効果的に向上させることができる。
【００２３】
請求項７記載の発明は、端末装置であって、メモリと、１以上のリンク後プログラムの完成へ向けて複数のリンク前プログラムから１又は複数個をリンクする結合手段と、完成後又は未完成の前記１以上のリンク後プログラムを前記メモリに記憶させる記憶手段と、前記メモリの定められた容量がオーバーフローしない範囲で、前記結合手段に前記複数のリンク前プログラムのうち定められた優先順位の高いものから優先的に且つ最大限度でリンクさせる管理手段と、前記メモリに記憶される前記１以上のリンク後プログラムのうち指定を受けたものを実行する実行制御手段と、を備え、前記実行制御手段は、実行すべきリンク後プログラムが未完成である場合に、前記複数のリンク前プログラムから１又は複数をリンクすることにより前記実行すべきリンク後プログラムを完成する実行時リンク手段を有するものである。
【００２４】
請求項７記載の発明によれば、端末装置が実行制御手段を備えるので、メモリに記憶される１以上のリンク後プログラムが未完成のものを含む場合であっても、それらの何れかを選択自在に実行することができる。また、端末装置が本発明のプログラムリンク装置を備えるので、実行制御手段はリンク後プログラムを実行する時間を節減することができる。
【００２５】
請求項８記載の発明は、請求項７記載の端末装置であって、前記複数のリンク前プログラムを取得する取得手段と、前記取得手段が取得した前記複数のプログラムを保存する保存手段とを更に備えるものである。
【００２６】
請求項８記載の発明によれば、端末装置が取得手段を備えるので、新たなリンク前プログラムを外部から取得することができる。又、端末装置が保存手段を備えるので、取得手段が取得した複数のリンク前プログラムを保存することができる。それにより、結合手段がリンク前プログラムをリンクする場合に、取得手段がリンクの対象となるリンク前プログラムを逐一外部から取得することを要しない。
【００２７】
更に、請求項９記載の発明は、プログラムリンク方法であって、１以上のリンク後プログラムの完成へ向けて複数のリンク前プログラムから１又は複数個をリンクする結合ステップと、完成後又は未完成の前記１以上のリンク後プログラムをメモリに記憶させる記憶ステップとを備え、前記結合ステップは、前記メモリの定められた容量がオーバーフローしない範囲で、前記複数のリンク前プログラムのうち定められた優先順位の高いものから優先的に且つ最大限度でリンクするものである。
【００２８】
請求項９記載の発明によれば、結合ステップが、メモリの定められた容量がオーバーフローしない範囲で、複数のリンク前プログラムのうち定められた優先順位の高いものから優先的に且つ最大限度でリンクするので、リンク後プログラムを記憶するメモリの容量の制限の中でリンク後プログラムの実行時の速度を可及的に向上させることができる。
【発明の効果】
【００２９】
以上のように本発明のプログラムリンクプログラム、プログラムリンクプログラムを記録した記録媒体、プログラムリンク装置、端末装置及びプログラムリンク方法によれば、リンク後プログラムを記憶するメモリの容量の制限の中でリンク後プログラムの実行時の速度を可及的に向上させることができる。この効果は、メモリ容量に制限の厳しい携帯機器において特に顕著に現れる。
【発明を実施するための最良の形態】
【００３０】
本特許出願に係る発明（以後、「本発明」とも称する）の実施の形態について図面を参照しつつ詳細に説明する。
【００３１】
（第１の実施の形態）
本発明のプログラムリンクプログラム又はプログラムリンク方法（省略して単に「リンク」とも称する）を実行するプログラムリンク装置の一実施の形態による端末装置のブロック構成図を図１に示す。この端末装置１０１は具体的には、携帯電話や携帯情報端末（ＰＤＡ：Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）等の携帯用情報機器、或いはパーソナルコンピュータ等の情報機器、又はマイクロコンピュータによって制御される種々の家庭用電気製品、事務用電子機器、その他制御装置等である。
【００３２】
端末装置１０１は、他の機器、例えば図１のサーバ１０９から中間言語プログラムをダウンロードして実行する。但しサーバ１０９は１つの例であって、他の機器は必ずしもサーバ１０９に限るものではなく、他の種々の電子機器、例えば通常のパソコンや電気製品であっても良い。端末装置１０１で主にリンクを実行するのは事前リンク部１４１である。事前リンク部１４１は、プログラムリンクプログラムに従ってリンクを実行する。以下に、事前リンク部１４１の動作を中心に、図１〜図５を参照しつつ端末装置１０１の構成及び動作について説明する。
【００３３】
端末装置１０１は様々なアプリケーションを実行する。例えば端末装置１０１は、図４、図５に示すアプリケーションプログラム１、アプリケーションプログラム２、及びアプリケーションプログラム３を実行する。尚、記載を簡略にするために、明細書及び図面において、「アプリケーションプログラム」は単に「アプリケーション」と適宜記載する。
【００３４】
これらのアプリケーションプログラムは、幾つかの中間言語で記述されたクラスライブラリから構成される。これらの中間言語のクラスライブラリはサーバ１０９に記憶されている。図１のサーバ１０９にはクラスＡ、クラスＢ、クラスＸ、クラスＹの４つのクラスだけが記載されているが、勿論これらだけに限るものではない。サーバ１０９には、その他必要となる全てのクラスライブラリが記憶されているが、図１では記載を省略している。
【００３５】
端末装置１０１の制御部１３１がダウンロード命令１１３を実行すると、サーバ１０９から端末装置１０１にこれらのクラスライブラリがダウンロードされる。これらのクラスライブラリは、例えば、種々の伝送媒体３３、例えばインターネット、ＬＡＮ、ＣＡＴＶ、衛星回線、電話回線、ＩＳＤＮ、ＡＴＭ、その他のネットワークを経由してダウンロードされる。伝送媒体３３は、有線の伝送媒体に限らず無線の伝送媒体であっても良い。
【００３６】
又、これらのクラスライブラリは、いわゆるパッケージ形態、即ち何等かのパッケージメディア等の記録媒体３１に記録された状態で端末装置１０１に読み込まれてもよい。図１には、記録媒体３１としてＣＤ−ＲＯＭが描かれている。ＣＤ−ＲＯＭに記録されたクラスライブラリは、ＣＤ−ＲＯＭ読取装置３２を端末装置１０１に接続することにより、ダウンロード制御部１３３を通じて読み出すことができる。なお、事前リンク部１４１がその機能を実現するためのプログラムリンクプログラムも、端末装置１０１は、伝送媒体３３及び記録媒体３１を通じて供給を受けることが可能である。
【００３７】
又、ダウンロード対象としてのクラスライブラリの指定には、例えば次に挙げるいくつかの形態がある。（１）端末装置１０１が実行するアプリケーションの中の特定のアプリケーションを指定し、その指定されたアプリケーションの実行のために必要なクラスライブラリだけをダウンロードする形態、（２）端末装置１０１が実行し得る全てのアプリケーションの実行のために必要なクラスライブラリをダウンロードする形態、（３）サーバ１０９が保有している全てのクラスライブラリをダウンロードする形態、及び（４）種々の方法でクラスライブラリを指定し、指定されたクラスライブラリをダウンロードする形態である。
【００３８】
ダウンロードを行うのはダウンロード制御部１３３である。ダウンロードされたクラスライブラリはファイルシステム部１３７に保存される。ダウンロード制御部１３３は、本発明の取得手段の具体例に該当する。又、ファイルシステム部１３７は、本発明のメモリ及び保存手段の具体例に該当する。
【００３９】
制御部１３１が事前リンク命令１１５を実行すると、ファイルシステム部１３７に記憶保存されているダウンロードされたクラスライブラリの事前リンクが行われる。前記の通り、各アプリケーションの実行に先立って事前にリンクしておくことにより、実行時の速度を向上するためである。又、この事前リンク命令の実行は、ダウンロードのタイミングに同期して、或いはダウンロードのタイミングと同時に行われても良いし、ある所定の時間によって行われても良いし、ユーザの何等かの操作に対応して行われても良いし、その他の何等かのタイミングによって行われても良い。
【００４０】
制御部１３１は、事前リンク命令１１５を実行することにより、事前リンク部１４１が事前リンク処理を行うよう制御する。それにともない、事前リンク部１４１は、以下の手順で事前リンク処理を行う（図２、２２０）。
【００４１】
事前リンク部１４１は、まず最初に全てのクラスライブラリのリンクを行うものと設定する（図２、２２１）。これはクラス呼び出し関係検出部１４６が、各アプリケーション毎に呼び出しているクラスライブラリを検出し、更に呼び出されているクラスライブラリがまた呼び出しているクラスライブラリを検出し、この処理を繰り返すことによって行われる。各クラスライブラリが呼び出す他のクラスライブラリは、例えば各クラスライブラリのヘッダに記述されている（図７（ａ）参照）。
【００４２】
呼び出されていることが検出されたクラスライブラリは結合部１４３によって結合（リンク）される（図２、２２３）。記憶部１４５は、結合部１４３が生成したリンク後のプログラムをファイルシステム部１３７へ記憶させる。この結合（リンク）は実行時アドレスの決定を伴うこともあるし、必ずしも実行時アドレスの最終的な決定まで到らないこともあり、どちらかに限るものではない。結合部１４３がリンク処理を実行している時、メモリ量管理部１４４は各リンクの実行によってファイルシステム部１３７のメモリ量（残り容量）がどのように変化するかを管理している。尚、結合部１４３は、本発明の結合手段の具体例に該当する。また、メモリ量管理部１４４は、本発明の管理手段の具体例に該当する。更に、記憶部１４５は、本発明の記憶手段の具体例に該当する。
【００４３】
以上の処理を必要な回数繰り返すことによって、端末装置１０１が実行できる、或いは実行しなければならない、或いは指定された、全てのアプリケーションプログラムのリンクが終了する（図２、２２３）。この時点で、メモリ量管理部１４４は、管理しているファイルシステム部１３７のメモリ量（すなわち、残り容量）を確認し、その容量内に収まっているか、或いはメモリオーバーフローしているかを判断する（図２、２２５）。もしもファイルシステム部１３７のメモリ容量内に収まっているならば（２２５でｎｏ）、全てのアプリケーションプログラムが正常にリンクできたことになり、事前リンクは終了する（図２、２２８）。尚、メモリ量管理部１４４が管理するファイルシステム部１３７のメモリ量は、ファイルシステム部１３７の総メモリ量に限られない。ファイルシステム部１３７の総メモリ量のうち、リンク後プログラムを格納するために、任意に割り当てられたメモリ量であっても良い。
【００４４】
もしもファイルシステム部１３７のメモリ容量をオーバーフローしているならば（２２５でｙｅｓ）、リンク数検出部１４２が、現在リンクに使われているクラスライブラリの中で、最も多くのアプリケーションのために使用されているクラスライブラリを検出し、そのクラスライブラリを使用しているアプリケーション数（最大値に相当）を求める（図２、２３１）。説明の都合上、その数を仮にＮとする（図２、２３１）。
【００４５】
そして事前リンク部１４１は、当初「全てのクラスライブラリのリンクを行う」と設定していたが、これ以降は「Ｎ個以上のアプリケーションで使用されているクラスライブラリのリンクは行わない」へと、設定を変更する（図２、２３３）。そして、事前リンク部１４１は、既に行った全てのアプリケーションプログラムのリンクを解除し、結合部１４３によって、新しい設定に従って再び全てのアプリケーションのリンクを行う（図２、２２３）。
【００４６】
尚ここで、一旦既に行った全てのアプリケーションのリンクを解除する方法として、リンク済みのプログラムのリンクを分解する方法や、リンク前のプログラムを別に保存しておく方法、その他の方法が有り得るが、どのような方法を使用しても構わない。例えばリンク前のクラスライブラリをダウンロード制御部１３３に保存しておく方法も採り得るし、例えば再度ダウンロード制御部１３３がサーバ１０９からリンク前のクラスライブラリをダウンロードする方法も採り得る。或いは結合ファイル解除部１３５がリンク済みのプログラムのリンクを分解し、再度ファイルシステム部１３７に渡す方法も採り得る。これらの何れの方法を使用しても構わない。リンク前のクラスライブラリをダウンロード制御部１３３に保存する形態では、ダウンロード制御部１３３は、本発明の取得手段と保存手段との双方の具体例に該当する。
【００４７】
例えば前記の通り、端末装置１０１が実行するアプリケーションが、例えば図４、図５に示すアプリケーション１、アプリケーション２、及びアプリケーション３であったと仮定する。このケースでは、全アプリケーションの実行に必要となるクラスライブラリは、Ｘ、Ｙ、Ａ、Ｂ、Ｃ、Ｄ、及びＺであり（省略してクラスライブラリを特定する記号だけを記している、以後同じ）、これらがサーバ１０９からダウンロードされ記憶保存されている。
【００４８】
全アプリケーションプログラムのリンクが実行されることによって（図２、２２３）、図４に示すステップ１、ステップ２、及びステップ３が実行される。それによって、端末装置１０１に全クラスライブラリがリンクされたアプリケーションプログラム１、アプリケーションプログラム２、アプリケーションプログラム３が作成される（図４、図５、ステップ３）。この状態では、全てのクラスライブラリが既にリンクされているので、図１の実行時リンク部１５２が実行時に改めてリンクを行うことは必要でなく、実行時のリンク数は０である（図５、ステップ３）。
【００４９】
しかし一方、重複を含めずに数えた全クラスライブラリ数は上記７であるが、重複を含めて数えた全クラスライブラリ数は１１であり、４つのクラスライブラリが重複して記憶されている（図５、ステップ３）。この重複する４つのクラスライブラリとは２つのＤと、１つずつのＢとＣである。この重複する４つのクラスライブラリの分だけ、ファイルシステム部１３７のメモリ容量をオーバーフローする可能性が高くなっている。
【００５０】
そこでこれらクラスライブラリの中で、最も多くのアプリケーションプログラムで使用されているものが、リンク数検出部１４２によって検出される（図２、２３１）。今の例では、このクラスライブラリはＤであり、３つのアプリケーション全てで使用されている（図５、ステップ４）。従って、上記Ｎは３になる。そこで以降は、「３個以上のアプリケーションで使用されているクラスライブラリはリンクしない」と設定し直され（図２、２３３）、改めて全てのリンクが行われる（図２、２２３）。
【００５１】
尚、図４のステップ４では、クラスライブラリＤのリンクを解除するように記載している通り、必ずしも一旦全てのクラスライブラリのリンクを解除してリンクし直す方法に限るものではない。例えば３個以上のアプリケーションで使用されているクラスライブラリだけを検出しながらそのリンクを解除する方法を採っても構わない。
【００５２】
又、図２に示す上記の方法では一旦全てのアプリケーションのリンクを実行してからメモリ量管理部１４４がメモリ容量のオーバーフローを検出している。これに対して、図３に示すように、メモリ量管理部１４４は、１つのアプリケーションのリンクを行う毎（図３、３２３）にメモリ容量のオーバーフローを検出してもよい（図３、３２５）。尚、図３は、メモリオーバーフローがあった場合には（図３、３２５でｙｅｓ）、Ｎ個以上のアプリケーションで使用されているクラスライブラリのリンクが解除される（図３、３３３）例を示している。しかしながらステップ３３３は、既にリンクを実行したアプリケーションの全てのリンクを解除しても良い。又、部品としてのクラスライブラリを保存しておき、ステップ３３３では既にリンクを実行したアプリケーションの全てを消去して、ステップ３２３では保存されているクラスライブラリを用いて初めからリンクを行ってもよい。図２と図３との間で本質的な部分は同一であるから、図３の手順については詳細な説明を省略する。
【００５３】
クラスライブラリＤのリンクを解除した状態では、アプリケーションプログラム１〜３の全てについて、実行時にクラスライブラリＤのリンクを実行することが必要になるので、必要な実行時リンク数は３である（図５、ステップ４）。そのためにある程度実行時の速度は低下するが、その一方、重複を含めて数えた全クラスライブラリ数は９であり（図５、ステップ４）、重複して記憶されているクラスライブラリ数は２に減少している。その分、ファイルシステム部１３７がメモリ容量をオーバーフローする可能性は低くなる。この重複する２つのクラスライブラリとは、１つずつのＢとＣである。
【００５４】
従って、図２の２２５では、今回の２周目は前回よりもメモリオーバーフローする可能性は低くなる。そこでメモリオーバーフローが発生しなければ、処理は終了する（図２、２２８）。しかしそれでもなおファイルシステム部１３７がメモリ容量をオーバーフローしたと仮定する（図２、２２５）。このケースは今の例では、図２のステップ２２５が２周目の判断でもメモリオーバーフローを検出したことに相当する。
【００５５】
このケースでは再び図２のステップ２３１で、現在リンクされているクラスライブラリの中で、最も多くのアプリケーションによって使用されているものが、リンク数検出部１４２によって検出される。それは図５のステップ５に示す通り、ＢとＣであり、これらは共に２つのアプリケーションで使用されている。
【００５６】
従って次に、「２個以上のアプリケーションで使用されているクラスライブラリはリンクしない」と再設定される（図２、２３３、２周目）。そして再び一旦全てのリンクが解除された後、図２のステップ２２３で３度目のリンクが実行される。念のために説明を加えると、１周目のリンクでは全てのクラスライブラリのリンクが行われ、２周目のリンクでは３個以上のアプリケーションで使用されているクラスライブラリのリンクが行われず、今回の３周目では２個以上のアプリケーションで使用されているクラスライブラリのリンクが行われない。或いは、２個以上のアプリケーションで使用されているクラスライブラリのリンクが解除されるとしても良い。
【００５７】
３週目のリンクが行われた後の状態を図５のステップ５に示す。この状態では、クラスライブラリＤ、Ｂ、Ｃのリンクが行われていないので、アプリケーションの実行時にはこれらのクラスライブラリから必要なクラスライブラリのリンクを行うことが必要である。従って、実行時に必要なリンク数は７である。何故ならば、アプリケーション１の実行時には、Ｘのクラスライブラリを基準に考えると、このＸに対してＢ、Ｃ、Ｄの３つをリンクする必要があり、アプリケーション２の実行時には、ＹとＡのクラスライブラリは既にリンクされているが、このリンクされたものに対してＢ、Ｄの２つをリンクする必要があり、アプリケーション３の実行時には、Ｚのクラスライブラリを基準に考えると、このＺに対してＣ、Ｄの２つをリンクする必要があるからである。
【００５８】
従って、実行時の速度はその分低下するが、少なくともアプリケーション２で必要なクラスライブラリＹとＡとが既にリンクされている分、事前リンクが一切行われていない場合よりも実行時の速度は向上する。
【００５９】
一方、重複して記憶されているクラスライブラリは存在しない。従ってメモリ容量の無駄はその意味では全く生じていない。このことは、前記「２個以上のアプリケーションで使用されているクラスライブラリはリンクしない」という条件が、「唯１つのアプリケーションで使用されているクラスライブラリしかリンクしない」ことを意味し、この条件では明らかにクラスライブラリを重複して記憶することは生じ得ないことからも理解することができる。
【００６０】
図１の端末装置１０１の制御部１３１は、実行命令１１７を実行すると、実行制御部１５１に対してアプリケーションの実行を指示する。制御部１３１は、ユーザの何等かの操作、指示、他の機器からの制御、或いは時間その他の起動によって、実行命令１１７の実行を開始する。又、通常このアプリケーションの起動は、どのアプリケーションを起動するのか、例えば今の例では、アプリケーション１、アプリケーション２、及びアプリケーション３の何れであるかを指定して行われる。実行制御部１５１は、ファイルシステム部１３７に記憶されるアプリケーションのうち、指定を受けたアプリケーションを実行する。
【００６１】
特定の指定されたアプリケーションの実行が実行制御部１５１に指示されると、実行制御部１５１の実行時リンク部１５２が、そのアプリケーションを実行するためにまだ幾らかのクラスライブラリのリンクすることが必要であるか否かを判断する。実行時リンク部１５２は、リンクが必要であると判断すると、必要と判断したクラスライブラリのリンクを実行する。
【００６２】
例えば、図５のステップ３の状態であるならば、どのアプリケーションの実行が指示されたとしても、実行時にリンクしなければならないクラスライブラリは存在しない。これに対して、図５のステップ４の状態で、アプリケーション１〜３の何れかの実行が指示されたとすると、クラスライブラリＤの実行時リンクが必要になる。従って、実行時リンク部１５２はこのクラスライブラリＤのリンクを実行する。
【００６３】
又、図５のステップ５の状態で、アプリケーション１の実行が指示されたとすると、クラスライブラリＢとＣとＤの実行時リンクが必要となる。従って、実行時リンク部１５２はこのクラスライブラリＢとＣとＤのリンクを実行する。或いは、図５のステップ５の状態で、アプリケーション２の実行が指示されたとすると、クラスライブラリＢとＤの実行時リンクが必要となる。従って、実行時リンク部１５２はこのクラスライブラリＢとＤのリンクを実行する。更に、図５のステップ５の状態で、アプリケーション３の実行が指示されたとすると、クラスライブラリＣとＤの実行時リンクが必要となる。従って、実行時リンク部１５２はこのクラスライブラリＣとＤのリンクを実行する。
【００６４】
このようにして実行に必要な全てのクラスライブラリのリンクが行われると、実行部１５３がそのアプリケーションプログラムを実行する。尚、実行制御部１５１は、本発明の実行制御手段の具体例に該当する。又、実行時リンク部１５２は、本発明の実行時リンク手段の具体例に該当する。
【００６５】
（第２の実施の形態）
次に本発明の第２の実施の形態によるプログラムリンクプログラム、プログラムリンク方法、プログラムリンク装置及び端末装置について説明する。但し、前記第１の実施の形態と本質的に異なる部分についてのみ説明し、前記第１の実施の形態と本質的に同一部分については説明を省略する。尚、本発明の第２の実施の形態から後述する第６の実施の形態に至るまで、端末装置のブロック構成は、図１の端末装置１０１と同一に描かれる。
【００６６】
この第２の実施の形態は、第１の実施の形態と同様に、全てのアプリケーションプログラムのリンクを行った場合に、ファイルシステム部１３７のメモリ容量がオーバーフローしないのであれば、全てのアプリケーションプログラムについてリンクを行うことにより事前リンクを正常に終了する。また、第２の実施の形態は、第１の実施の形態と同様に、ファイルシステム部１３７のメモリ容量がオーバーフローする場合には、クラスライブラリの中で、より少ないアプリケーションのためにリンクされているクラスライブラリから優先的にリンクを行う。
【００６７】
しかしながら、第２の実施の形態は、より少ないアプリケーションのためにリンクされているクラスライブラリから優先的にリンクを行うための手順に関して、前記第１の実施の形態とは本質的に異なる。従って、この手順について図６を参照しつつ説明する。
【００６８】
第１の実施の形態では、全てのリンクを実際に行うことによってファイルシステム部１３７のメモリ容量をオーバーフローするか否かを判定した。しかしメモリ容量の判定のために実際にリンクを行うことは非効率である場合がある。そこで第２の実施の形態は、実際にリンクを行う前に、メモリサイズのチェックを行い、ファイルシステム部１３７のメモリに収容可能な最大限のライブラリを上記優先基準に基づいて予め求める。第２の実施の形態では実際のリンクは、求められたライブラリに関してのみ、その後に実行される。
【００６９】
図６は第２の実施の形態による端末装置の処理手順を示している。図６の手順では、まず、事前リンク部１４１のリンク数検出部１４２がライブラリ毎に、そのライブラリがアプリケーションからリンクされる数、即ち、そのライブラリをリンクすべきアプリケーションの数を「共有数」と定義する。この値を（ｎ）と記す。図６の手順は、ライブラリ毎にクラス呼び出し関係を調べることによって、共有数（ｎ）を求める（図６、６２２）。
【００７０】
図７は、リンク数検出部１４２が共有数（ｎ）を算出する過程を示す説明図である。事前リンク部１４１のクラス呼び出し関係検出部１４６は、まず、各クラスライブラリのクラス呼び出し関係を調べる。図７（ａ）に示すように、各クラスライブラリには、例えばそのヘッダ部分に、呼び出すべきクラスライブラリの識別符号が付されている。図７（ａ）の例では、クラスライブラリＸには、クラスライブラリＢ及びＣが呼び出しの対象として記述されている。クラスライブラリＢ及びＣには、クラスライブラリＤが呼び出しの対象として記述されている。また、クラスライブラリＤには、呼び出しの対象は記述されていない。
【００７１】
クラス呼び出し関係検出部１４６は、図７（ａ）に例示される識別符号を読み取ることにより、アプリケーション１について図７（ｂ）に示すクラス呼び出し関係を把握することができる。クラス呼び出し関係検出部１４６は、アプリケーション２及び３の各々についても、同様にクラス呼び出し関係を把握する。その結果、クラス呼び出し関係検出部１４６は、図７（ｃ）に例示するテーブルのうち、共有数（ｎ）に関する縦の列を除いた部分を作業用テーブルとして作成することができる。クラス呼び出し関係検出部１４６は、例えばファイルシステム部１３７に記憶領域を確保し、作成した作業用テーブルをこの記憶領域へ保存する。
【００７２】
図７（ｃ）のテーブル例は、クラス呼び出し関係検出部１４６が、アプリケーション１に関して、クラスライブラリＸには、Ｂ、Ｃ及びＤがリンクすべきこと、アプリケーション２に関してクラスライブラリＹにはＡ、Ｂ及びＤがリンクすべきこと、及びアプリケーション３に関してクラスライブラリＺにはＣ及びＤがリンクすべきことを把握していることを示している。すなわち、クラス呼び出し関係検出部１４６は、アプリケーション毎にクラス呼び出し関係を把握することによって、図７（ｃ）に例示する作業用テーブルの各カラム（すなわち、縦の列）を作成することができる。
【００７３】
事前リンク部１４１のリンク数検出部１４２は、次に、作業用テーブルに基づいてクラスライブラリＡ、Ｂ、Ｃ及びＤの各々について、共有数（ｎ）を算出する。すなわち、リンク数検出部１４２は、図７に例示する作業用テーブルの行（すなわち、横の列）毎に、クラス呼び出し関係の個数の和を求め、これを共有数（ｎ）とする。それにより、リンク数検出部１４２は、図７（ｃ）に例示するように、共有数（ｎ）に対応する縦の列を付加した作業用テーブルを作成することができる。リンク数検出部１４２は、例えばクラスライブラリＤについて、共有数（ｎ）＝３を算出する。
【００７４】
図６に戻って、次に、リンク数検出部１４２は、全ライブラリをこの共有数（ｎ）でソートし、（ｎ）の値が小さなものから順に並べ、０（ゼロ）から始まるインデックス番号を付し、テーブルを作成する（図６、６２３）。すなわち、リンク数検出部１４２は、例えば、仮に作成した作業用テーブル（図７（ｃ）に例示）に基づいて、図８に例示するテーブルを作成する。図８のテーブルは、例えば共有数（ｎ）＝２に対応付けて、インデックス番号として１を保持し、クラスライブラリとしてＢを保持している。リンク数検出部１４２は、例えば、作成したテーブルを、ファイルシステム部１３７の記憶領域へ保存するとよい。リンク数検出部１４２は、それと同時に、作業用テーブルをファイルシステム部１３７から消去しても良い。
【００７５】
同じ（ｎ）の値となるライブラリの順序についてはどのように設定しても構わないし、或いは他の何等かの方法によって順序を設定しても構わない。例えば、同じ（ｎ）の値となるライブラリの順序付けについて、後述する本発明の第３の実施の形態から第６の実施の形態で説明する判断基準を使用することができる。
【００７６】
再び図６に戻って、次に、メモリ量管理部１４４は、処理のために必要な２つの変数として「インデックス変数」と「リンク総和量」とを用意し、それぞれ０（ゼロ）に初期化する（図６、６２４）。処理は、ここからループに入り、最初に、メモリ量管理部１４４はインデックス変数の値が、ライブラリの総数と等しいか否かを判断する（図６、６２５）。これはメモリをオーバーフローすることなく、全てのライブラリのリンクが完了したか否かを判断するためである。即ち、メモリをオーバーフローすることなく、全てのライブラリのリンクが完了すれば、この判定で、インデックス変数の値がライブラリの総数と等しくなる。
【００７７】
しかし最初のループでは、インデックス変数の値はゼロであり、ライブラリ総数は１以上であるから、これらは互いに等しくはならない。そこでメモリ量管理部１４４は、インデックス番号の値がインデックス変数の値に等しいライブラリの増加量をリンク総和量に加える（図６、６２６）。
【００７８】
ここで各ライブラリの増加量とは、図６には明記していないが、そのライブラリのメモリサイズとそのライブラリをリンクしているアプリケーション数マイナス１との積である（図１０、７２２参照）。即ち、ライブラリの増加量とは、そのライブラリをリンクすることによって新たに必要となるメモリ容量（すなわち、必要メモリの増加量）に相当する。この段階で、メモリ量管理部１４４は、リンク総和量が、ファイルシステム部１３７のメモリ容量をオーバーフローするか否かを判定する（図６、６２７）。
【００７９】
もしもこの段階で、リンク総和量がファイルシステム部１３７のメモリ容量をオーバーフローする（図６の６２７でｙｅｓ）ならば、現在のインデックス変数に相当するインデックス番号のライブラリをリンクするとメモリオーバーフローすることになる。したがって、事前リンク部１４１の結合部１４３は、その１つ手前、即ちインデックス番号が現在のインデックス変数の値マイナス１のライブラリまでのリンクを実行する（図６、６２９）。
【００８０】
もしも、リンク総和量がファイルシステム部１３７のメモリ容量をオーバーフローしない（図６の６２７でｎｏ）ならば、現在のインデックス変数に相当するインデックス番号のライブラリをリンクしてもメモリオーバーフローは生じない。そこで、メモリ量管理部１４４は、次にインデックス変数を１増加する（図６、６２８）。その後、処理は全てのライブラリに関してリンク可否の確認が終了するかの判断（図６、６２５）、すなわちループの先頭に戻る。
【００８１】
図６のステップ６２５の判断において、インデックス変数の値が全ライブラリ数と等しくなれば（図６の６２５でｙｅｓ）、それは、全てのライブラリの確認が終り、全ライブラリがリンク可能であることを意味する。その結果、結合部１４３は、全ライブラリのリンクを実行することができる（図６、６２９）。一方、全ライブラリの確認が終わっていなければ（図６の６２５でｎｏ）、メモリ量管理部１４４は次のライブラリの増加量をリンク総和量に加え（図６、６２６）、リンク可能か否かの判断を繰り返す（図６、６２７）。
【００８２】
この第２の実施の形態が第１の実施の形態と本質的に異なる部分は、以上説明した通り、リンクを実際に実行する前にリンク可能なライブラリの範囲を確定することと、そのための手順にある。そのため、他に関しては説明を省略する。
【００８３】
図６の処理手順では、ファイルシステム部１３７がオーバーフローしない範囲でインデックス変数の上限が定まった後に、結合部１４３が当該上限以内のインデックス番号に対応するクラスライブラリのリンクを全て実行した（図６、６２９）。これに対して、図９に示すように、ファイルシステム部１３７がオーバーフローしない範囲で処理がループを一巡する毎に、結合部１４３がインデックス変数に等しいインデックス番号に対応するクラスライブラリのリンクを行っても良い（図９、６３０）。
【００８４】
（第３の実施の形態）
次に本発明の第３の実施の形態によるプログラムリンクプログラム、プログラムリンク方法、プログラムリンク装置及び端末装置について説明する。但し、第２の実施の形態と本質的に異なる部分についてのみ説明し、第２の実施の形態と本質的に同一部分については説明を省略する。この第３の実施の形態は、予めライブラリを所定の順序に従って並べ、その順に増加量をリンク総和量に加えることによってそのライブラリがリンク可能か否かを判断する点においては、第２の実施の形態と同じである。
【００８５】
図１０は第３の実施の形態による端末装置の処理手順を示している。図１０の処理手順は、リンク数検出部１４２が予め全ライブラリを増加量でソートし、この増加量が小さなものから順にインデックス番号を付す点（図１０、７２３）において、図６に示した処理手順とは本質的に相違する。ここで増加量とは、既に述べたように、各ライブラリ毎にそのライブラリがアプリケーションからリンクされている数（すなわち共有数（ｎ））マイナス１とそのライブラリのサイズとの積である（図１０、７２２）。既に述べたように増加量は、そのライブラリをリンクすることによって新たに必要となるメモリの増加量に相当する。
【００８６】
インデックス番号順に１つずつライブラリをリンクすることによってメモリオーバーフローを生じることが無いか否かを判断することは、前記第２の実施の形態と同じである（図１０、７２５〜７２９）。しかしながら、この第３の実施の形態ではインデックス番号が増加量の小さな順に付されているため、メモリ量管理部１４４は、この増加量の順にライブラリのリンクの可否を判断する。それにより、結合部１４３は、可能な限り増加量が小さなライブラリからリンクを実行する。
【００８７】
また、ステップ７２９を図９のステップ６３０に置き換えることにより、ファイルシステム部１３７がオーバーフローしない範囲で処理がループを一巡する毎に、結合部１４３がインデックス変数に等しいインデックス番号に対応するクラスライブラリのリンクを行っても良い。このことは、以下に述べる第４〜第６の実施の形態において同様である。
【００８８】
この第３の実施の形態が第２の実施の形態と本質的に異なる部分は、以上説明した部分にある。従って、他に関しては説明を省略する。
【００８９】
（第４の実施の形態）
次に本発明の第４の実施の形態によるプログラムリンクプログラム、プログラムリンク方法、プログラムリンク装置及び端末装置について説明する。但し、第２の実施の形態と本質的に異なる部分についてのみ説明し、第２の実施の形態と本質的に同一部分については説明を省略する。この第４の実施の形態は、予めライブラリを所定の順序に従って並べ、その順に増加量をリンク総和量に加えることによってそのライブラリがリンク可能か否かを判断する点においては、第２の実施の形態と同じである。
【００９０】
図１１は第４の実施の形態による端末装置の処理手順を示している。図１１の処理手順は、クラス呼び出し関係検出部１４６が、予め全ライブラリについてそのライブラリがリンクされるべきアプリケーションを調べる（図１１、８２１）とともに、リンク数検出部１４２がそのアプリケーションが使われる頻度を調べ（図１１、８２２）、全ライブラリをこの使用頻度でソートし、この使用頻度が大きなものから順にインデックス番号を付す（図１１、８２３）点において、図６に示した処理手順とは本質的に相違する。
【００９１】
例えば、あるライブラリが電子メール閲覧アプリケーションプログラムによってリンクされているならば、その電子メール閲覧アプリケーションプログラムの使用頻度は比較的高く、例えば１日平均５回程度であるかも知れない。或いは、あるライブラリが銀行振込アプリケーションプログラムによってリンクされているならば、その銀行振込アプリケーションプログラムの使用頻度は比較的低く、例えば平均１年間に数回程度であるかも知れない。このようなケースでは、電子メール閲覧アプリケーションプログラムによってリンクされているライブラリの方が、銀行振込アプリケーションプログラムによってリンクされているライブラリよりも小さなインデックス番号が付され、優先的にリンクが実行される。
【００９２】
又、１つのライブラリが複数のアプリケーションによってリンクされていることもある。例えば、ある比較的汎用性の高いライブラリは前記電子メール閲覧アプリケーションプログラムと銀行振込アプリケーションプログラムの両方でリンクされているかも知れない。このようなライブラリに関しては、そのライブラリをリンクしているアプリケーションプログラムの使用頻度をどのようにして求めるかに関しては種々の方法を採り得る。
【００９３】
例えば、そのライブラリをリンクしているアプリケーションプログラムの中で最も使用頻度の高いものを用いても良いし、平均値を用いても良いし、中央値を用いることもできるし、総和を用いても構わない。ここで総和とは、そのライブラリをリンクしている全アプリケーションプログラムの使用頻度の総和を意味する。本発明は、いずれかの方法に限定されるものではない。
【００９４】
このようにして、ライブラリをリンクしているアプリケーションプログラムの使用頻度を基準に、リンクを実行するライブラリを決定することによって、比較的使用頻度の高いアプリケーションプログラムの実行速度を向上させることができ、より使い勝手を良くすることができる。
【００９５】
図１１において、インデックス番号順に１つずつライブラリをリンクすることによってメモリオーバーフローを生じることが無いか否かを判断する点は、第２の実施の形態による手順と同じである（図１１、８２５〜８２９）。この第４の実施の形態が前記第２の実施の形態と本質的に異なる部分は、以上説明した部分にある。従って、他に関しては説明を省略する。
【００９６】
（第５の実施の形態）
次に本発明の第５の実施の形態によるプログラムリンクプログラム、プログラムリンク方法、プログラムリンク装置及び端末装置について説明する。但し、第２の実施の形態と本質的に異なる部分についてのみ説明し、第２の実施の形態と本質的に同一部分については説明を省略する。この第５の実施の形態は、予めライブラリを所定の順序に従って並べ、その順に増加量をリンク総和量に加えることによってそのライブラリがリンク可能か否かを判断する点においては、第２の実施の形態と同じである。
【００９７】
この第５の実施の形態の処理手順は、リンク数検出部１４２が予め全ライブラリをそのサイズによってソートし、そのサイズの小さな順にインデックス番号を付し、このインデックス番号順にリンクが可能か否かを判断する点において、本発明の第２の実施の形態の処理手順と本質的に相違する。それにより、比較的メモリサイズの小さなライブラリを優先的にリンクすることができる。
【００９８】
この第５の実施の形態が前記第２の実施の形態と本質的に異なる部分は、以上説明した部分にある。従って、他に関しては説明を省略する。
【００９９】
（第６の実施の形態）
次に本発明の第６の実施の形態によるプログラムリンクプログラム、プログラムリンク方法、プログラムリンク装置及び端末装置について説明する。但し、第２の実施の形態と本質的に異なる部分についてのみ説明し、第２の実施の形態と本質的に同一部分については説明を省略する。この第６の実施の形態は、予めライブラリを所定の順序に従って並べ、その順に増加量をリンク総和量に加えることによってそのライブラリがリンク可能か否かを判断する点においては、第２の実施の形態と同じである。
【０１００】
この第６の実施の形態の処理手順は、リンク数検出部１４２が予め全ライブラリをその実行時リンクに必要な時間によってソートし、その時間が大きなものから順にインデックス番号を付し、このインデックス番号順にリンクが可能か否かを判断する点において、本発明の第２の実施の形態の処理手順と本質的に相違する。それにより、実行時リンクに必要な時間が大きなライブラリを優先的にリンクすることができ、全体としての実行速度を改善することができる。
【０１０１】
この第６の実施の形態が前記第２の実施の形態と本質的に異なる部分は、以上説明した部分にある。従って、他に関しては説明を省略する。
【産業上の利用可能性】
【０１０２】
本発明のプログラムリンクプログラム、プログラムリンクプログラムを記録した記録媒体、プログラムリンク装置、端末装置及びプログラムリンク方法は、リンク後プログラムを記憶するメモリの容量の制限の中でリンク後プログラムの実行時の速度を可及的に向上させることができるので、産業上有用である。
【図面の簡単な説明】
【０１０３】
【図１】本発明の第１の実施の形態のリンクを実行する端末装置のブロック構成図。
【図２】本発明の第１の実施の形態のリンクを実行する端末装置の処理流れ図。
【図３】本発明の第１の実施の形態のリンクの変形を実行する端末装置の処理流れ図。
【図４】本発明の第１の実施の形態のリンクが実行される過程のクラスライブラリの構造変化を示す図。
【図５】本発明の第１の実施の形態のリンクが実行される過程のクラスライブラリ数とリンク数を示す図。
【図６】本発明の第２の実施の形態のリンクを実行する端末装置の処理流れ図。
【図７】図６の処理においてテーブルを作成する手順を示す説明図。
【図８】図６の処理において作成されるテーブルを例示する説明図。
【図９】図６の処理の変形形態を示す流れ図。
【図１０】本発明の第３の実施の形態のリンクを実行する端末装置の処理流れ図。
【図１１】本発明の第４の実施の形態のリンクを実行する端末装置の処理流れ図。
【図１２】従来のＪａｖａ（Ｒ）リンカの実行例（実行時リンク方式）を示す図。
【図１３】従来のＣリンカの実行例（事前リンク方式）を示す図。
【符号の説明】
【０１０４】
１０１，９０１，９２１  端末装置      １０９，９０９，９２９  サーバ
１１３  ダウンロード命令              １１５  事前リンク命令
１１７  実行命令                      １３１  制御部
１３３  ダウンロード制御部（取得手段、保存手段）
１３５  結合ファイル解除部      １３７  ファイルシステム部（メモリ、保存手段）
１４１  事前リンク部                  １４２  リンク数検出部
１４３  結合部（結合手段）            １４４  メモリ量管理部（管理手段）
１４５  記憶部（記憶手段）            １４６  クラス呼び出し関係検出部
１５１  実行制御部（実行制御手段）
１５２  実行時リンク部（実行時リンク手段）        １５３  実行部
９０２，９０３，９２２，９２３  アプリケーションプログラム
【図１】
2004318860.tif 000003
【図２】
2004318860.tif 000004
【図３】
2004318860.tif 000005
【図４】
2004318860.tif 000006
【図５】
2004318860.tif 000007
【図６】
2004318860.tif 000008
【図７】
2004318860.tif 000009
【図８】
2004318860.tif 000010
【図９】
2004318860.tif 000011
【図１０】
2004318860.tif 000012
【図１１】
2004318860.tif 000013
【図１２】
2004318860.tif 000014
【図１３】
2004318860.tif 000015