JNAʵÏÖJavaµ÷ÓÃFortran
Ôڳɹ¦ÊµÏÖJavaµ÷ÓÃC++Ö®ºó£¬½ÓÏÂÀ´Ïëµ½ÄÜ·ñͨ¹ýJNAʵÏÖJavaµ÷ÓÃFortran£¬½ñÌìÊÔÑéÁËһϣ¬»¹ÊDZȽÏÈÝÒ׵ġ£
ÍøÉÏÓÐÒ»¸öJavaµ÷ÓÃF95µÄÀý×Ó£¬µ«ÊÇÎÒ¿¼ÂDz»½öҪʵÏÖF95µÄµ÷Ó㬻¹ÒªÊµÏÖF77µÄµ÷Óã¬ËùÒÔ·ÑÁËһЩÖÜÕÛ¡£
ÎÊÌâµÄ¹Ø¼üÔÚÓÚF77Ϊ¹ý³ÌÃû×Ô¶¯Ìí¼ÓÁËÒ»¸öβ²¿µÄÏ»®Ïߣ¬ËùÒÔsub1Õâ¸ö¹ý³Ì£¬µ½JavaÒ»¶Ë£¬¾Í±ä³ÉÁËsub1_£¬ÖªµÀÁËÕâÒ»µã£¬ºóÃæ¾Í¼òµ¥ÁË¡£
1¡¢´´½¨Ò»¸ö¶¯Ì¬Á´½Ó¿âÏîÄ¿FortranDLL£¬Ð½¨Ò»¸ö¼òµ¥µÄfortranÔ´³ÌÐòfor1.f£º
subroutine sub1(i)
INTEGER i;
PRINT*, "SUB1 CALLED"
PRINT*, i
END subroutine
±àÒë´úÂëÉú³ÉlibFortranDLL.dll¡£
2¡¢Ð½¨Ò»¸öJavaÏîÄ¿£¬°üº¬JNA¿â
´´½¨Ò»¸ö¶¯Ì¬¿â½Ó¿Ú´úÂëFLib.java£º
import com.sun.jna.Library;
import com.sun.jna.ptr.ByReference;
public interface FLib extends Library {
void sub1_(ByReference i);
}
´´½¨Ò»¸öÖ÷³ÌÐòMain.java
import com.sun.jna.Native;
import com.sun.jna.ptr.IntByReference;
public class Main {
public static void main(String[] args) {
// Loading dynamically the library
FLib lib2 = (FLib) Native.loadLibrary("libFortranDLL", FLib.class);
IntByReference a = new IntByReference(1234);
lib2.sub1_(a);
}
}
×¢Ò⣬¹Ø¼üÔÚÓÚ½Ó¿Úµ±ÖеÄsub_Õâ¸öÃüÃû¹æÔò£¬·ñÔòÎÞ·¨ÕÒµ½ÕÒµ½Ö¸¶¨¹ý³Ì£¬ÁíÍâĬÈÏÇé¿öÏ£¬fortranʹÓÃÒýÓòÎÊý£¬ËùÒÔ²»Äܼòµ¥ÊµÓÃint×÷Ϊ²ÎÊý£¬±ØÐëʵÓÃÒýÓòÎÊý¡£
ÔËÐгÌÐò£¬µÃµ½ÈçϽá¹û£º
run£º
SUB1 CALLED
1234
³É¹¦Éú³É£¨×Üʱ¼ä£º1 Ã룩
3¡¢G95µÄµ÷Óøü¼òµ¥Ò»Ð©£¬¿ÉÒÔÖ±½ÓʹÓÃbindÖ¸¶¨Êä
Ïà¹ØÎĵµ£º
³£³£ÐèÒªµÝ¹éµÄÌæ»»ÎļþÄÚÈÝ£¬Èç×î½üÎÒÏëдÁ˸öjEdit²å¼þ£¬jEditÌṩÁËÒ»¸ö²å¼þÄ£°å£¬ÎÒֻҪȫ²¿Ì滻һϾͳÉÁËÎÒ×Ô¼ºµÄ¹¤³Ì¡£ÔÚlinuxÏ£¬ÕâºÃ°ì£¬shellÀ´¸ã¶¨£¬µ«ÔÚWindowsÏ»òÕß²»ÊìϤshell¾ÍµÃÏëµãÆäËû°ì·¨À´°ìÁË£¬EditPlus¿ÉÒÔ£¬UEÒ²¿ÉÒÔ£¬²»¹ý²»Ì«·½±ãµÄÊÇÎļþÃû²»ºÃÌæ»»£¬ÒÔǰ¸ø×Ô¼ºÐ´¹ýÒ»¸öС¹¤¾ßÀ´³ÉÅú¸ÄMP3µÄÃû×Ö£ ......
²ÊÎåÁ¬ÖéÓÎÏ·¿ª·¢¹ý³Ì
²ÊÎåÁ¬Ö飬һ¿ªÊ¼½Ð“Îå²ÊÁ¬Ö锣¬Í¬Ñ§¿¹Òé˵²»»áÍæ£¬ÒòΪËýÀí½â³ÉÁËÒª°ÑÎåÖÖ²»Í¬ÑÕÉ«µÄÇòÁ¬³ÉÒ»Ïß²ÅÄÜÓ®£¬¿¼Âǵ½Õâ¸ö±êÌâµÄÈ·ÒýÈËÎó½â£¬ÓÎÏ·ÓÖûÓÐÈκÎ˵Ã÷£¬×îÖÕ°ÑÃû³Æ¸Ä³ÉÁË“²ÊÎåÁ¬Ö锡£ÕâÊÇÒ»¸öºÜ¾µäµÄСÓÎÏ·£¬ºÜ¶àÊÖ»úÀï¶¼ÓУ¬×î½üÒòΪѧϰjava£¬×÷ΪÁ·Ï°£¬°ÑÕâ¸öÓÎÏ·×ö ......
Ò».ÔõÑùÓÃsocket½øÐпͻ§Óë·þÎñÆ÷ͨÐÅ
ÔÚJavaÖÐÓÃsocket½øÐпͻ§/·þÎñÆ÷Ö®¼äµÄͨÐűà³Ì¡£SocketÊÇÁ½¸öʵÌåÖ®¼ä½øÐÐͨÐŵÄÓÐЧ¶Ëµã¡£Í¨¹ýsocket¿ÉÒÔ»ñµÃÔ´IPµØÖ·ºÍÔ´¶Ë¿Ú¡¢ÖÕµãIPµØÖ·ºÍÖÕµã¶Ë¿Ú¡£Óû§¿ÉÒÔ½«¶à¸ösocketÁ¬Èëͬһ¸ö¶Ë¿Ú£¬ÒÔ±ã¶ÔÓÚµ¥¸ö¶Ë¿Ú¿ÉÒÔÓжà¸öÁ¬½Ó¡£Í¨¹ýsocket¿Í»§/·þÎñÆ÷±à³Ì¿ÉÒÔ´´½¨Ò»¸öÄܱ»Ðí¶àÈËÊ¹Ó ......
1£© ¾ßÌåÀ಻ÊÇÓÃÀ´¼Ì³ÐµÄ¡£Äܱ»¼Ì³ÐµÄÒ»¶¨ÊdzéÏóÀà¡£
Èç¹ûÔÚÒ»¸öÔʼµÄÉè¼ÆÀÓÐÁ½¸ö¾ßÌåÀ࣬ÀàAºÍÀàB,ÀàBÊÇÀàAµÄ×ÓÀ࣬ÄÇô×îºÃµÄÐ޸ķ½°¸ÊÇ£º
½¨Á¢Ò»¸ö³éÏ󣨻òÕß½Ó¿Ú£©C£¬È»ºóÈÃÀàAºÍÀàB³ÉΪÀàCµÄ×ÓÀà
2)³éÏóÀàÓ¦¾¡¿ÉÄܵÄÓµÓжàµÄ¹²Í¬´úÂë
Ò»¸ö¶ÔÏó´Ó³¬Àà¼Ì³Ð¶øÀ´µÄ´úÂ룬ÔÚ²»Ê¹ÓÃʱ²»»áÔì³É¶Ô×ÊÔ´µÄÀ ......
¿É´ÓIOµÄÀà²ã´Î£¬IO¿ò¼ÜµÄÉè¼ÆÄ£Ê½À´ÂÛÊö¡£
×ÜÌåÀ´Ëµ£¬IO¿ÉÒÔ·ÖΪ×Ö½ÚÁ÷ºÍ×Ö·ûÁ÷£¬²»Í¬ÔÚÓÚ×Ö·ûÁ÷ÓÉ×Ö½ÚÁ÷°ü×°¶øÀ´£¬ÔÚIO¶ÁÈëÖ®ºó¾¹ýJVM´¦Àí£¬°Ñ×Ö½ÚÁ÷ת»»³É×Ö·ûÁ÷¡£¶ø×Ö·ûÁ÷µÄ×Ö·û²ÉÓÃÄÄÖÖ×Ö·û±àÂëʵÏÖÓÉJVMĬÈϱàÂë¾ö¶¨¡£
¶øÃ¿¸öÁ÷¶¼·ÖÊäÈëºÍÊä³ö£¬ËùÒÔ£¬×ÜÌåÀ´Ëµ£¬IOÓÐËĸö¶¥²ãÀࣺ
InputStream
OutputStream ......