Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Previous revision Next revision | Previous revision | ||
jni [2008/04/13 01:06] chappaai |
jni [2008/04/16 23:55] chappaai |
||
---|---|---|---|
Linia 1: | Linia 1: | ||
====== Java JNI i C++ ====== | ====== Java JNI i C++ ====== | ||
- | Autor : Łukasz Mosdorf G1ISI FIXME | + | Autor : Łukasz Mosdorf G1ISI |
- | --- //[[L.Mosdorf@stud.elka.pw.edu.pl|Łukasz Mosdorf]] 2008/04/13 01:05// | + | --- |
+ | //[[L.Mosdorf[eeeet]stud.elka.pw.edu.pl|Łukasz Mosdorf]] 2008/04/13 01:05// | ||
- | Ta strona zawiera prosty przykład zastosowania Java Native Interface. Technologia ta pozwala łączyć kod Javy z kodem pisanym pisanym w językach specyficznych dla danej platformy. Potrzeba łączenia Javy z C++ zachodzi np gdy | + | Ta strona zawiera prosty przykład zastosowania Java Native Interface. Technologia ta pozwala łączyć kod Javy z kodem pisanym w językach specyficznych dla danej platformy. Potrzeba łączenia Javy z C++ zachodzi np gdy |
* maszyna wirtualna nie jest w stanie zapewnić nam wystarczającej szybkości obliczeń | * maszyna wirtualna nie jest w stanie zapewnić nam wystarczającej szybkości obliczeń | ||
* Chcemy połączyć aplikację javy z juz istniejącym kawałkiem oprogramowania napisanego w C/C++ | * Chcemy połączyć aplikację javy z juz istniejącym kawałkiem oprogramowania napisanego w C/C++ | ||
Linia 10: | Linia 11: | ||
* Utworzyć klasę (Javaclass.java), która deklaruje metodę natywną | * Utworzyć klasę (Javaclass.java), która deklaruje metodę natywną | ||
* skompilowac tę klasę za pomocą polecenia 'javac' i w ten sposób otrzymać Javaclass.class | * skompilowac tę klasę za pomocą polecenia 'javac' i w ten sposób otrzymać Javaclass.class | ||
- | * uzyc javah -jni aby otrzymac plik naglowkowy, w oparciu o ktory napiszemy kod w C++ | + | * uzyc javah -jni aby otrzymac plik naglowkowy, w oparciu o który napiszemy kod w C++ |
- | * napisac kod w C++ | + | * napisać kod w C++ |
* skompilować kod do postaci biblioteki (*.dll pod Windows, *.so pod Solarisem) | * skompilować kod do postaci biblioteki (*.dll pod Windows, *.so pod Solarisem) | ||
* uruchomić program Javaclass | * uruchomić program Javaclass | ||
- | Przykladowa seria polecen potrzebna do kompilacji przykładu na platformie Windows: | + | Przykładowa seria poleceń potrzebna do kompilacji przykładu na platformie Windows: |
<code cpp> | <code cpp> | ||
Linia 91: | Linia 92: | ||
} | } | ||
</code> | </code> | ||
+ | |||
Linia 210: | Linia 212: | ||
JNIEXPORT void JNICALL Java_jni_1pkg_Jni_native_1call (JNIEnv * env, jclass cls) | JNIEXPORT void JNICALL Java_jni_1pkg_Jni_native_1call (JNIEnv * env, jclass cls) | ||
{ | { | ||
- | cout<<"Najprostsza metoda java wywołana !!"<<endl; | + | cout<<"Najprostsza metoda c++ wywołana z javy !!"<<endl; |
} | } | ||