(57)【要約】      （修正有）【課題】Ｊａｖａ（登録商標）言語からＣ言語で書かれたファイルを格納するネイティブライブラリへ容易にアクセスする方法の提供。【解決手段】ライブラリ関数の引数と戻り値となるデータ型情報を記述したデータ型マッピング情報定義ファイル１７と、メモリアロケート動作を記述したメモリアロケート動作定義ファイル１６と、ネイティブライブラリ２１〜２３に格納されたファイルからＣ言語のデータ型と対応するＪａｖａ（登録商標）言語クラスのソースコードを自動生成するプログラム１５と、前記ネイティブライブラリのライブラリ関数へアクセスするプログラムを格納するアクセス用ライブラリ１８と、アクセス権を設定するアクセス権設定ファイル１３とを設け、前記プログラム１５によりＪａｖａ（登録商標）言語をＣ言語に変換したソースコードを生成し、該ソースコードにより前記ライブラリ２１〜２３をアクセスするもの。【選択図】  図１
2004288076.tif 000002
【特許請求の範囲】
【請求項１】
Ｊａｖａ（登録商標）言語からＣ言語で書かれたファイルを格納するネイティブライブラリへアクセスするアクセス方法であって、ネイティブライブラリ関数の引数と戻り値となるデータ型情報を記述したデータ型マッピング情報定義ファイルと、メモリアロケート動作を記述したメモリアロケート動作定義ファイルと、ネイティブライブラリに格納されたファイルからＣ言語のデータ型と対応するＪａｖａ（登録商標）言語クラスのソースコードを自動生成するクラスト生成プログラムと、ネイティブライブラリのライブラリ関数へアクセスするプログラムを格納するアクセス用ライブラリと、アクセス権を設定するアクセス権設定ファイルとを設け、前記データ型マッピング情報定義ファイルに記述されたネイティブライブラリ関数の引数及び戻り値と、前記メモリアロケート動作定義ファイルに記述したメモリアロケート動作と、アクセス権設定ファイルに設定したアクセス権とを用い、前記クラスタ生成プログラムによりＪａｖａ（登録商標）言語をＣ言語に変換したソースコードを生成し、該ソースコードによりネイティブライブラリをアクセスすることを特徴とするネイティブライブラリへアクセスするアクセス方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、Ｃ言語で書かれたライブラリに対してＪａｖａ（登録商標）言語を用いてアクセスするためのネイティブライブラリへのアクセス方法に関する。
【０００２】
【従来の技術】
コンピュータシステムにおけるプログラム言語は、Ｃ言語と呼ばれるＯＳ（オペレーションシステム）などの制御プログラムを記述するのに適した言語が使用されているが、近年、インターネット技術の発展によってＨＴＭＬ言語の機能を補う中間コードコンパイラであるＪａｖａ（登録商標）言語と呼ばれるプラットホームを選ばない言語が使用されてきている。
【０００３】
このＪａｖａ（登録商標）言語を用いてＣ言語によって作成されたライブリ（ネイティブライブラリと呼ぶ）へデータのアクセスを行うためには、Ｊａｖａ（登録商標）言語からネイティブライブラリへアクセスする場合、ＪＮＩ（Ｊａｖａ（登録商標）  Ｎａｔｉｖｅ  Ｉｎｔｅｒｆａｃｅ）と呼ばれる機構を利用する必要がある。しかし、このＪＮＩ機構を利用するためにはアクセスしたいライブラリの関数単位でＣ言語によるプログラミングが必要となり、Ｊａｖａ（登録商標）プログラマにはＣ言語のメモリアロケート（メモリの確保）管理などの深い知識も必要とされる。またＪａｖａ（登録商標）言語にはライブラリおよび関数単位でのアクセス権制御も存在しないため、セキュリティのためのアクセス権の管理を一元化できないものであった。
【０００４】
尚、前記Ｊａｖａ（登録商標）言語を用いた技術及びアクセス権限の設定に関する技術が記載された文献としては、例えば、特開２０００−５７１１３号公報及び特開平５−９４３５７号公報が挙げられる。
【０００５】
【発明が解決しようとする課題】
従来技術によるＪａｖａ（登録商標）言語を用いてＣ言語によって作成されたネイティブライブラリへのアクセス手法は、前述のように操作者にＣ言語によるプログラミング能力やメモリアロケート管理能力が必要とされ、Ｊａｖａ（登録商標）プログラマにとってはＣ言語で記載されたライブラリへアクセスすることが困難であり、Ｃ言語を習得する必要があるため開発工数を余分に必要とし、更にデータ型変換やメモリアロケート管理を行うためバグが発生し易いと共に、ライブラリに対するアクセス権の設定が煩雑であると言う不具合があった。
【０００６】
本発明の目的は、前述の従来技術による不具合を除去することであり、Ｃ言語の深い知識を必要とせずに既存ネイティブライブラリへのアクセスを行うことができるネイティブライブラリへのアクセス方法を提供することである。
【０００７】
【課題を解決するための手段】
前記目的を達成するために本発明は、Ｊａｖａ（登録商標）言語からＣ言語で書かれたファイルを格納するネイティブライブラリへアクセスするアクセス方法ｉ６ｅｗ、ネイティブライブラリ関数の引数と戻り値となるデータ型情報を記述したデータ型マッピング情報定義ファイルと、メモリアロケート動作を記述したメモリアロケート動作定義ファイルと、ネイティブライブラリに格納されたファイルからＣ言語のデータ型と対応するＪａｖａ（登録商標）言語クラスのソースコードを自動生成するクラスタ生成プログラムと、ネイティブライブラリのライブラリ関数へアクセスするプログラムを格納するアクセス用ライブラリと、アクセス権を設定するアクセス権設定ファイルとを設け、前記データ型マッピング情報定義ファイルに記述されたネイティブライブラリ関数の引数及び戻り値と、前記メモリアロケート動作定義ファイルに記述したメモリアロケート動作と、アクセス権設定ファイルに設定したアクセス権とを用い、前記プログラムによりＪａｖａ（登録商標）言語をＣ言語に変換したソースコードを生成し、該ソースコードによりネイティブライブラリをアクセスすることを特徴とする。
【０００８】
【発明の実施の形態】
以下、本発明の一実施形態によるネイティブライブラリへのアクセス方法を図面を参照して詳細に説明する。図１は、本実施形態によるＪａｖａ（登録商標）プログラムからネイティブライブラリへアクセスするためのアクセス方法を適用したシステムの全体構成を示す図、図２は本実施形態によるＪａｖａ（登録商標）側での呼び出しメソッドを説明するため図、図３は本実施形態によるデータ型マッピング情報定義ファイルを説明するための図、図４はメモリアロケート動作定義ファイル及びアクセス権設定ファイルを説明するための図、図５〜図７は本実施形態によるＪａｖａ（登録商標）側での呼び出しメソッドの複数動作例を説明するための図である。
【０００９】
まず本発明によるネイティブライブラリへのアクセス方法を適用したアクセスシステムは、図１に示す如く、Ｃ言語で生成された複数のネイティブライブラリ２１〜２３及び該ライブラリ２１〜２３のデータ型の定義を格納するデータ型定義ファイル２４とを格納するネイティブライブラリ群２００に対して設けられたアクセス構成１００を成し、このアクセス構成１００は、ネイティブライブラリを呼び出すための呼び出し用メソッド１２を含むＪａｖａ（登録商標）プログラム１１と、前記呼び出し用メソッド１２を用いて前記ネイティブライブラリ２１〜２３のファイルからデータを呼び出すためのアクセス用ライブラリ１８と、前記データ型定義ファイル２４に格納したライブラリ毎のデータ型定義を入力とし、データ型マッピング情報を格納するデータ型マッピング情報定義ファイル１７と、Ｃ言語のメモリロケート動作の定義を格納したメモリロケート動作定義ファイル１６と、前記データ型マッピング情報定義ファイル１７に格納したデータ型マッピング情報定義とメモリロケート動作定義ファイル１６に格納したメモリロレート動作定義とを用いてクラスタを生成するクラスタ生成プログラム１５と、操作者に応じた各ライブラり２１〜２３に対するアクセス権が設定されたアクセス権設定ファイル１３とを備える。
【００１０】
前記呼び出し用メソッド１２は、図２下段に示す如く、引数名／データ型／内容を格納したものであり、例えば図２上段に示す如く、アクセス対象のライブラリ名及びデータ型が「Ｓｔｒｉｎｇ  Ｌｉｂｎａｍｅ」、アクセスしたい関数名及びデータ型が「Ｓｔｒｉｎｇ  ｆｕｎｃｎａｍｅ」、アクセス対象の関数への引数リストが「Ｖｅｖｔｅｒ    ａｒｇｅ」、アクセス対象の関数からの戻り値が「Ｖｅｃｔｅｒ  ｒｅｓｕｌｔｓ」の如く設定されているものである。即ち、呼び出し用メソッド１２は、呼び出し対象となるネイティブライブラリの名前／関数名／引数リスト／戻り値格納領域を格納している。
【００１１】
ここで本実施形態によるライブラリ名及び関数名が、図３（ａ）に示す如く、ライブラリ名として「ｓａｍｐｌｅ＿ｌｉｂｒａｒｙ．ｄｌｌ」、関数名として各々「ｌｏｎｇ  ｓａｍｐｌｅ＿ｆｕｎｃｔｉｏｎ１（ｌｏｎｇ  ｐ１，  ｌｏｎｇ  ｐ２）」／「ｌｏｎｇ  ｓａｍｐｌｅ＿ｆｕｎｃｔｉｏｎ１（ｌｏｎｇ  ｐ１，  ｌｏｎｇ  ｐ２）」／「ｌｏｎｇ  ｓａｍｐｌｅ＿ｆｕｎｃｔｉｏｎ３（ｃｈａｒ  ｐ１［］，  ｌｏｎｇ  ｐ２）」／「ｌｏｎｇ  ｓａｍｐｌｅ＿ｆｕｎｃｔｉｏｎ４（ｌｏｎｇ  ｐ）」である場合、データ型マピング情報定義ファイル１７は、図３（ｂ）に示す如く定義される。この図３（ｂ）に示すデータ型マピング情報定義ファイル１７は、簡単に説明すると、左側のコマンド欄がＪａｖａ（登録商標）言語とＣ言語との対応を示し、右側の内容欄が、そのコマンドの内容を示している。即ち本実施形態によるデータ型マピング情報定義ファイル１７は、Ｊａｖａ（登録商標）言語で使用される型とＣ言語で使用される型のマッピングの記述と、当該データのメモリ領域がどのように扱われるか，またはどちら向きのデータなのかも指定している。尚、ここで指定するキーワードはメモリアロケート動作定義ファイル１６にて定義されたキーワードである。
【００１２】
前記メモリアロケート動作定義ファイル１６は、図４（ａ）に示す如く、データ型マピング情報定義ファイル同様に、左側のコマンド欄がＪａｖａ（登録商標）言語とＣ言語との対応を示し、右側の内容欄が、そのコマンドの内容を示している。即ちメモリアロケート動作定義ファイル１６は、あるデータがネイティブライブラリへの入力データなのか，出力データなのか，または両方なのかをｉｏに指定し、またそのデータの領域はネイティブライブラリ関数内でアロケートされるものなのか、そうでないのかをメモリに指定するものである。
【００１３】
また前記アクセス権設定ファイル１３は、図４（ｂ）に示す如く、「ｓａｍｐｌｅ＿ｌｉｂｒａｒｙ」に対して、各々「ｓａｍｐｌｅ＿ｆｕｎｃｔｉｏｎ１」（レベル１）、「ｓａｍｐｌｅ＿ｆｕｎｃｔｉｏｎ２」（レベル２）、「ｓａｍｐｌｅ＿ｆｕｎｃｔｉｏｎ３」（レベル３）、の如く、段階的なアクセス権が設定されている。即ち、該アクセス権設定ファイル１３は、ネイティブライブラリの名前及び関数名単位にｇｒａｎｔ指定することによりアクセス許可を表す様に設定されている。
【００１４】
さて、この様に構成されたネイティブライブラリへのアクセス方法を適用したアクセスシステムは、ネイティブライブラリ関数の引数／戻り値となるデータ型情報を記述したデータ型マッピング情報定義ファイル１７と、メモリアロケート動作を記述したメモリアロケート動作定義ファイル１６と、そのファイルからＣ言語のデータ型と対応するＪａｖａ（登録商標）言語クラスのソースコードを自動生成するプログラム１５と、ネイティブライブラリ２１〜２３に格納されたファイルのライブラリ関数へアクセスするプログラムを格納するアクセス用ライブラリ１８と、アクセス権制御を設定するアクセス権設定ファイル（ポリシーファイル）１３とを設け、前記データ型マッピング情報定義ファイル１７に記述されたネイティブライブラリ関数の引数及び戻り値と、前記メモリアロケート動作定義ファイル１６に記述したメモリアロケート動作と、アクセス権設定ファイル１３に設定したアクセス権とを用い、前記プログラム１５によりＪａｖａ（登録商標）言語をＣ言語に変換し且つアクセス権を設定したソースコードを生成し、該ソースコードによりネイティブライブラリをアクセスすることによって、Ｊａｖａ（登録商標）プログラム１１からネイティブライブラリ２１〜２３へデータを権限付きでアクセスすることができる。
【００１５】
＜例１＞
この動作は、例えばＪａｖａからライブラリｓａｍｐｌｅ＿ｌｉｂｒａｒｙ．ｄｌｌの関数ｓａｍｐｌｅ＿ｆｕｎｃｔｉｏｎ１を呼びたい場合，Ｊａｖａ（登録商標）側で図５（ａ）に示すライブラリ名５１／関数名５２／第１引数５３／第２引数５４を含むメソッドを読み出すことにより、データマッピング型定義ファイル１７に格納した定義ファイルを元にＣ言語側で図５（ｂ）に示すコードを実行する。このコードは、メモリアロケート動作定義ファイル１６に格納した情報を元にＪａｖａ（登録商標）言語をＣ言語に変換することを示し、図示の例では整数値のコピーを実行することを意味している。この関数実行結果ｒｔｎは、Ｉｎｔｅｒｇｒｅ型に変換され、ｒｅｓｕｌｔｓへ格納される。
【００１６】
＜例２＞
この動作は、例えばＪａｖａからライブラリｓａｍｐｌｅ＿ｌｉｂｒａｒｙ．ｄｌｌの関数ｓａｍｐｌｅ＿ｆｕｎｃｔｉｏｎ２を呼びたい場合、Ｊａｖａ（登録商標）側で図６（ａ）に示すライブラリ名６１／関数名６２／第１引数６３を含むメソッドを読み出すことにより、データマッピング型定義ファイル１７に格納した定義ファイルを元にＣ言語側で図６（ｂ）に示すコードを実行する。このコードは、メモリアロケート動作定義ファイル１６に格納した情報を元にＪａｖａ（登録商標）言語をＣ言語に変換することを示し、図示の例では戻り値６４とａｒｇｅｓから値を取得し、関数の呼び出し６６を実行することによりＳｔｒｉｎｇ型からＣの文字列へ変換を実行することを意味している。この関数実行結果ｒｔｎは、Ｉｎｔｅｒｇｒｅ型に変換され、ｒｅｓｕｌｔｓへ格納される。
【００１７】
＜例３＞
この動作は、例えばＪａｖａ（登録商標）からライブラリｓａｍｐｌｅ＿ｌｉｂｒａｒｙ．ｄｌｌの関数ｓａｍｐｌｅ＿ｆｕｎｃｔｉｏｎ３を呼びたい場合、Ｊａｖａ（登録商標）側で図７（ａ）に示すライブラリ名７１／関数名７２／第１引数７３／第２引数７４を含むメソッドを読み出すことにより、データマッピング型定義ファイル１７に格納した定義ファイルを元にＣ言語側で図７（ｂ）に示すコードを実行する。このコードは、メモリアロケート動作定義ファイル１６に格納した情報を元にＪａｖａ（登録商標）言語をＣ言語に変換することを示し、図示の例ではＳｔｒｉｎｇ型からＣの文字列へ変換を実行することを意味している。この関数実行結果ｒｔｎは、Ｉｎｔｅｒｇｒｅ型に変換され、ｒｅｓｕｌｔｓへ格納される。
【００１８】
この本実施形態によるネイティブライブラリへのアクセス方法を適用したアクセスシステムは、ネイティブライブラリ関数の引数／戻り値となるデータ型情報を記述したデータ型マッピング情報定義ファイル１７と、メモリアロケート動作を記述したメモリアロケート動作定義ファイル１６と、そのファイルからＣ言語のデータ型と対応するＪａｖａ（登録商標）言語クラスのソースコードを自動生成するプログラム１５と、実際にライブラリ関数へアクセスするプログラムを格納するアクセス用ライブラリ１８と、アクセス権制御を設定するアクセス権設定ファイル（ポリシーファイル）１３とを設け、前述のファイルに基づいてプログラムを実装し、Ｊａｖａ（登録商標）プログラム１１からネイティブライブラリ２１〜２３へアクセスする場合，予め定義された呼び出し用メソッド１２を呼び出すことにより、メモリアロケート動作定義ファイル１６に格納した情報を元にＪａｖａ（登録商標）言語をＣ言語に変換し、この変換後のＣ言語を実行した得た結果をＪａｖａ（登録商標）言語形式で戻すことよって、Ｃ言語の深い知識及びプログラミング能力を必要とせずにプログラマがＪａｖａ（登録商標）言語を用いてＣ言語のライブラリにアクセスすることができる。
【００１９】
また本実施形態によればプリミティブ型やその配列といったデータ型は組み込み済みのため、単純な引数を持つネイティブライブラリ関数の呼び出しも容易に行うことができる。更にライブラリおよび関数単位のアクセス権の制御を可能とするので不必要なライブラリへのアクセスを容易に防止できる。
【００２０】
また、前記Ｊａｖａ（登録商標）言語をＣ言語に変換する際にアクセス用ライブラリ１８がアクセス権設定ファイル１３に格納したアクセス権を設定することによって、Ｃ言語の深い知識及びプログラミング能力を必要とせずにライブラリに対するアクセス権を容易に設定することができる。
【００２１】
【発明の効果】
以上説明したように本発明によるネイティブライブラリへのアクセス方法を適用したアクセスシステムは、ネイティブライブラリ関数の引数／戻り値となるデータ型情報を記述したデータ型マッピング情報定義ファイルと、メモリアロケート動作を記述したメモリアロケート動作定義ファイルと、そのファイルからＣ言語のデータ型と対応するＪａｖａ（登録商標）言語クラスのソースコードを自動生成するプログラムと、実際にライブラリ関数へアクセスするプログラムを格納するアクセス用ライブラリと、アクセス権制御を設定するアクセス権設定ファイルとを設けることによって、Ｃ言語の深い知識を必要とせずに既存ネイティブライブラリへのアクセスを行うことができる。
【図面の簡単な説明】
【図１】本発明の一実施形態によるＪａｖａ（登録商標）プログラムからネイティブライブラリへアクセスするためのアクセスシステムの全体構成を示す図。
【図２】本実施形態によるＪａｖａ（登録商標）側での呼び出しメソッドを説明するため図。
【図３】本実施形態によるデータ型マッピング情報定義ファイルを説明するための図。
【図４】本実施形態によるメモリアロケート動作定義ファイル及びアクセス権設定ファイルを説明するための図。
【図５】本実施形態によるＪａｖａ（登録商標）側での呼び出しメソッドの動作例１を説明するための図。
【図６】本実施形態によるＪａｖａ（登録商標）側での呼び出しメソッドの動作例２を説明するための図。
【図７】本実施形態によるＪａｖａ（登録商標）側での呼び出しメソッドの動作例３を説明するための図。
【符号の説明】
１００：アクセス構成、１１：Ｊａｖａ（登録商標）プログラム、１２：呼び出しメソッド、１３：アクセス権設定ファイル、１４：データ型変換用クラス、１５：クラスタ生成プログラム、１６：メモリロケート動作定義ファイル、１７：データ型ビットマップ情報定義ファイル、２１〜２３：ライブラリ、２４：データ型定義ファイル。
【図１】
2004288076.tif 000003
【図２】
2004288076.tif 000004
【図３】
2004288076.tif 000005
【図４】
2004288076.tif 000006
【図５】
2004288076.tif 000007
【図６】
2004288076.tif 000008
【図７】
2004288076.tif 000009