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Ö¸¶¨Êä
Ïà¹ØÎĵµ£º
ÊýÄêÇ°£¬µ±ºÍÒ»¸öÈí¼þÍŶÓÒ»ÆðÓà Java ÓïÑÔ±àдһ¸öÓ¦ÓóÌÐòʱ£¬ÎÒÌå»áµ½±ÈÒ»°ã³ÌÐòÔ±¶àÖªµÀÒ»µã¹ØÓÚ Java ¶ÔÏóÐòÁл¯µÄ֪ʶËù´øÀ´µÄºÃ´¦¡£
´óÔ¼Ò»ÄêÇ°£¬Ò»¸ö¸ºÔð¹ÜÀíÓ¦ÓóÌÐòËùÓÐÓû§ÉèÖõĿª·¢ÈËÔ±£¬¾ö¶¨½«Óû§ÉèÖô洢ÔÚÒ»¸ö Hashtable ÖУ¬È»ºó½«Õâ¸ö Hashtable ÐòÁл¯µ½´ÅÅÌ£¬ÒÔ±ã³Ö¾Ã»¯¡£µ±Óû§¸ü¸ÄÉèÖÃʱ£¬±ãÖØн« ......
JVMÄÚ´æµÄÉèÖõÄÔÀí
ĬÈϵÄjavaÐéÄâ»úµÄ´óС±È½ÏС£¬ÔÚ¶Ô´óÊý¾Ý½øÐд¦Àíʱjava¾Í»á±¨´í£ºjava.lang.OutOfMemoryError¡£
ÉèÖÃjvmÄÚ´æµÄ·½·¨£¬¶ÔÓÚµ¥¶ÀµÄ.class£¬¿ÉÒÔÓÃÏÂÃæµÄ·½·¨¶ÔTestÔËÐÐʱµÄjvmÄÚ´æ½øÐÐÉèÖá£
java -Xms64m -Xmx256m Test
-XmsÊÇÉèÖÃÄÚ´æ³õʼ»¯µÄ´óС
-XmxÊÇÉèÖÃ×î´óÄܹ»Ê¹ÓÃÄÚ´æµÄ´óС£¨ ......
package Sort;
/**
* ÅÅÐò²âÊÔÀà
* ÅÅÐòËã·¨µÄ·ÖÀàÈçÏ£º
* 1.²åÈëÅÅÐò£¨Ö±½Ó²åÈëÅÅÐò¡¢ÕÛ°ë²åÈëÅÅÐò¡¢Ï£¶ûÅÅÐò£©£»
* 2.½»»»ÅÅÐò£¨Ã°ÅÝÅÅÐò¡¢¿ìËÙÅÅÐò£©£»
* 3.Ñ¡ÔñÅÅÐò£¨Ö±½ÓÑ¡ÔñÅÅÐò¡¢¶ÑÅÅÐò£©£»
* 4.¹é²¢ÅÅÐò£»
* 5.»ùÊýÅÅÐò¡£
*
* ¹ØÓÚÅÅÐò·½·¨µÄÑ¡Ôñ£º
* (1)Èôn½ÏС(Èçn≤50)£¬¿É²ÉÓÃÖ±½Ó²åÈ ......
½Ó´¥javaÕýÔò±í´ïʽÓÐÒ»ÄêµÄʱ¼äÁË£¬ºÃ¾ÃûÓи´Ï°ÁË£¬ÏÖÔÚд¸öÀ´¸´Ï°Ò»Ï£º
package com.fengfei.test;
public class GetNumber {
/**
* ÌåÑéJavaµÄÕýÔò±í´ïʽ£¬ÕÒ³ö×Ö·û´®sÖеÄÊý×Ö
* @param args
*/
public static void main(String[] args) {
& ......