javaʹÓÃJNIµ÷ÓÃC++º¯Êý
ÍøÉÏÓÐÁ˺ܶàÕâÑùµÄÎÄÕ£¬²»¹ý¸Ð¾õ²¢²»ÊǺÜÈ«£¬ÎÒ¶¼¶«ÕÒÎ÷ÕÒ²Å×îÖÕ°ÑJAVAµ÷ÓÃc++¸ø¸ã¶¨¡£
ÏÂÃæÒýÓÃÁ˺ܶàÍøÉÏÒѾÓеĵÄÄÚÈÝ£¬ÎÒÔÚÕâÀïÖ»ÊÇÕûºÏÒ»´Î£¬ÈÃÒÔºóµÄÅóÓÑÉÙ×ßÍøÂ·¡£
¶à˵ÎÞÒæ£¬¾ßÌåÈçÏ£º
×÷Õß:mykoma
¼ÙÉèËùÓÐÎļþ¶¼·ÅÔÚd:\
Step 1:
дJAVAÎļþ
ÀýÈç³ÌÐòtestdll.java£¬ÄÚÈÝΪ£º
public class testdll {
static{
System.loadLibrary("testdll");
}
public native static int get();
public native static void set(int i);
public static void main(String[] args) {
testdll test = new testdll();
test.set(10);
System.out.println(test.get());
}
}
ÓÃjavac testdll.java±àÒëËü£¬»áÉú³Étestdll.class¡£
ÔÙÓÃjavah testdll£¬Ôò»áÔÚµ±Ç°Ä¿Â¼ÏÂÉú³Étestdll.hÎļþ£¬Õâ¸öÎļþÐèÒª±»C/C++³ÌÐòµ÷ÓÃÀ´Éú³ÉËùÐèµÄ¿âÎļþ¡£
Step 2:
¸ù¾Ýtestdll.hдC++Îļþtestdll.cpp
testdll.cppÄÚÈÝΪ£º
#include "testdll.h"
int i = 0;
JNIEXPORT jint JNICALL Java_testdll_get (JNIEnv *, jclass) {
return 2*i;
}
JNIEXPORT void JNICALL Java_testdll_set (JNIEnv *, jclass, jint j) {
i = j;
}
Step 3:
Éú³Étestdll.dll
ÕâÒ»²½ÐèҪעÒ⣬ÎÒ×ʼҲÊÇÕÒÁ˺ܶà×ÊÁϲÅŪÕýÈ·
ÕâÀïÎÒʹÓõÄV
Ïà¹ØÎĵµ£º
½ñÌ츴ϰÁËÒ»ÏÂÕâЩ֪ʶ£¬Ë³±ã×öÁËϱʼÇ.
1.¼Ä´æÆ÷£º×î¿ìµÄ´æ´¢Çø, ÓɱàÒëÆ÷¸ù¾ÝÐèÇó½øÐзÖÅä,ÎÒÃÇÔÚ³ÌÐòÖÐÎÞ·¨¿ØÖÆ.
2. Õ»£º´æ·Å»ù±¾ÀàÐ͵ıäÁ¿Êý¾ÝºÍ¶ÔÏóµÄÒýÓ㬵«¶ÔÏó±¾Éí²»´æ·ÅÔÚÕ»ÖУ¬¶øÊÇ´æ·ÅÔÚ¶Ñ£¨new ³öÀ´µÄ¶ÔÏ󣩻òÕß³£Á¿³ØÖУ¨×Ö·û´®³£Á¿¶ÔÏó´æ·ÅÔÚ³£Á¿³ØÖС££©
3. ¶Ñ£º´æ·ÅËùÓÐnew³öÀ´µÄ¶ÔÏó¡£
4. ¾²Ì¬Óò£ ......
1.[http://www.javaalmanac.com] – Java¿ª·¢ÕßÄê¼øÒ»ÊéµÄÔÚÏß°æ±¾. ÒªÏë¿ìËٲ鵽ijÖÖJava¼¼ÇɵÄÓ÷¨¼°Ê¾Àý´úÂë, ÕâÊÇÒ»¸ö²»´íµÄÈ¥´¦.
2.[http://www.onjava.com] – O’ReillyµÄJavaÍøÕ¾. ÿÖܶ¼ÓÐÐÂÎÄÕÂ.
3.[http://java.sun.com] – ¹Ù·½µÄJava¿ª·¢ÕßÍøÕ¾ – ÿÖܶ¼ÓÐÐÂÎÄÕ·¢±í.
4.[http:/ ......
ʲôÊÇÐòÁл¯
javaÖеÄÐòÁл¯(serialization)»úÖÆÄܹ»½«Ò»¸öʵÀý¶ÔÏóµÄ״̬ÐÅϢдÈëµ½Ò»¸ö×Ö½ÚÁ÷ÖУ¬Ê¹Æä¿ÉÒÔͨ¹ýsocket½øÐд«Êä¡¢»òÕ߳־û¯´æ´¢µ½Êý¾Ý¿â»òÎļþϵͳÖУ»È»ºóÔÚÐèÒªµÄʱºò£¬¿ÉÒÔ¸ù¾Ý×Ö½ÚÁ÷ÖеÄÐÅÏ¢À´Öع¹Ò»¸öÏàͬµÄ¶ÔÏó¡£ÐòÁл¯»úÖÆÔÚjavaÖÐÓÐ׏㷺µÄÓ¦Óã¬EJB¡¢RMIµÈ¼¼Êõ¶¼ÊÇÒÔ´ËΪ»ù´¡µÄ¡£  ......
Java ASM
ÎÒÃÇÖªµÀJavaÊǾ²Ì¬ÓïÑÔ£¬¶øpython¡¢rubyÊǶ¯Ì¬ÓïÑÔ£¬Java³ÌÐòÒ»µ©Ð´ºÃºÜÄÑÔÚÔËÐÐʱ¸ü¸ÄÀàµÄÐÐΪ£¬¶øpython¡¢ruby¿ÉÒÔ¡£
²»¹ý»ùÓÚbytecode²ãÃæÉÏÎÒÃÇ¿ÉÒÔ×öһЩÊֽţ¬À´Ê¹Java³ÌÐò¶àһЩÁé»îÐÔºÍMagic£¬ASM¾ÍÊÇÕâÑùÒ»¸öÓ¦Óù㷺µÄ¿ªÔ´¿â¡£
ASM is a Java bytecode manipulation framework. It can be used t ......
java£º4Àà8ÖÖ»ù´¡Êý¾ÝÀàÐÍ£º
ÕûÐÍ£ºbyte short int long
¸¡µãÐÍ: float double
²¼¶ûÐÍ£ºboolean
×Ö·ûÐÍ£ºchar
³ýÁË4Àà8ÖÖ»ù´¡Êý¾ÝÀàÐÍ£¬ÆäËûµÄÊý¾ÝÀàÐͶ¼ÊÇÒýÓÃÀàÐÍÀýÈ綨ÒåµÄclass µÈµÈ£¬ÕâÒ»µãÒì³£ÖØÒª¡£·ñÔò»áµ¼ÖÂÔÚʹÓÃcontainerʱ³ö´í£¬Ã¿Ìí¼ÓÒ»¸ö¶ÔÏó½øÈëcontainer¶¼±ØÐëÊÇÒ»¸ö¶ÔÏó¶ø²» ......