GIWS (software)

{{Multiple issues|

{{notability|Products|date=August 2015}}

{{refimprove|date=August 2015}}

{{unref |date=April 2024}}

}}

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

  1. include
  2. include "basic_example.hxx"
  3. include

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("-Djava.class.path=.");

options[1].optionString = const_cast("-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.

See also

  • SWIG allows one to call C or C++ from higher level languages

References

{{reflist}}