GIWS (oprogramowanie)
GIWS to generator opakowań , który ma uprościć wywoływanie Javy z C lub C++ poprzez automatyczne generowanie niezbędnego kodu JNI .
GIWS jest udostępniany na licencji CeCILL .
Przykład
Następująca klasa Java wykonuje proste obliczenia.
pakiet podstawowy_przyklad ; importuj java.lang.Math ; public class MyComplexClass { public MyComplexClass (){ // konstruktor } public long myVeryComplexCommputation ( double a , double b ){ return Math . round ( Matematyka . cos ( a ) + Matematyka . sin ( b ) * 9 ); } }
GIWS daje możliwość wywołania go z C++.
0
0
#include <iostream> #include "basic_example.hxx" #include <jni.h> JavaVM * create_vm () { JavaVM * jvm ; JNIEnv * env ; JavaVMInitArgs argumenty ; Opcje JavaVMOption [ 2 ]; argumenty . wersja = JNI_VERSION_1_4 ; argumenty . nOpcje = 2 ; opcje [ ]. optionString = const_cast < char *> ( "-Djava.class.path=." ); opcje [ 1 ]. optionString = const_cast < char *> ( "-Xcheck:jni" ); argumenty . opcje = opcje ; argumenty . zignoruj nierozpoznane = JNI_FALSE ; JNI_CreateJavaVM ( & jvm , ( puste ** ) & env , & args ); zwróć jvm ; } przy użyciu przestrzeni nazw basic_example ; używając przestrzeni nazw std ; int main (){ JavaVM * jvm = create_vm (); MyComplexClass * testOfMyClass = new MyComplexClass ( jvm ); cout << "Moje obliczenia: " << testOfMyClass -> myVeryComplexComputation ( 1.2 , 80 ) << endl ; powrót ; }
Aby wygenerować powiązanie, GIWS używa deklaracji XML. GIWS wygeneruje kod JNI do wywołania obiektu Java.
< nazwa pakietu = "basic_example" > <nazwa obiektu = "MyComplexClass" > < nazwa metody = "myVeryComplexComputation" returnType = "long" > <param type = "double" name = "a" /> <param type = "double" name= "b" /> </metoda> </obiekt> </pakiet>
Zobacz też
- SWIG pozwala wywoływać C lub C++ z języków wyższego poziomu