码迷,mamicode.com
首页 > 其他好文 > 详细

Jna调用动态链接库

时间:2014-12-07 00:12:38      阅读:361      评论:0      收藏:0      [点我收藏+]

标签:jna   动态链接库   异步系统通信   

        最近由于工作需要,在和其它系统交互的问题上不仅仅是WebService的交互,还需要利用Java调用其它语言编写的动态链接库,例如编译好的dll文件.好,简单看一下这个问题的来源。

 

         我们的系统和其它系统进行交互的时候,需要网络这个阶段,这段期间数据很容易被截获,这就需要对一些敏感的数据进行加密。通常单个系统我们会用MD5进行加密,无法逆向破解,相对来说还是比较安全的,已经足够使用了。但是为了网络中传输的数据也是密文,这就需要再次进行加密了,所谓的私钥,公钥。经典的例如:DES,加强版3DES等。好先看一下简单流程:

 

bubuko.com,布布扣

 

 

        这种情况下,A系统是建立在B系统的基础之上的,随意加密算法我们需要和B用一套,一般情况下,用B系统语言写的(当然A也可以),A是利用Java进行开发的,B是利用delphi,C,C++等编写的,所以我们就需要利用Java来调用其他语言编译好的Dll等文件,就像我们Java的.class文件一样。好这里看一种比较方便简单使用的JNA。

 

        JNA(Java Native Access )提供一组Java工具类用于在运行期动态访问系统本地库(native library:如Window的dll)而不需要编写任何Native/JNI代码。开发人员只要在一个Java接口中描述目标native library的函数与结构,JNA将自动实现Java接口到native function的映射。

     

        优点:JNA可以让你像调用一般java方法一样直接调用本地方法。就和直接执行本地方法差不多,而且调用本地方法还不用额外的其他处理或者配置什么的,也不需要多余的引用或者编码,使用很方便。

 

       简单看一下流程操作,首先下载jna.jar,并引入到项目中,然后看一下下边的代码

 

package com.ljh.until;

import com.sun.jna.Native;
import com.sun.jna.win32.StdCallLibrary;

/**
 * 测试jna调用本地接口
 * @author ljh
 *
 */
public class testJna {
	//上层接口
	//需要继承stdCallLibrary,一种协议,当然也可以直接继承Library上层接口,看对方的DLL文件的编写遵从哪一种协议, 这个是jna标准  
    //必须定义一个接口,将Dll文件的方法提取出来,注意类型的对应
	public interface EncrypStrTest extends StdCallLibrary {
		
		 //加载动态链接库,把库dll文件默认放到系统C盘window目录下的system32文件夹下或者到java的bin目录  
		EncrypStrTest instance = (EncrypStrTest)Native.loadLibrary("Dll文件的名字", EncrypStrTest.class);
		//定义接口,
		public String EncrypString(String aSrc, String aKey);//定义接口

	}
	
	//测试
	public static void main(String[] args) {
		try{
			EncrypStrTest jnaDemo=EncrypStrTest.instance;

			String resultString=jnaDemo.EncrypString("参数一","参数二");
			System.out.println("会有结果么:" + resultString);
		}catch(Exception e){  
            e.printStackTrace();  
        }  
	}

}


 

        这样我们就可以调用其它语言的dll控件了,而windows本身提供了很多dll控件我们就可以通过JNA进行本地方法的调用了,这样大大扩展了Java程序的面。非常方便的,当然了还有其他方法,不断学习中……

 

Jna调用动态链接库

标签:jna   动态链接库   异步系统通信   

原文地址:http://blog.csdn.net/liujiahan629629/article/details/41780611

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!