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.
Example.
The 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++.
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>