Top Qs
Timeline
Chat
Perspective

GIWS (software)

From Wikipedia, the free encyclopedia

Remove ads

GIWS is a wrapper generator intended to simplify calling Java from C or C++ by automatically generating the necessary JNI code.[1]

GIWS is released under the CeCILL license.

Remove ads

Example

Summarize
Perspective

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>
Remove ads

See also

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

References

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads