Java»ù´¡ÖªÊ¶——JNIÈëÞµä
JNIÊÇJava Native InterfaceµÄËõд£¬Í¨¹ýʹÓÃnative·½·¨£¬Java¿ÉÒÔµ÷Óñ¾µØC/C++×Ó³ÌÐò¡£ÉùÃ÷Ò»¸ö±¾µØ×Ó³ÌÐòµÄ·½·¨ÊÇ£ºÔÚ·½·¨ÃûǰÌí¼ÓnativeÐÞÊΣ¬Èç
public native void myfun();
µ÷ÓøÃ×Ó³ÌÐòµÄ·½·¨Îª£º
static{
System.loadLibrary("myfun");
}
ÔÚWindowsÉÏ£¬ÉÏÃæµÄmyfun¼´Ö¸°üº¬ÓÃC/C++дµÄmyfun()µÄʵÌåµÄDLL——myfun.dll¡£ÏÂÃæÒÔNativeDemo³ÌÐòΪÀýÀ´ËµÃ÷ÔõÑùÔÚWindowsÏ£¨XP+VS2008+JDK1.6u17£©Ê¹ÓÃJNI¡£
1. ±àдԴ³ÌÐòNativeDemo.java
NativeDemo.javaÖÐÉùÃ÷ÁËÒ»¸ö±¾µØ×Ó³ÌÐòtest()£º
public native void test();
¸Ã×Ó³ÌÐò´ÓÖ÷³ÌÐò»ñµÃint±äÁ¿iµÄÖµ£¬¶ÔÆä¼Ó±¶£¬È»ºó·µ»Ø¸øÖ÷³ÌÐò¡£¾ßÌå´úÂëÈçÏ£º
// Using Native method
public class NativeDemo{
int i;
public static void main(String args[]){
NativeDemo ob=new NativeDemo();
ob.i=10;
System.out.println("This is ob.i before the native method: "+ob.i);
ob.test(); //call a native method
System.out.println("This is ob.i after the Native method: "+ob.i);
ob.test(); //call a native method
System.out.println("This is ob.i after the Native method: "+ob.i);
}
// declare native method
public native void test();
static{
// load DLL that contains static method
System.loadLibrary("NativeDemo");
}
}
2. ±àÒëNativeDemo.java
javac NativeDemo.java
µÃµ½NativeDemo.class
3. ʹÓÃjavah.exeÉú³ÉNativeDemo.h
javah -jni NativeDemo
javah.exeÔÚ%JAVA_HOME%\binÏ£¬Éú³ÉµÄNativeDemo.hÈçÏ£º
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class NativeDemo */
#ifndef _I
Ïà¹ØÎĵµ£º
Javaѧϰ´ÓÈëÃŵ½¾«Í¨
Ò»¡¢ JDK (Java Development Kit)
JDKÊÇÕû¸öJavaµÄºËÐÄ£¬°üÀ¨ÁËJavaÔËÐл·¾³£¨Java Runtime Envirnment£©£¬Ò»¶ÑJava¹¤¾ßºÍJava»ù´¡µÄÀà¿â(rt.jar)¡£²»ÂÛʲôJavaÓ¦Ó÷þÎñÆ÷ʵÖʶ¼ÊÇÄÚÖÃÁËij¸ö°æ±¾µÄJDK¡£Òò´ËÕÆÎÕJDKÊÇѧºÃJavaµÄµÚÒ»²½¡£×îÖ÷Á÷µÄJ ......
ÍÆ¼öÒ»¸ö¾ø¶Ô¾µäµÄÊÓÆµ£¬²»ºÃµÄÄÃשÅÄÎÒ°¡
ÎÞÒâÖÐÔÚÍøÉÏÏÂÔØµ½Ò»Ì×ÊÓÆµ£¬ÒѾȫ³ÌÌýÍ꣬¸Ð¾õ·Ç³£²»´í¡£´ÓJava»ù´¡¿ªÊ¼ÑÐò½¥½ø£¬ÓÉdzÈëÉÊÓÆµÖв»½ö¾«
±ÙµÄ½²½âÁËJava¿ª·¢µÄ֪ʶ£¬¶øÇÒÈÚÈëÁ˺ܶàѧϰ·½·¨µÄ½²½âºÍ±à³Ì˼ÏëµÄÒýµ¼£¬×ÛºÏÀ´Ëµ¿ÉÒÔÈË¿°³ÆÈëÃŵľµäÖ®
×÷!
ÌØ±ðÍÆ¼ö¸ø´ó¼Ò£¬´ó¼Ò¹²Í¬½ø²½¡£°ÑÍøÖ·¸ø´ ......
±¾ÎÄÕë¶Ôjdk6.0ÖÐjava.lang.ClassÀàµÄAPI½øÐÐÁ˼òµ¥µÄʵÀýÓ¦Óã¬Àý×Ó¼òµ¥Ò×¶®£¬±È½ÏÊʺÏÈëÃż¶ÔĶÁ¡£
ʵÀý¼ò½é£º
/*
*IncludeInnerClassÀàÖаüº¬ÁËÈýÖÖ·ÃÎÊ¿ØÖƵÄÄÚ²¿À࣬²¢ÇÒÒÔÕâÈý¸öÄÚ²¿ÀàµÄÒýÓöÔÏóºÍÒ»¸öÕûÐÍÊý×÷ΪÊôÐÔ£¬ÔÚÍⲿÀàµÄ·½·¨Öзֱðµ÷ÓÃÁË ÄÚ²¿ÀàµÄ·½·¨
*ÍⲿÀàÓÐÁ½¸ö¹¹Ôì·½·¨£¬ ......
ĿǰÒÔEclipseΪÖ÷µÄÖØÁ¿¼¶¿ª·¢¹¤¾ß´óÐÐÆäµÀ.ËäÈ»¼«Îª·½±ã.µ«Èí¼þ°²×°¶ÔÓÚϵͳÅäÖò»¸ßµÄµçÄÔ»òÕßСÏîÄ¿¿ª·¢·Ç³£²»Àû.ÔÚÒÆÖ²¹ý³ÌÖл¹ÓÐÅäÖÃÎÊÌâ.±È½ÏÂé·³.Òò´Ë¶ÔÓÚһЩ³¬Ð¡ÏîÄ¿,ʹÓÃÇáÁ¿¼¶µÄ¿ª·¢·½·¨,ÏÔµÃÓÉΪ±ØÒª.Ëùν³¬ÇáÁ¿¼¶,¾ÍÊÇÓÃ×î¼òµ¥µÄ¹¤¾ßÍê³ÉJAVAϵͳµÄ¿ª·¢.ÔÚ¿ª·¢µ±ÖÐÒ²¿ÉÒÔÁ˽â ......
Õ⼸ÌìÒ»Ö±ÔÚÑо¿FlexÖÐRemoteObjectÓëjavaµÄ½»»¥ÎÊÌ⣬¿ÉÒ»Ö±²»³É¹¦£¬½ñÌìÖÕÓڳɹ¦ÁË£¬µ«ÊÇ»¹ÓÐһЩÒÉ»ó£¬Ó¦¸Ã¼ÌÐøÅ¬Á¦¡£
ÏÂÃæÊÇÎҵľ¹ýºÍÅöµ½µÄ´íÎó£º
£¨1£©ÏÂÔØºÍ°²×°lcds.
ÔÚ°²×°Ä¿Â¼Ï»áÓÐÈçÏÂÎļþ£¬ÆäÖÐlcds.war¿ÉÒÔ×÷ΪÎÒÃÇ¿ª·¢FlexÓëjava½»»¥µÄÄ£°æ£¬°ÑÕâ¸öÎļþ¿¼µ½ÄãtomcatµÄwebappsÏ£¨µ±È»ÕâÖÖÇé¿öÊÇÄ ......