JP2004288076A - ネイティブライブラリへのアクセス方法 - Google Patents

ネイティブライブラリへのアクセス方法 Download PDF

Info

Publication number
JP2004288076A
JP2004288076A JP2003081693A JP2003081693A JP2004288076A JP 2004288076 A JP2004288076 A JP 2004288076A JP 2003081693 A JP2003081693 A JP 2003081693A JP 2003081693 A JP2003081693 A JP 2003081693A JP 2004288076 A JP2004288076 A JP 2004288076A
Authority
JP
Japan
Prior art keywords
language
library
access
java
file
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.)
Withdrawn
Application number
JP2003081693A
Other languages
English (en)
Inventor
Yukio Okuya
行央 奥谷
Hiroaki Kiyoubayashi
弘晃 京林
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.)
Hitachi Information Systems Ltd
Original Assignee
Hitachi Information Systems 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 Hitachi Information Systems Ltd filed Critical Hitachi Information Systems Ltd
Priority to JP2003081693A priority Critical patent/JP2004288076A/ja
Publication of JP2004288076A publication Critical patent/JP2004288076A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

【課題】Java(登録商標)言語からC言語で書かれたファイルを格納するネイティブライブラリへ容易にアクセスする方法の提供。
【解決手段】ライブラリ関数の引数と戻り値となるデータ型情報を記述したデータ型マッピング情報定義ファイル17と、メモリアロケート動作を記述したメモリアロケート動作定義ファイル16と、ネイティブライブラリ21〜23に格納されたファイルからC言語のデータ型と対応するJava(登録商標)言語クラスのソースコードを自動生成するプログラム15と、前記ネイティブライブラリのライブラリ関数へアクセスするプログラムを格納するアクセス用ライブラリ18と、アクセス権を設定するアクセス権設定ファイル13とを設け、前記プログラム15によりJava(登録商標)言語をC言語に変換したソースコードを生成し、該ソースコードにより前記ライブラリ21〜23をアクセスするもの。
【選択図】 図1

Description

【0001】
【産業上の利用分野】
本発明は、C言語で書かれたライブラリに対してJava(登録商標)言語を用いてアクセスするためのネイティブライブラリへのアクセス方法に関する。
【0002】
【従来の技術】
コンピュータシステムにおけるプログラム言語は、C言語と呼ばれるOS(オペレーションシステム)などの制御プログラムを記述するのに適した言語が使用されているが、近年、インターネット技術の発展によってHTML言語の機能を補う中間コードコンパイラであるJava(登録商標)言語と呼ばれるプラットホームを選ばない言語が使用されてきている。
【0003】
このJava(登録商標)言語を用いてC言語によって作成されたライブリ(ネイティブライブラリと呼ぶ)へデータのアクセスを行うためには、Java(登録商標)言語からネイティブライブラリへアクセスする場合、JNI(Java(登録商標) Native Interface)と呼ばれる機構を利用する必要がある。しかし、このJNI機構を利用するためにはアクセスしたいライブラリの関数単位でC言語によるプログラミングが必要となり、Java(登録商標)プログラマにはC言語のメモリアロケート(メモリの確保)管理などの深い知識も必要とされる。またJava(登録商標)言語にはライブラリおよび関数単位でのアクセス権制御も存在しないため、セキュリティのためのアクセス権の管理を一元化できないものであった。
【0004】
尚、前記Java(登録商標)言語を用いた技術及びアクセス権限の設定に関する技術が記載された文献としては、例えば、特開2000−57113号公報及び特開平5−94357号公報が挙げられる。
【0005】
【発明が解決しようとする課題】
従来技術によるJava(登録商標)言語を用いてC言語によって作成されたネイティブライブラリへのアクセス手法は、前述のように操作者にC言語によるプログラミング能力やメモリアロケート管理能力が必要とされ、Java(登録商標)プログラマにとってはC言語で記載されたライブラリへアクセスすることが困難であり、C言語を習得する必要があるため開発工数を余分に必要とし、更にデータ型変換やメモリアロケート管理を行うためバグが発生し易いと共に、ライブラリに対するアクセス権の設定が煩雑であると言う不具合があった。
【0006】
本発明の目的は、前述の従来技術による不具合を除去することであり、C言語の深い知識を必要とせずに既存ネイティブライブラリへのアクセスを行うことができるネイティブライブラリへのアクセス方法を提供することである。
【0007】
【課題を解決するための手段】
前記目的を達成するために本発明は、Java(登録商標)言語からC言語で書かれたファイルを格納するネイティブライブラリへアクセスするアクセス方法i6ew、ネイティブライブラリ関数の引数と戻り値となるデータ型情報を記述したデータ型マッピング情報定義ファイルと、メモリアロケート動作を記述したメモリアロケート動作定義ファイルと、ネイティブライブラリに格納されたファイルからC言語のデータ型と対応するJava(登録商標)言語クラスのソースコードを自動生成するクラスタ生成プログラムと、ネイティブライブラリのライブラリ関数へアクセスするプログラムを格納するアクセス用ライブラリと、アクセス権を設定するアクセス権設定ファイルとを設け、前記データ型マッピング情報定義ファイルに記述されたネイティブライブラリ関数の引数及び戻り値と、前記メモリアロケート動作定義ファイルに記述したメモリアロケート動作と、アクセス権設定ファイルに設定したアクセス権とを用い、前記プログラムによりJava(登録商標)言語をC言語に変換したソースコードを生成し、該ソースコードによりネイティブライブラリをアクセスすることを特徴とする。
【0008】
【発明の実施の形態】
以下、本発明の一実施形態によるネイティブライブラリへのアクセス方法を図面を参照して詳細に説明する。図1は、本実施形態によるJava(登録商標)プログラムからネイティブライブラリへアクセスするためのアクセス方法を適用したシステムの全体構成を示す図、図2は本実施形態によるJava(登録商標)側での呼び出しメソッドを説明するため図、図3は本実施形態によるデータ型マッピング情報定義ファイルを説明するための図、図4はメモリアロケート動作定義ファイル及びアクセス権設定ファイルを説明するための図、図5〜図7は本実施形態によるJava(登録商標)側での呼び出しメソッドの複数動作例を説明するための図である。
【0009】
まず本発明によるネイティブライブラリへのアクセス方法を適用したアクセスシステムは、図1に示す如く、C言語で生成された複数のネイティブライブラリ21〜23及び該ライブラリ21〜23のデータ型の定義を格納するデータ型定義ファイル24とを格納するネイティブライブラリ群200に対して設けられたアクセス構成100を成し、このアクセス構成100は、ネイティブライブラリを呼び出すための呼び出し用メソッド12を含むJava(登録商標)プログラム11と、前記呼び出し用メソッド12を用いて前記ネイティブライブラリ21〜23のファイルからデータを呼び出すためのアクセス用ライブラリ18と、前記データ型定義ファイル24に格納したライブラリ毎のデータ型定義を入力とし、データ型マッピング情報を格納するデータ型マッピング情報定義ファイル17と、C言語のメモリロケート動作の定義を格納したメモリロケート動作定義ファイル16と、前記データ型マッピング情報定義ファイル17に格納したデータ型マッピング情報定義とメモリロケート動作定義ファイル16に格納したメモリロレート動作定義とを用いてクラスタを生成するクラスタ生成プログラム15と、操作者に応じた各ライブラり21〜23に対するアクセス権が設定されたアクセス権設定ファイル13とを備える。
【0010】
前記呼び出し用メソッド12は、図2下段に示す如く、引数名/データ型/内容を格納したものであり、例えば図2上段に示す如く、アクセス対象のライブラリ名及びデータ型が「String Libname」、アクセスしたい関数名及びデータ型が「String funcname」、アクセス対象の関数への引数リストが「Vevter arge」、アクセス対象の関数からの戻り値が「Vecter results」の如く設定されているものである。即ち、呼び出し用メソッド12は、呼び出し対象となるネイティブライブラリの名前/関数名/引数リスト/戻り値格納領域を格納している。
【0011】
ここで本実施形態によるライブラリ名及び関数名が、図3(a)に示す如く、ライブラリ名として「sample_library.dll」、関数名として各々「long sample_function1(long p1, long p2)」/「long sample_function1(long p1, long p2)」/「long sample_function3(char p1[], long p2)」/「long sample_function4(long p)」である場合、データ型マピング情報定義ファイル17は、図3(b)に示す如く定義される。この図3(b)に示すデータ型マピング情報定義ファイル17は、簡単に説明すると、左側のコマンド欄がJava(登録商標)言語とC言語との対応を示し、右側の内容欄が、そのコマンドの内容を示している。即ち本実施形態によるデータ型マピング情報定義ファイル17は、Java(登録商標)言語で使用される型とC言語で使用される型のマッピングの記述と、当該データのメモリ領域がどのように扱われるか,またはどちら向きのデータなのかも指定している。尚、ここで指定するキーワードはメモリアロケート動作定義ファイル16にて定義されたキーワードである。
【0012】
前記メモリアロケート動作定義ファイル16は、図4(a)に示す如く、データ型マピング情報定義ファイル同様に、左側のコマンド欄がJava(登録商標)言語とC言語との対応を示し、右側の内容欄が、そのコマンドの内容を示している。即ちメモリアロケート動作定義ファイル16は、あるデータがネイティブライブラリへの入力データなのか,出力データなのか,または両方なのかをioに指定し、またそのデータの領域はネイティブライブラリ関数内でアロケートされるものなのか、そうでないのかをメモリに指定するものである。
【0013】
また前記アクセス権設定ファイル13は、図4(b)に示す如く、「sample_library」に対して、各々「sample_function1」(レベル1)、「sample_function2」(レベル2)、「sample_function3」(レベル3)、の如く、段階的なアクセス権が設定されている。即ち、該アクセス権設定ファイル13は、ネイティブライブラリの名前及び関数名単位にgrant指定することによりアクセス許可を表す様に設定されている。
【0014】
さて、この様に構成されたネイティブライブラリへのアクセス方法を適用したアクセスシステムは、ネイティブライブラリ関数の引数/戻り値となるデータ型情報を記述したデータ型マッピング情報定義ファイル17と、メモリアロケート動作を記述したメモリアロケート動作定義ファイル16と、そのファイルからC言語のデータ型と対応するJava(登録商標)言語クラスのソースコードを自動生成するプログラム15と、ネイティブライブラリ21〜23に格納されたファイルのライブラリ関数へアクセスするプログラムを格納するアクセス用ライブラリ18と、アクセス権制御を設定するアクセス権設定ファイル(ポリシーファイル)13とを設け、前記データ型マッピング情報定義ファイル17に記述されたネイティブライブラリ関数の引数及び戻り値と、前記メモリアロケート動作定義ファイル16に記述したメモリアロケート動作と、アクセス権設定ファイル13に設定したアクセス権とを用い、前記プログラム15によりJava(登録商標)言語をC言語に変換し且つアクセス権を設定したソースコードを生成し、該ソースコードによりネイティブライブラリをアクセスすることによって、Java(登録商標)プログラム11からネイティブライブラリ21〜23へデータを権限付きでアクセスすることができる。
【0015】
<例1>
この動作は、例えばJavaからライブラリsample_library.dllの関数sample_function1を呼びたい場合,Java(登録商標)側で図5(a)に示すライブラリ名51/関数名52/第1引数53/第2引数54を含むメソッドを読み出すことにより、データマッピング型定義ファイル17に格納した定義ファイルを元にC言語側で図5(b)に示すコードを実行する。このコードは、メモリアロケート動作定義ファイル16に格納した情報を元にJava(登録商標)言語をC言語に変換することを示し、図示の例では整数値のコピーを実行することを意味している。この関数実行結果rtnは、Intergre型に変換され、resultsへ格納される。
【0016】
<例2>
この動作は、例えばJavaからライブラリsample_library.dllの関数sample_function2を呼びたい場合、Java(登録商標)側で図6(a)に示すライブラリ名61/関数名62/第1引数63を含むメソッドを読み出すことにより、データマッピング型定義ファイル17に格納した定義ファイルを元にC言語側で図6(b)に示すコードを実行する。このコードは、メモリアロケート動作定義ファイル16に格納した情報を元にJava(登録商標)言語をC言語に変換することを示し、図示の例では戻り値64とargesから値を取得し、関数の呼び出し66を実行することによりString型からCの文字列へ変換を実行することを意味している。この関数実行結果rtnは、Intergre型に変換され、resultsへ格納される。
【0017】
<例3>
この動作は、例えばJava(登録商標)からライブラリsample_library.dllの関数sample_function3を呼びたい場合、Java(登録商標)側で図7(a)に示すライブラリ名71/関数名72/第1引数73/第2引数74を含むメソッドを読み出すことにより、データマッピング型定義ファイル17に格納した定義ファイルを元にC言語側で図7(b)に示すコードを実行する。このコードは、メモリアロケート動作定義ファイル16に格納した情報を元にJava(登録商標)言語をC言語に変換することを示し、図示の例ではString型からCの文字列へ変換を実行することを意味している。この関数実行結果rtnは、Intergre型に変換され、resultsへ格納される。
【0018】
この本実施形態によるネイティブライブラリへのアクセス方法を適用したアクセスシステムは、ネイティブライブラリ関数の引数/戻り値となるデータ型情報を記述したデータ型マッピング情報定義ファイル17と、メモリアロケート動作を記述したメモリアロケート動作定義ファイル16と、そのファイルからC言語のデータ型と対応するJava(登録商標)言語クラスのソースコードを自動生成するプログラム15と、実際にライブラリ関数へアクセスするプログラムを格納するアクセス用ライブラリ18と、アクセス権制御を設定するアクセス権設定ファイル(ポリシーファイル)13とを設け、前述のファイルに基づいてプログラムを実装し、Java(登録商標)プログラム11からネイティブライブラリ21〜23へアクセスする場合,予め定義された呼び出し用メソッド12を呼び出すことにより、メモリアロケート動作定義ファイル16に格納した情報を元にJava(登録商標)言語をC言語に変換し、この変換後のC言語を実行した得た結果をJava(登録商標)言語形式で戻すことよって、C言語の深い知識及びプログラミング能力を必要とせずにプログラマがJava(登録商標)言語を用いてC言語のライブラリにアクセスすることができる。
【0019】
また本実施形態によればプリミティブ型やその配列といったデータ型は組み込み済みのため、単純な引数を持つネイティブライブラリ関数の呼び出しも容易に行うことができる。更にライブラリおよび関数単位のアクセス権の制御を可能とするので不必要なライブラリへのアクセスを容易に防止できる。
【0020】
また、前記Java(登録商標)言語をC言語に変換する際にアクセス用ライブラリ18がアクセス権設定ファイル13に格納したアクセス権を設定することによって、C言語の深い知識及びプログラミング能力を必要とせずにライブラリに対するアクセス権を容易に設定することができる。
【0021】
【発明の効果】
以上説明したように本発明によるネイティブライブラリへのアクセス方法を適用したアクセスシステムは、ネイティブライブラリ関数の引数/戻り値となるデータ型情報を記述したデータ型マッピング情報定義ファイルと、メモリアロケート動作を記述したメモリアロケート動作定義ファイルと、そのファイルからC言語のデータ型と対応するJava(登録商標)言語クラスのソースコードを自動生成するプログラムと、実際にライブラリ関数へアクセスするプログラムを格納するアクセス用ライブラリと、アクセス権制御を設定するアクセス権設定ファイルとを設けることによって、C言語の深い知識を必要とせずに既存ネイティブライブラリへのアクセスを行うことができる。
【図面の簡単な説明】
【図1】本発明の一実施形態によるJava(登録商標)プログラムからネイティブライブラリへアクセスするためのアクセスシステムの全体構成を示す図。
【図2】本実施形態によるJava(登録商標)側での呼び出しメソッドを説明するため図。
【図3】本実施形態によるデータ型マッピング情報定義ファイルを説明するための図。
【図4】本実施形態によるメモリアロケート動作定義ファイル及びアクセス権設定ファイルを説明するための図。
【図5】本実施形態によるJava(登録商標)側での呼び出しメソッドの動作例1を説明するための図。
【図6】本実施形態によるJava(登録商標)側での呼び出しメソッドの動作例2を説明するための図。
【図7】本実施形態によるJava(登録商標)側での呼び出しメソッドの動作例3を説明するための図。
【符号の説明】
100:アクセス構成、11:Java(登録商標)プログラム、12:呼び出しメソッド、13:アクセス権設定ファイル、14:データ型変換用クラス、15:クラスタ生成プログラム、16:メモリロケート動作定義ファイル、17:データ型ビットマップ情報定義ファイル、21〜23:ライブラリ、24:データ型定義ファイル。

Claims (1)

  1. Java(登録商標)言語からC言語で書かれたファイルを格納するネイティブライブラリへアクセスするアクセス方法であって、ネイティブライブラリ関数の引数と戻り値となるデータ型情報を記述したデータ型マッピング情報定義ファイルと、メモリアロケート動作を記述したメモリアロケート動作定義ファイルと、ネイティブライブラリに格納されたファイルからC言語のデータ型と対応するJava(登録商標)言語クラスのソースコードを自動生成するクラスト生成プログラムと、ネイティブライブラリのライブラリ関数へアクセスするプログラムを格納するアクセス用ライブラリと、アクセス権を設定するアクセス権設定ファイルとを設け、前記データ型マッピング情報定義ファイルに記述されたネイティブライブラリ関数の引数及び戻り値と、前記メモリアロケート動作定義ファイルに記述したメモリアロケート動作と、アクセス権設定ファイルに設定したアクセス権とを用い、前記クラスタ生成プログラムによりJava(登録商標)言語をC言語に変換したソースコードを生成し、該ソースコードによりネイティブライブラリをアクセスすることを特徴とするネイティブライブラリへアクセスするアクセス方法。
JP2003081693A 2003-03-25 2003-03-25 ネイティブライブラリへのアクセス方法 Withdrawn JP2004288076A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003081693A JP2004288076A (ja) 2003-03-25 2003-03-25 ネイティブライブラリへのアクセス方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003081693A JP2004288076A (ja) 2003-03-25 2003-03-25 ネイティブライブラリへのアクセス方法

Publications (1)

Publication Number Publication Date
JP2004288076A true JP2004288076A (ja) 2004-10-14

Family

ID=33295156

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003081693A Withdrawn JP2004288076A (ja) 2003-03-25 2003-03-25 ネイティブライブラリへのアクセス方法

Country Status (1)

Country Link
JP (1) JP2004288076A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102043653A (zh) * 2010-12-23 2011-05-04 中国农业银行股份有限公司 缓存配置的修改方法、缓存数据的操作、查询方法及缓存***
JP2012173771A (ja) * 2011-02-17 2012-09-10 Hitachi Solutions Ltd プログラミング言語間でのライブラリ変換方法及びプログラム
JP2013097747A (ja) * 2011-11-05 2013-05-20 Kyocera Document Solutions Inc ソフトウェア開発キット
JP2013097745A (ja) * 2011-11-05 2013-05-20 Kyocera Document Solutions Inc ソフトウェア開発キット、これを用いて作成された画像形成装置用拡張アプリケーション及びこのアプリケーションを備えた携帯端末装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102043653A (zh) * 2010-12-23 2011-05-04 中国农业银行股份有限公司 缓存配置的修改方法、缓存数据的操作、查询方法及缓存***
JP2012173771A (ja) * 2011-02-17 2012-09-10 Hitachi Solutions Ltd プログラミング言語間でのライブラリ変換方法及びプログラム
JP2013097747A (ja) * 2011-11-05 2013-05-20 Kyocera Document Solutions Inc ソフトウェア開発キット
JP2013097745A (ja) * 2011-11-05 2013-05-20 Kyocera Document Solutions Inc ソフトウェア開発キット、これを用いて作成された画像形成装置用拡張アプリケーション及びこのアプリケーションを備えた携帯端末装置

Similar Documents

Publication Publication Date Title
US7543309B2 (en) Efficient linking and loading for late binding and platform retargeting
US7143421B2 (en) Highly componentized system architecture with a demand-loading namespace and programming model
Robinson et al. Professional C# (2004 Ed.)(Wrox)
US8434099B2 (en) Efficient linking and loading for late binding and platform retargeting
KR101331361B1 (ko) 격리된 익스텐션 및 장치 드라이버의 구성 요구사항을 설명하고 처리하는 프로세서-실행가능 명령어들을 갖는 컴퓨터로 읽을 수 있는 기록 매체
US5247678A (en) Load time linker for software used with a multiprocessor system
US7565665B2 (en) Efficient linking and loading for late binding and platform retargeting
US6557168B1 (en) System and method for minimizing inter-application interference among static synchronized methods
US6108661A (en) System for instance customization
KR101795844B1 (ko) 런타임 시스템
US6526457B1 (en) Systems utility object interface for facilitating software portability
US20040268301A1 (en) Adding new compiler methods to an integrated development environment
KR20060123513A (ko) 컴퓨터 프로그램의 구성 방법
US20090133042A1 (en) Efficient linking and loading for late binding and platform retargeting
US8200938B2 (en) Computer system and method providing a memory buffer for use with native and platform-independent software code
US7730465B2 (en) Mixed types
Kirby et al. Linguistic reflection in Java
US7213098B2 (en) Computer system and method providing a memory buffer for use with native and platform-independent software code
US7159222B1 (en) Highly componentized system architecture with object mutation
JP4084956B2 (ja) オブジェクト集合方法およびシステム
JP2004288076A (ja) ネイティブライブラリへのアクセス方法
US20110238702A1 (en) Creating multiple mbeans from a factory mbean
US20020073133A1 (en) Register allocation method and software development method for various execution environments and LSI for executing developed software
JP2003241967A (ja) プログラム実行装置およびその方法、並びにそこで実行されるプログラム
Gallardo et al. Development and Use of Dynamic Link Libraries Generated Under Various Calling Conventions

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20060606