.NET
概要
.NETインターフェイスは、C#、VB.NETで使用できます。したがって、これらの言語で開発するプログラムで直接利用することができます。
.NETインターフェイスは、C++/CLIを利用してC++インターフェイスのラッパーとして作成されています。*1
このため、開発や動作には.NETインターフェイス用のDLLファイルとともにC++インターフェイス用のDLLファイルの配置が必須です。
*1 PDF Tool API V7.0では、.NET Framework用インターフェイスはC++/CLIで開発しています。
.NET6用インターフェイスはC++/CLIは使用していません。
SWIG(Simplified Wrapper and Interface
Generator)(https://www.swig.org/)を利用しています。
C++/CLI/SWIGによる.NET用ライブラリのメリットとデメリット
- メリット
-
- 処理速度がC++と同等レベルで速い。(ただし、処理の内容によって異なる)
- C++ライブラリを.NET用言語(C#やVB.NETなど)から呼ぶことができる、または.NETアプリと組み合わせて使うことができる。
- SWIGを利用したライブラリでは、クロスプラットフォーム開発が可能である。WindowsだけでなくLinuxで動作するプログラムが作成できる。
- デメリット
-
- C++/CLIはWindows専用であるため、クロスプラットフォーム開発はできない。
開発
開発環境には、製品の動作環境あるいは開発環境に記載されているバージョンのMicrosoft Visual C++のランタイムライブラリが必要です。
Microsoft Visual Studioにてプロジェクトを作成する場合、「ソリューション プラットフォーム」には「x86」あるいは「x64」を指定します。
- 32bit版プログラムを作成する場合:「x86」
- 64bit版プログラムを作成する場合:「x64」
Visual Studioの「プロジェクト」‐「参照の追加...」メニューにおいて、.NETインターフェイス用のDLLファイルを追加します。 DLLファイルが32bit版と64bit版で分かれている場合は、作成するプラットフォームと一致するほうを追加してください。
実行
.NETインターフェイスを使用して作成したプログラムの動作環境には、以下のランタイムライブラリのインストールが必要です。
- .NET Framework または .NET ランタイムライブラリ:作成したプログラムの.NETバージョンのもの
- Microsoft Visual C++ ランタイムライブラリ:製品の動作環境あるいは開発環境に記載されているバージョンのもの
作成したプログラムが32bitの場合はx86版、64bitの場合はx64版のライブラリをインストールしてください。
プログラムの動作には、.NETインターフェイス用とC++インターフェイス用のDLLファイルが必要です。 製品によっては、このほかにも動作に必須のファイルがあります。 DLLファイルは、プログラムが参照可能な場所に配置してください。
[配置方法の例]
- プログラム実行ファイルと同じ場所に配置する。
- 動作環境の環境変数「PATH」に、DLLファイルが存在する場所を指定する。
使い方
- C#、VB.NET、ASP.NETで作成するプログラムで利用する。
- PowerShellのスクリプトで利用する。
製品
アンテナハウスでは次の製品で.NETインターフェイスを提供しております。
- Formatter
- Office Server Document Converter
- PDF Tool API
- PDF Driver API
- PDF Driver
- PDFtoCells 変換ライブラリ
- PDF Viewer SDK
- TextPorter
Java
概要
Javaインターフェイスは、「Java Native Interface」(JNI)あるいは「Java Native Access」(JNA)を利用してC++インターフェイスのラッパーとして作成されています。
このため、開発や動作にはJavaインターフェイス用のjarファイルとともにC++インターフェイス用のDLLファイルの配置が必須です。
C++インターフェイスのラッパーとして作成されたJava用ライブラリのメリットとデメリット
- メリット
-
- 処理速度がC++と同等レベルで速い。(ただし、処理の内容によって異なる)
- C++ライブラリをJavaから呼ぶことができる、またはJavaアプリと組み合わせて使うことができる。
- デメリット
-
- Javaインターフェイスを使ったプログラムを実行すると、JavaVMのメモリ空間のうち、JavaVM固有領域のほかにOSネイティブの領域を使用する。
- OSネイティブの領域はGC(garbage collection)の対象とならないため、プログラムが終了するまで使用状態となる。
開発
開発環境には、製品の動作環境あるいは開発環境に記載のJavaと同一のバージョンで開発を行うことを推奨します。
開発環境には、C++のランタイムライブラリが必須です。
32bit、64bitの両方のAPIを提供している製品では、32bitのプログラム開発を行うときは32bit用の、64bitのプログラム開発を行うときは64bit用のランタイムライブラリが必要です。
- Windows : 動作環境あるいは開発環境に記載のバージョンのMicrosoft Visual C++ ランタイムライブラリ
- Linux : 動作環境あるいは開発環境に記載のバージョンのglibc、libstdc++
インターフェイス用のファイルが存在する場所を環境変数に設定します。
- CLASSPATH : Javaインターフェイス用のjarファイルがある場所
- PATH(Windowsの場合) : C++インターフェイス用のファイルがある場所
- LD_LIBRARY_PATH(Linuxの場合) : C++インターフェイス用のファイルがある場所
実行
実行環境には、開発環境と同じバージョンの、以下のランタイムライブラリのインストールが必要です。
- Java ランタイムライブラリ
- C++ ランタイムライブラリ
64bit OS環境で32bitのプログラムを実行する場合は、32bit用のランタイムライブラリが必要です。
環境変数の設定が必要です。
- CLASSPATH : Javaインターフェイス用のjarファイルがある場所
- PATH(Windowsの場合) : C++インターフェイス用のファイルがある場所
- LD_LIBRARY_PATH(Linuxの場合) : C++インターフェイス用のファイルがある場所
注意点
Java用インターフェイスは、Java Scriptでは使用できません。
Tomcatなどのアプリケーションサーバにおいて使用する場合、Javaインターフェイス用のjarファイルをWebアプリケーションのWEB-INF/libに置かないようにしてください。
JavaVMの仕様によりJNIのネイティブライブラリは複数のクラスローダから読み込めないようになっているため、各Webアプリケーションディレクトリにjarファイルを置くと複数のWebアプリケーションから使用することができなくなります。
JNAのネイティブライブラリは複数のクラスローダから読み込めますが、同じライブラリを複数回読み込む可能性がありメモリの無駄遣いになります。
これを防ぐにはシステムクラスローダなどロードが一度だけ行われるクラスローダで読み込ませるように設定してください。
製品
アンテナハウスでは次の製品でJavaインターフェイスを提供しております。
- Formatter
- Office Server Document Converter
- PDF Tool API
- PDF Driver API
- TextPorter