GIWS (software)
GIWS is a wrapper generator intended to simplify calling Java from C or C++ by automatically generating the necessary JNI code. GIWS is released under the CeCILL license. ExampleThe following Java class does some simple computation. package basic_example;
import java.lang.Math;
public class MyComplexClass{
public MyComplexClass(){
// the constructor
}
public long myVeryComplexComputation(double a, double b){
return Math.round(Math.cos(a)+Math.sin(b)*9);
}
}
GIWS gives the capability to call it from C++. #include <iostream>
#include "basic_example.hxx"
#include <jni.h>
JavaVM* create_vm() {
JavaVM* jvm;
JNIEnv* env;
JavaVMInitArgs args;
JavaVMOption options[2];
args.version = JNI_VERSION_1_4;
args.nOptions = 2;
options[0].optionString = const_cast<char*>("-Djava.class.path=.");
options[1].optionString = const_cast<char*>("-Xcheck:jni");
args.options = options;
args.ignoreUnrecognized = JNI_FALSE;
JNI_CreateJavaVM(&jvm, (void **)&env, &args);
return jvm;
}
using namespace basic_example;
using namespace std;
int main(){
JavaVM* jvm = create_vm();
MyComplexClass *testOfMyClass = new MyComplexClass(jvm);
cout << "My Computation: " << testOfMyClass->myVeryComplexComputation(1.2,80) << endl;
return 0;
}
To generate the binding, GIWS uses a XML declaration. GIWS will generate the JNI code to call the Java object. <package name="basic_example">
<object name="MyComplexClass">
<method name="myVeryComplexComputation" returnType="long">
<param type="double" name="a" />
<param type="double" name="b" />
</method>
</object>
</package>
See also
ReferencesExternal links
|