LoginSignup
2
1

More than 5 years have passed since last update.

PlayFrameworkで、C言語のライブラリを実行したい

Last updated at Posted at 2012-06-10

簡単なC言語ライブラリ(32bitコンパイル)を64bitJVMで動くPlayFramework内で実行したいが、その方法を悩み中。

一番シンプルな Runtime#execを使う

Runtime.getRuntime().exec()

は通常の環境であれば有効な策だが、PlayFrameworkでは利用しない方が良い。
このexecを実行する際、forkを行って自分のプロセスと同じだけメモリを確保するらしく、
何百MBも利用しているplayframeworkから実行するのは非現実的。

JNAを利用する

JNIよりも簡単にNativeコードを実行する方法としてJNAがある。

public interface HogeDLL extends Library {
    HogeDLL INSTANCE =
            (HogeDLL) Native.loadLibrary(
                    "/home/admin/workspace/Hoge.dll",
                    HogeDLL.class);

    int function1(String text, String filename);
}
final HogeDLL dll = HogeDLL.INSTANCE;
dll.function1(text, filePath);

が、この場合、対象のライブラリとJVMは同じbit数で動いていなければならない。
このため、32bit向けにコンパイルされたライブラリを64bitのJVMで動かすことができない。

軽く調べた限りではJNIも同様の様子。

次の手

探し中。

2
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1