Java本地调用C/C++的动态库

前段日子投身考博的复习,文章更新不太及时。总算告一段落,于是开始着手实现基于Java的OGC WPS规范,为了方便使用SVN存储库进行代码管理以及尝试一下Tomcat 6的新功能,IDE采用了Netbeans 6.0 M7版本。

关于WPS的Java实现,计划中的三部分工作是:1.改进已有WPS的实现,简化算法的XML配置,集成Geotools的空间分析函数,从中选择增加新的WPS操作到Algorithm库中。2.参考pyWPS的命令行调用方式,在Linux下通过Java IO包里的Runtime.getRuntime().exec()方法给GRASS命令行传入执行参数,通过命令调用的方式将GRASS的功能进行服务化提升。3.通过本地接口JNI来调用已独立封装好的GRASS API,直接将参数传入so动态库,通过GRASS的动态库来获得地理数据分析功能。目前第一和第二步的技术路子已经走通,第三步实现则较为复杂,预计可能需要做不少工作。

本地接口(Java Native Interface)是JDK的一部分,允许Java 代码使用以其它语言编写的代码和代码库。关于JNI的详细使用方法,可以找到不错的教程,在IBM DeveloperWorks上,也有关于Linux下使用本地接口的文章。JNI将Java 虚拟机嵌入本机应用程序,可以实现从Java 程序调用C/C++以及从C/C++程序调用Java代码。本机方法调用C的动态库,需要使用Javah命令重新生成引用C/C++源文件的头文件,定义JNI 的库文件和本机头文件,首先在Java类中声明要调用的本机语言方法,并载入包含本机代码的共享库,然后调用类库中的本机方法。

目前Java开发使用的IDE逐渐从EclipseNetbeans过渡,相比较来说,Netbeans近来的发展势头让人看到Java IDE新的希望,无论在功能上还是在代码感知的响应速度上都不亚于Eclipse,作为用于代码编写的环境,在不安装任何各式庞杂插件的基础上,可以带给程序员不错的体验。

转载请注明出处:工作与兴趣记录本 » Java本地调用C/C++的动态库

相关文章

评论 (9)