Menu
Home Explore People Places Arts History Plants & Animals Science Life & Culture Technology
On this page
GIWS (software)
Software to generate a C++ wrapper for Java classes

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.

We don't have any images related to GIWS (software) yet.
We don't have any YouTube videos related to GIWS (software) yet.
We don't have any PDF documents related to GIWS (software) yet.
We don't have any Books related to GIWS (software) yet.
We don't have any archived web articles related to GIWS (software) yet.

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

#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

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