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
Ïà¹ØÎĵµ£º
Ò»£® Incident
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
......
ÎÒÏÖÔÚ¸øÄãÒ»¸öJAVAºÍJSPÖ®¼äµÄ¹ØÏµ,ÒÔ¼°JAVAµÄÍêÕûÈÏʶ
JAVA·ÖΪJ2EE,J2SE.J2ME,ÏÂÃæ·Ö±ð½éÉÜ:
Ò».J2EE£ºJava 2 Platform Enterprise Edition ÆóÒµ°æ£¬ÓÃÓÚÆóÒµÓ¦Óã¬Ö§³Ö·Ö²¼Ê½²¿Êð¡£
J2EEƽ̨ÓÉÒ»ÕûÌ×·þÎñ£¨Services£©¡¢Ó¦ÓóÌÐò½Ó¿Ú£¨APIs£©ºÍÐÒé¹¹³É£¬
Ëü¶Ô¿ª·¢»ùÓÚWebµÄ¶à²ãÓ¦ÓÃÌṩÁ˹¦ÄÜÉϵÄÖ§³Ö¡£Ëü°ü ......
Eclipse ¾ßÌåµÄ¾Í²»ËµÁË£¬¶¼ÊìϤÁËO(¡É_¡É)O~£¬ ×î´óµÄÌØµã£ºËüÄܽÓÊÜÓÉjava¿ª·¢Õß×Ô¼º±àдµÄ¿ª·ÅÔ´´úÂëµÄ²å¼þ¡£ NetBeans NetBeansÊÇsunµÄΨһһ¿îÍêÈ«¿ªÔ´µÄ²úÆ·£¬ÔÚ¹¦ÄÜÉÏÓëEclipseÀàËÆ£¬µ«Ò²ÓÐÒ»Ð©Çø±ð¡£È磺Ëü¼¯³ÉÁË×îÁ÷ÐеÄAjax£¬EclipseÐèÒª°²×°µÚÈý·½²å¼þ£¬Eclipse¹ÄÀøÊ¹ÓÃswt×÷ΪjavaGUI¿â ......
ÐòÁл¯µÄ¹ý³Ì¾ÍÊǶÔÏóдÈë×Ö½ÚÁ÷ºÍ´Ó×Ö½ÚÁ÷ÖжÁÈ¡¶ÔÏó¡£½«¶ÔÏó״̬ת»»³É×Ö½ÚÁ÷Ö®ºó£¬¿ÉÒÔÓÃjava.io°üÖеĸ÷ÖÖ×Ö½ÚÁ÷ÀཫÆä±£´æµ½ÎļþÖУ¬¹ÜµÀµ½ÁíÒ»Ïß³ÌÖлòͨ¹ýÍøÂçÁ¬½Ó½«¶ÔÏóÊý¾Ý·¢Ë͵½ÁíÒ»Ö÷»ú¡£¶ÔÏóÐòÁл¯¹¦Äܷdz£¼òµ¥¡¢Ç¿´ó£¬ÔÚRMI¡¢Socket¡¢JMS¡¢EJB¶¼ÓÐÓ¦Ó᣶ÔÏóÐòÁл¯ÎÊÌâÔÚÍøÂç±à³ÌÖв¢²»ÊÇ× ......
ÕâÊÇÎÒÔÚ°²×°ÍêUbuntu9.10ºó´ÓÍøÉÏËѵÄһЩ¹ØÓÚÅäÖÃJava¿ª·¢»·¾³µÄ×ÊÁÏ£¬ÔÚÕâÀïÒªÌØ±ð¸ÐлÔÎÄ×÷ÕßµÄÐÁÇÚÀͶ¯
Ï£ÍûÄܰ﷽±ã¸ü¶àµÄÈË£¬ÎÒ»áÔÚUbuntuµÄʹÓùý³ÌÖмÌÐøÊÕ¼¯ºÍ´´×÷һЩÏà¹ØÖªÊ¶£¬Ï£ÍûÄܶԴó¼ÒÓÐËù°ïÖú£¡£¡£¡
×ªÔØÇë±êÃ÷³ö´¦£º
xxm19820127
http://blog.csdn.net/xxm19820127/archive/201 ......