易截截图软件、单文件、免安装、纯绿色、仅160KB

JNA实现Java调用Fortran

在成功实现Java调用C++之后,接下来想到能否通过JNA实现Java调用Fortran,今天试验了一下,还是比较容易的。
网上有一个Java调用F95的例子,但是我考虑不仅要实现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 共享锁和条件变量一二

多线程之间需要协调工作。例如,浏览器的一个显示图片的线程displayThread想要执行显示图片的任务,必须等待下载线程downloadThread将该图片下载完毕。如果图片还没有下载完,displayThread可以暂停,当downloadThread完成了任务后,再通知displayThread“图片准备完毕,可以显示了”,这时,displayThread继续执 ......

ECLIPSE 调试java 源码

引用
1.点 “window”-> "Preferences" -> "Java" -> "Installed JRES"
2.此时"Installed JRES"右边是列表窗格,列出了系统中的 JRE 环境,选择你的JRE,然后点边上的 "Edit...", 会出现一个窗口(Edit JRE)
3.选中rt.jar文件的这一项:“c:\program files\java\jre_1.5.0_06\lib\rt.jar” ......

java虚拟机jvm关于内存的设置与调优

JVM内存的设置的原理
 
默认的java虚拟机的大小比较小,在对大数据进行处理时java就会报错:java.lang.OutOfMemoryError。
设置jvm内存的方法,对于单独的.class,可以用下面的方法对Test运行时的jvm内存进行设置。
java -Xms64m -Xmx256m Test
-Xms是设置内存初始化的大小
-Xmx是设置最大能够使用内存的大小( ......

JAVA 定时器

(1)Timer.schedule(TimerTask task,Date time)安排在制定的时间执行指定的任务。
(2)Timer.schedule(TimerTask task,Date firstTime ,long period)安排指定的任务在指定的时间开始进行重复的固定延迟执行.
(3)Timer.schedule(TimerTask task,long delay)安排在指定延迟后执行指定的任务.
(4)Timer.schedule(TimerTask ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号