Java±¾µØ½Ó¿Ú(Java Native Interface (JNI))
JNI¹¤×÷ÔÀí
ÔÚJNIÖУ¬±¾µØº¯ÊýÊÇͨ¹ýÒ»¸ö¶ÀÁ¢µÄ.c»ò.cppÎļþÀ´ÊµÏÖµÄ(C++ΪJNIÌṩµÄ½çÃæ»á¸ü¼ò½àһЩ)¡£µ±JVMµ÷Óøú¯Êýʱ£¬Ëü´«µÝÁËÒ»¸öJNIEnvÖ¸Õë¡¢Ò»¸öjobjectÖ¸ÕëºÍͨ¹ýJava·½·¨¶¨ÒåµÄJava²ÎÊý£¬JNIº¯ÊýµÄÐÎʽÈçÏ£º
JNIEXPORT void JNICALL Java_ClassName_MethodName
(JNIEnv *env, jobjectobj)
{
//Method native implemenation
}
envÖ¸ÕëÊÇÒ»¸ö°üº¬ÁËJVM½Ó¿ÚµÄ½á¹¹£¬Ëü°üº¬ÁËÓëJVM½øÐн»»¥ÒÔ¼°ÓëJava¶ÔÏóÐͬ¹¤×÷Ëù±ØÐèµÄº¯Êý£¬Ê¾ÀýÖеÄJNIº¯Êý¿ÉÒÔÔÚ±¾µØÊý×éºÍJavaÊý×éÀàÐÍÖ®¼ä¡¢±¾µØ×Ö·û´®ºÍJava×Ö·û´®ÀàÐÍÖ®¼ä½øÐÐת»»£¬Æä¹¦ÄÜ»¹°üÀ¨¶ÔÏóµÄʵÀý»¯¡¢Å׳öÒì³£µÈ¡£»ù±¾ÉÏÄú¿ÉÒÔʹÓÃJNIEnvÀ´ÊµÏÖËùÓÐJavaÄÜ×öµ½µÄÊÂÇ飬ËäȻҪ¼òµ¥ºÜ¶à¡£
¸ü¼ÓÕýʽµÄ½âÊÍÊÇÕâÑùµÄ£¬±¾µØ´úÂëͨ¹ýµ÷ÓÃJNIµÄº¯ÊýÀ´·ÃÎÊJVM£¬ÕâÊÇͨ¹ýÒ»¸ö½çÃæÖ¸ÕëʵÏֵ썽çÃæÖ¸Õëʵ¼ÊÉÏÊÇÖ¸ÏòÖ¸ÕëµÄÖ¸Õ룩£¬¸ÃÖ¸ÕëÖ¸ÏòÒ»¸öÖ¸ÕëÊý×飬Êý×éÖеÄÿ¸öÖ¸Õë¶¼Ö¸ÏòÁËÒ»¸ö½çÃæº¯Êý£¬¶øÃ¿¸ö½çÃæº¯Êý¶¼ÊÇÔÚÊý×éÖÐÔ¤Ïȶ¨Òå¹ýµÄ¡£
±¾µØ·½·¨½«JNI½çÃæÖ¸Õëµ±×÷Ò»¸ö²ÎÊý£¬Èç¹ûÔÚͬһ¸öJavaÏß³ÌÖУ¬³öÏֶԸñ¾µØ·½·¨µÄ¶àÖØµ÷Óã¬JVMÔò±£Ö¤´«µÝÏàͬµÄ½çÃæÖ¸Õëµ½±¾µØ·½·¨¡£²»¹ý£¬Ò»¸ö±¾µØ·½·¨¿ÉÒÔ±»²»Í¬µÄJavaÏ̵߳÷Óã¬Òò¶øÒ²¿ÉÄÜ»áÊÕµ½²»Í¬µÄJNI½çÃæÖ¸Õë¡£
±¾µØ·½·¨ÊÇͨ¹ýSystem.loadLibrary·½·¨¼ÓÔØµÄ£¬ÔÚÒÔϵÄÀý×ÓÖУ¬ÀàµÄ³õʼ»¯·½·¨¼ÓÔØÁËÒ»¸öÖ¸¶¨Æ½Ì¨µÄ±¾µØÀà¿â£¬¸ÃÀà¿â¶¨ÒåÁ˱¾µØ·½·¨£º
packagepkg;
class Cls {
native double f(inti, String s);
static {
System.loadLibrary(pkg_Cls");
}
}
system.loadLibrary·½·¨µÄ²ÎÊýÊÇÒ»¸öÀà¿âµÄÃû³Æ£¬Ëü¿ÉÒÔÓɳÌÐòÔ±ÈÎÒâѡȡ£¬ÏµÍ³Ôò×ñÑÒ»¸ö±ê×¼µÄ±¾µØ»¯Æ½Ì¨µÄ·½Ê½À´×ª»»Àà¿âµÄÃû³Æµ½Ò»¸ö±¾µØÀà¿âµÄÃû³Æ¡£ÀýÈ磬ÔÚSolaris²Ù×÷ϵͳÖлὫpkg_Clsת»»Îªlibpkg_Cls.so£¬¶øWin32ϵͳÔò»á½«Í¬ÑùµÄpkg_Clsת»»Îªpkg_Cls.dll¡£
¡¡¡¡¶¯Ì¬Ö¸Õë»á¸ù¾ÝËüÃǵÄÃû×ÖÀ´½øÐнâÎö£¬Ò»¸ö±¾µØ·½·¨µÄÃû³ÆÊǰ´ÕÕ×é¼þ½øÐÐÁ¬½ÓµÄ£¬Ëü°üº¬ÁË£ºÇ°×º“Java_”¡¢Ò»¸ö·ÖÀëµÄºÏ·¨µÄÀàÃû³ÆºÍÒ»¸ö·ÖÀëµÄ·½·¨Ãû³Æ¡£
×¢Ò⣺΢ÈíµÄJVMÓÐÏàͬµÄ»úÖÆ´ÓJavaµ÷Óñ¾µØWindows´úÂ룬¸Ã»úÖÆ±»³ÆÎªÔʼ±¾µØ½Ó¿Ú(Raw Native
Ïà¹ØÎĵµ£º
×Ô¼ºÑо¿ÏÂverycdÏÂÔØÌ×·,·¢ÏÖÒ»¸ödownloads.txtÎļþͬ²½ÕýÔÚÏÂÔØµÄ×ÊÔ´ÐÅÏ¢,ÏÂÔØÍê³Éºó×Ô¶¯É¾³ýÀïÃæµÄ¼Ç¼,Õâ¾Í¼òµ¥¶àÁË.
˼·:¶Ádownloads.txtÎļþ,ÀûÓùؼü×Ö°ÑÀïÃæµÄ¼Ç¼·Ö¸îºó¼ÓÈëlist,Ñ¡Ôñ¼àÊÓµÄÎļþÃû,ÀûÓÃwhileÑ»·µÄµ¹¼ÆÊ±·½·¨ÒÔÎļþÃûΪ¹Ø¼ü×Ö´ÓlistÀﶨʱËÑË÷,Èç¹ûÏÂÔØÍê³É,µ÷ÓÃruntimeÀàÔËÐÐdosÃüÁîshutdown, ......
×î½üÓöµ½ÁËÒ»¸öÎÊÌ⣬¾ÍÊÇÔÚÓõ½List.toArray ·½·¨Ê±£¬·µ»ØObject[]Êý×飬ֱ½Ó°ÑËüǿת³ÉÆäËûÀàÐ͵Ļᱨ´í£º
code: ArrayList list=getList();
String[] s=(String[])list.toArray();
except ......
²ÉÓÃÓûÑïÏÈÒÖµÄÊÖ·¨Ì¸Ì¸java:
javaûÓÐÖ¸ÕëÖ»ÓÐÒýÓÃÊÇ×î´óµÄ°Ü±Ê.ÕýÒòΪûÓÐÖ¸Õë,ºÜ¶à²Ù×÷ÒªÓØ»ØÍñת;À¬»øÊÕ¼¯»úÖÆÒ²¾õµÃÊǼ¦Àß,д¸öÎö¹¹º¯ÊýÕæµÄÄÇô¸´ÔÓÂð, ÓбØÒªÎþÉüÁé»îÐÔÂð;º¯Êýµ÷ÓõĴú¼ÛÖ®¸ßÈÃÈË×¥¿ñ
µ«ÎÒ»¹ÊÇÑ¡ÔñÁËËý:
javaµÄ´¿ÃæÏò¶ÔÏóÌØ ......
ѧjavaÒѾÓÐÒ»¶Îʱ¼äÁË¡£Ñ§µÄ¶«Î÷²»¶à£¬µ«ÎÒûÏëµ½½ö½öÃæÏò¹ý³ÌµÄһЩ֪ʶ£¨Loops£©¾Í¿ÉÒÔ×ö³öÏñÎå×ÓÆåÕâÑùµÄÓÎÏ·£¬ÎÒ²»µÃ²»¸Ð̾javaÓïÑÔµÄ÷ÈÁ¦¡£ÌرðÊÇÁ˽⵽javaµÄÓ¦ÓÃÖ®¹â·º£¬Éæ¼°ÊÖ»ú£¬Ç¶Èëʽ¿ª·¢£¬pc£¬ÆóÒµ¼°·þÎñÆ÷µÈÖ®ºó£¬ÎÒ¸ü¼á¶¨ÁËѧϰjavaµÄ¾öÐÄ¡£µ«ÊÇÎÒÒ²µ£ÐÄ×Ô¼ºÑ§²»°¡ºÃ¡£ºÜ¶à¶«Î÷¶¼ÊÇÔÚÀÏʦµÄÀÏÁìµ¼ÏÂÍê³ÉµÄ£ ......
ÕâÊÇÎÒÔÚ°²×°ÍêUbuntu9.10ºó´ÓÍøÉÏËѵÄһЩ¹ØÓÚÅäÖÃJava¿ª·¢»·¾³µÄ×ÊÁÏ£¬ÔÚÕâÀïÒªÌØ±ð¸ÐлÔÎÄ×÷ÕßµÄÐÁÇÚÀͶ¯
Ï£ÍûÄܰ﷽±ã¸ü¶àµÄÈË£¬ÎÒ»áÔÚUbuntuµÄʹÓùý³ÌÖмÌÐøÊÕ¼¯ºÍ´´×÷һЩÏà¹ØÖªÊ¶£¬Ï£ÍûÄܶԴó¼ÒÓÐËù°ïÖú£¡£¡£¡
×ªÔØÇë±êÃ÷³ö´¦£º
xxm19820127
http://blog.csdn.net/xxm19820127/archive/201 ......