JNI(Java+Native+Interface£¬Java±¾µØ½Ó¿Ú)¼¼Êõ´ó¼Ò¶¼²»Ä°Éú£¬Ëü¿ÉÒÔ°ïÖú½â¾öJava·ÃÎʵײãÓ²¼þµÄ¾ÖÏÞºÍÖ´ÐÐЧÂʵÄÌá¸ß¡£¹ØÓÚJNIµÄ¿ª·¢£¬´ó¶àÊý×ÊÁÏÌÖÂ۵ͼÊÇÈçºÎÓÃC/C++ÓïÑÔ¿ª·¢JNI£¬ÉõÖÁÓÚJDKÒ²ÌṩÁËÒ»¸öjavah¹¤¾ßÀ´×Ô¶¯Éú³ÉCÓïÑÔ³ÌÐò¿ò¼Ü¡£µ«ÊÇ£¬¶ÔÓÚ¹ã´óµÄDelphi³ÌÐòÔ±À´Ëµ£¬ÄѵÀ¾Í²»ÄÜÓÃ×Ô¼ºÏ²°®µÄDelphiÓëJava»¥Í¨ÏûÏ¢ÁËÂð£¿
¡¡¡¡Í¨¹ý¶ÔjavahÉú³ÉµÄC³ÌÐò¿ò¼ÜºÍJDKÖеÄjni.hÎļþµÄ·ÖÎö£¬ÎÒÃÇ·¢ÏÖ£¬JavaÀûÓÃJNI·ÃÎʱ¾µØ´úÂëµÄ¹Ø¼üÔÚÓÚjni.hÖж¨ÒåµÄJNINativeInterface_Õâ¸ö½á¹¹(Struct)£¬Èç¹ûÓÃDelhpiÓïÑÔ¸ÄдËüµÄ¶¨Ò壬Ӧ¸ÃÒ²¿ÉÒÔ¿ª·¢JNIµÄ±¾µØ´úÂë¡£ÐÒÔ˵ÄÊÇ£¬ÔÚÍøÉÏÓÐÏֳɵĴúÂë¿ÉÒÔ°ïÖúÄãÍê³ÉÕâ¸ö·±ÔӵŤ×÷£¬ÔÚhttp://delphi-jedi.orgÉÏÌṩÁËÒ»¸öjni.pasÎļþ£¬¾ÍÊÇÓÃDelphiÓïÑÔÖØÐ´µÄjni.h¡£ÎÒÃÇÖ»ÐèÔÚ×Ô¼ºµÄDelphi¹¤³ÌÖмÓÈëjni.pas¾Í¿ÉÒÔ·½±ãµØ¿ª·¢³ö»ùÓÚDelphiÓïÑÔµÄJNI±¾µØ´úÂë¡£
¡¡¡¡¡¡¡¡±¾ÎĽ«ÀûÓÃjni.pas£¬ÌÖÂÛÓÃDelphiÓïÑÔ¿ª·¢JNI±¾µØ´úÂëµÄ»ù±¾·½·¨¡£
ÏÈÀ´¿´Ò»¸ö¾µäµÄHelloWorldÀý×Ó¡£±àдÒÔÏÂJava´úÂ룺
class+HelloWorld
{
public+native+void+displayHelloWorld();+
static
{
S ......
JNI(Java+Native+Interface£¬Java±¾µØ½Ó¿Ú)¼¼Êõ´ó¼Ò¶¼²»Ä°Éú£¬Ëü¿ÉÒÔ°ïÖú½â¾öJava·ÃÎʵײãÓ²¼þµÄ¾ÖÏÞºÍÖ´ÐÐЧÂʵÄÌá¸ß¡£¹ØÓÚJNIµÄ¿ª·¢£¬´ó¶àÊý×ÊÁÏÌÖÂ۵ͼÊÇÈçºÎÓÃC/C++ÓïÑÔ¿ª·¢JNI£¬ÉõÖÁÓÚJDKÒ²ÌṩÁËÒ»¸öjavah¹¤¾ßÀ´×Ô¶¯Éú³ÉCÓïÑÔ³ÌÐò¿ò¼Ü¡£µ«ÊÇ£¬¶ÔÓÚ¹ã´óµÄDelphi³ÌÐòÔ±À´Ëµ£¬ÄѵÀ¾Í²»ÄÜÓÃ×Ô¼ºÏ²°®µÄDelphiÓëJava»¥Í¨ÏûÏ¢ÁËÂð£¿
¡¡¡¡Í¨¹ý¶ÔjavahÉú³ÉµÄC³ÌÐò¿ò¼ÜºÍJDKÖеÄjni.hÎļþµÄ·ÖÎö£¬ÎÒÃÇ·¢ÏÖ£¬JavaÀûÓÃJNI·ÃÎʱ¾µØ´úÂëµÄ¹Ø¼üÔÚÓÚjni.hÖж¨ÒåµÄJNINativeInterface_Õâ¸ö½á¹¹(Struct)£¬Èç¹ûÓÃDelhpiÓïÑÔ¸ÄдËüµÄ¶¨Ò壬Ӧ¸ÃÒ²¿ÉÒÔ¿ª·¢JNIµÄ±¾µØ´úÂë¡£ÐÒÔ˵ÄÊÇ£¬ÔÚÍøÉÏÓÐÏֳɵĴúÂë¿ÉÒÔ°ïÖúÄãÍê³ÉÕâ¸ö·±ÔӵŤ×÷£¬ÔÚhttp://delphi-jedi.orgÉÏÌṩÁËÒ»¸öjni.pasÎļþ£¬¾ÍÊÇÓÃDelphiÓïÑÔÖØÐ´µÄjni.h¡£ÎÒÃÇÖ»ÐèÔÚ×Ô¼ºµÄDelphi¹¤³ÌÖмÓÈëjni.pas¾Í¿ÉÒÔ·½±ãµØ¿ª·¢³ö»ùÓÚDelphiÓïÑÔµÄJNI±¾µØ´úÂë¡£
¡¡¡¡¡¡¡¡±¾ÎĽ«ÀûÓÃjni.pas£¬ÌÖÂÛÓÃDelphiÓïÑÔ¿ª·¢JNI±¾µØ´úÂëµÄ»ù±¾·½·¨¡£
ÏÈÀ´¿´Ò»¸ö¾µäµÄHelloWorldÀý×Ó¡£±àдÒÔÏÂJava´úÂ룺
class+HelloWorld
{
public+native+void+displayHelloWorld();+
static
{
S ......
import java.io.FileInputStream;
public class FileCopy{
public static void main(String[] args){
try{
FileInputStream fis =new FileInputstream("c:\\wenjian.txt");//ÐèÒª×Ô¼ºÔÚcÅ̸ùĿ¼Ï½¨Á¢¸ÃÎļþ
FileOutputStream fos=new FileOutputStream("c:\\test.txt");//ÐèÒª×Ô¼ºÔÚcÅ̸ùĿ¼Ï½¨Á¢¸ÃÎļþ
int x=fis.read();//¶ÁÈ¡Îļþwenjian.txtÖеÄÄÚÈÝ
&nb ......
ÔÎÄÀ´×Ô£ºhttp://gocom.primeton.com/modules/newbb/item44444_44444.htm
1 »ù±¾ÐÅÏ¢
ͻ񻣼
ÏÖÔÚÓкܶàµÄ¹¤¾ß½«Java´úÂë´ò°üΪexeÎļþ£¬Ö´ÐÐʱ²»ÐèÒªÔÙ±àдÅú´¦ÀíÎļþ£¬»òÕßÔÚÃüÁîÐÐÊäÈ볤³¤µÄclasspathÐÅÏ¢£¬ÎªÓû§Ê¹ÓÃÌṩÁ˺ܴóµÄ·½±ã¡£ÕâÒ²ÊǺܶàÉÌÒµÈí¼þ³£³£Ê¹Óõķ½·¨¡£
×÷ÕߣºêÌì³
2 ½«Java´úÂë´ò°üΪexeÎļþ
ÏÖÔÚÓкܶàµÄ¹¤¾ß½«Java´úÂë´ò°üΪexeÎļþ£¬Ö´ÐÐʱ²»ÐèÒªÔÙ±àдÅú´¦ÀíÎļþ£¬»òÕßÔÚÃüÁîÐÐÊäÈ볤³¤µÄclasspathÐÅÏ¢£¬ÎªÓû§Ê¹ÓÃÌṩÁ˺ܴóµÄ·½±ã¡£ÕâÒ²ÊǺܶàÉÌÒµÈí¼þ³£³£Ê¹Óõķ½·¨¡£
½«Java´úÂë´ò°üΪexeÎļþ£¬Ò»°ãÐèÒªÁ½¸ö²½Ö裺
1. ±àд±¾µØ´úÂ룬´´½¨ÐéÄâ»ú£¬¼ÓÔØ²¢Ö´ÐÐMain Class¡£
2. ½«Java´úÂë´ò°üΪjarÎļþ£¬²¢Óë±¾µØ´úÂëexeÎļþºÏ²¢¡£
ÏÂÃæµÄ´úÂ룬»á¼ÓÔØjvm.dll£¬²¢µ÷ÓÃJNI_CreateJavaVMµ¼³öº¯Êý´´½¨JavaÐéÄâ»ú£¬µÃµ½JNIEnvÖ¸Õ룬Ȼºóµ ......
import java.io.UnsupportedEncodingException;
¡¡¡¡/**
¡¡¡¡* ת»»×Ö·û´®µÄ±àÂë
¡¡¡¡*/
¡¡¡¡public class ChangeCharset
{
¡¡¡¡/** 7λASCII×Ö·û£¬Ò²½Ð×÷ISO646-US¡¢Unicode×Ö·û¼¯µÄ»ù±¾À¶¡¿é */
¡¡¡¡public static final String US_ASCII = "US-ASCII";
¡¡¡¡/** ISO À¶¡×Öĸ±í No.1£¬Ò²½Ð×÷ ISO-LATIN-1 */
¡¡¡¡public static final String ISO_8859_1 = "ISO-8859-1";
¡¡¡¡/** 8 λ UCS ת»»¸ñʽ */
¡¡¡¡public static final String UTF_8 = "UTF-8";
¡¡¡¡/** 16 λ UCS ת»»¸ñʽ£¬Big Endian£¨×îµÍµØÖ·´æ·Å¸ßλ×Ö½Ú£©×Ö½Ú˳Ðò */
¡¡¡¡public static final String UTF_16BE = "UTF-16BE";
¡¡¡¡/** 16 λ UCS ת»»¸ñʽ£¬Little-endian£¨×î¸ßµØÖ·´æ·ÅµÍλ×Ö½Ú£©×Ö½Ú˳Ðò */
¡¡¡¡public static final String UTF_16LE = "UTF-16LE";
¡¡¡¡/** 16 λ UCS ת»»¸ñʽ£¬×Ö½Ú˳ÐòÓÉ¿ÉÑ¡µÄ×Ö½Ú˳Ðò±ê¼ÇÀ´±êʶ */
¡¡¡¡public static final String UTF_16 = "UTF-16";
¡¡¡¡/** ÖÐÎij¬´ó×Ö·û¼¯ */
¡¡¡¡public static final String GBK = "GBK";
¡¡¡¡/**
¡¡¡¡* ½«×Ö·û±àÂëת»»³ÉUS-ASCIIÂë
¡¡¡¡*/
¡¡¡¡public String toASCII(String str) t ......
JAVAÐòÁл¯µÄÁ½ÖÖ·½Ê½
//´ó¼Ò¶¼ÖªµÀSerializableÊÇÒ»¸ömark interface,¸æËßJVMÕâ¸ö¶ÔÏó¿ÉÒÔ±»×ª»»³É¶þ½øÖÆÁ÷À´´«Êä.
//Serializable ÔÚÎÒÃÇʵÏÖÕâ¸ö½Ó¿ÚµÄʱºò,ÎÒÃÇ¿ÉÒÔʹÓÃ4¸ö˽Óз½·¨À´¿ØÖÆÐòÁл¯µÄ¹ý³Ì:
//ÎÒÃÇÀ´¿´Ò»¸öÀý×Ó:
public class FooImpl implements java.io.Serializable
{
private String message;
public String getFoo()
{
return message;
}
public void setMessage( String message )
{
this.message = message;
}
private void writeObject( java.io.ObjectOutputStream out ) throws IOException
{
System.out.println( "writeObject invoked" );
out.writeObject( this.message == null ? "hohohahaha" : this.message );
}
private void readObject( java.io.ObjectInputStream in ) throws IOException, ClassNotFoundException
{
System.out.println( "readObject invoked" );
this.message = (String) in.readObject();
......
JavaÓïÑԵĹؼü×Ö£¬ÓÃÀ´±íʾһ¸öÓò²»ÊǸöÔÏó´®Ðл¯µÄÒ»²¿·Ö¡£µ±Ò»¸ö¶ÔÏó±»´®Ðл¯µÄʱºò£¬transientÐͱäÁ¿µÄÖµ²»°üÀ¨ÔÚ´®Ðл¯µÄ±íʾÖУ¬È»¶ø·ÇtransientÐ͵ıäÁ¿ÊDZ»°üÀ¨½øÈ¥µÄ
¡¡¡¡Java´úÂë
¡¡¡¡class A implements Serializable {
¡¡¡¡private String name;
¡¡¡¡transient private String address;
¡¡¡¡}
¡¡¡¡ÄÇôÄãÔÚ´®Ðл¯£¨IOÁ÷µÈ£©AÀàʱ ¸øËüµÄnameºÍaddressÊôÐÔ¸³Öµ£¬ÄÇôÄãÔÚÌáÈ¡Aʱ£¬Äõ½ÁËnameÊôÐÔ£¬µ«ÊÇÈ´Äò»µ½addressÊôÐÔ¡£ ......