gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15947
  • QQ554730525
  • 铜币25339枚
  • 威望15364点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
阅读:1757回复:0

[转帖]Java本地调用C/C++的动态库

楼主#
更多 发布于:2008-06-16 09:53
前段日子投身考博的复习,文章更新不太及时。总算告一段落,于是开始着手实现基于Java的OGC <a href="http://www.opengeospatial.org/standards/requests/28" target="_blank" >WPS</a>规范,为了方便使用SVN存储库进行代码管理以及尝试一下Tomcat 6的新功能,IDE采用了Netbeans 6.0 M7版本。
<br>关于WPS的Java实现,计划中的三部分工作是:1.改进已有WPS的实现,简化算法的XML配置,集成<a href="http://geotools.codehaus.org/" target="_blank" >Geotools</a>的空间分析函数,从中选择增加新的WPS操作到Algorithm库中。2.参考<a href="http://pywps.wald.intevation.org/" target="_blank" >pyWPS</a>的
命令行调用方式,在Linux下通过Java
IO包里的Runtime.getRuntime().exec()方法给GRASS命令行传入执行参数,通过命令调用的方式将GRASS的功能进行服务
化提升。3.通过本地接口JNI来调用已独立封装好的GRASS
API,直接将参数传入so动态库,通过GRASS的动态库来获得地理数据分析功能。目前第一和第二步的技术路子已经走通,第三步实现则较为复杂,预计可
能需要做不少工作。</p>
<p>本地接口(Java Native Interface)是JDK的一部分,允许Java 代码使用以其它语言编写的代码和代码库。关于JNI的详细使用方法,可以找到不错的<a href="http://mindprod.com/jgloss/jni.html#C" target="_blank" >教程</a>,在IBM DeveloperWorks上,也有关于Linux下使用本地接口的<a href="http://www.ibm.com/developerworks/cn/java/l-linux-jni/" target="_blank" >文章</a>。JNI
将Java 虚拟机嵌入本机应用程序,可以实现从Java
程序调用C/C++以及从C/C++程序调用Java代码。本机方法调用C的动态库,需要使用Javah命令重新生成引用C/C++源文件的头文件,定义
JNI 的库文件和本机头文件,首先在Java类中声明要调用的本机语言方法,并载入包含本机代码的共享库,然后调用类库中的本机方法。</p>
<p>目前Java开发使用的IDE逐渐从<a href="http://www.eclipse.org/" target="_blank" >Eclipse</a>向<a href="http://www.netbeans.org/" target="_blank" >Netbeans</a>过渡,相比较来说,Netbeans近来的发展势头让人看到Java IDE新的希望,无论在功能上还是在代码感知的响应速度上都不亚于Eclipse,作为用于代码编写的环境,在不安装任何各式庞杂插件的基础上,可以带给程序员不错的体验。</p>
喜欢0 评分0
游客

返回顶部