JNA的使用

JNA据说比jni简单很多,这里有一篇介绍,用法简单、但性能比jni有所下降(基于jni):

http://blog.csdn.net/shendl/article/details/3589676/

es中用得更简单:

package org.elasticsearch.common.jna;

import com.sun.jna.Native;

import org.elasticsearch.common.logging.ESLogger;

import org.elasticsearch.common.logging.Loggers;

/**

*

*/

public class CLibrary {

private static ESLogger logger = Loggers.getLogger(CLibrary.class);

public static final int MCL_CURRENT = 1;

public static final int MCL_FUTURE = 2;

public static final int ENOMEM = 12;

static {

try {

Native.register("c");

} catch (NoClassDefFoundError e) {

logger.warn("JNA not found. native methods (mlockall) will be disabled.");

} catch (UnsatisfiedLinkError e) {

logger.warn("unable to link C library. native methods (mlockall) will be disabled.");

}

}

public static native int mlockall(int flags);

public static native int munlockall();

private CLibrary() {

}

}

时间: 2024-10-29 19:08:06

JNA的使用的相关文章

Atitit.java jna  调用c  c++ dll的原理与实践  总结  v2  q27

Atitit.java jna  调用c  c++ dll的原理与实践  总结  v2  q27 1. Jna简单介绍1 2. Jna范例halo owrld1 3. Jna概念2 3.1. (1)需要定义一个接口,继承自Library 或StdCallLibrary2 3.2. 2)接口内部定义2 4. 数据类型映射 NA官方给出的默认类型映射表如下:3 5.  JNA能完全替代JNI吗?3 6. 参考4 1. Jna简单介绍 原来使用JNI,你必须手工用C写一个动态链接库,在C语言中映射Ja

Jna调用动态链接库

最近由于工作需要,在和其它系统交互的问题上不仅仅是WebService的交互,还需要利用Java调用其它语言编写的动态链接库,例如编译好的dll文件.好,简单看一下这个问题的来源. 我们的系统和其它系统进行交互的时候,需要网络这个阶段,这段期间数据很容易被截获,这就需要对一些敏感的数据进行加密.通常单个系统我们会用MD5进行加密,无法逆向破解,相对来说还是比较安全的,已经足够使用了.但是为了网络中传输的数据也是密文,这就需要再次进行加密了,所谓的私钥,公钥.经典的例如:DES,加强版3DES等.

[转]jna模拟指针开辟空间,数组首地址获取值

http://blog.csdn.net/zhuzhichao0201/article/details/5817819 不是很明白,先记在这里 ------------------------------------------------------------ dll里面给的函数如下:ReadWordBlock(HANDLE hScanner,  BYTE EPC_WORD,  BYTE *IDBuffer,  BYTE mem,  BYTE ptr,  BYTE len,  BYTE *D

org.elasticsearch.bootstrap : JNA not found. native methods will be disabled

在pom.xml中添加以下依赖,解决elasticsearch的WARN: <dependency> <groupId>com.sun.jna</groupId> <artifactId>jna</artifactId> <version>3.0.9</version> </dependency> 2016-09-11 18:38:10.097 WARN 5760 --- [ main] org.elastic

Atitit.java&#160;jna&#160;调用c++&#160;dll&#160;的总结

Atitit.java jna 调用c++ dll 的总结 1. JNA技术解密1 1.1. JNA工作原理1 2. JNA技术难点 Java—C和操作系统数据类型的对应表1 2.1. 1 2.2. JNA编程过程3 2.2.1. 跨平台.跨语言调用的第一原则:就是尽量使用基本.简单的数据类型,尽量少跨语言.平台传递数据!4 3. 参考4 1. JNA技术解密 1.1. JNA工作原理 JNA是建立在JNI技术基础之上的一个Java类库,它使您可以方便地使用java直接访问动态链接库中的函数.

使用JNA替代JNI调用本地方法

JNA全称是Java Native Access,是Sun推出的一种调用本地方法技术,比起它的同门师兄JNI,JNA大大简化了调用本地方法的过程,使用也比较方便, JNA是在JNI的基础上完善的,用青出于蓝而胜于蓝来形容一点不为过,下面看一下JNI的调用过程: 使用JNI你得完成上面这些步骤,比较麻烦,而是用JNA就省事多了,基本上不需要脱离Java环境就可以完成.     JNA项目主页是https://jna.dev.java.net/, 目前最新的版本是3.2.4 .下载时记得将自带的Ex

学习JNA,Jnative

首先说下JAVA调用DLL,Java调用DLL的常用方法大致为几种,JNI,JNA,Jnative等,但实现与易用性差距还是很大,1.JNI用的人比较多,但相对来说比较麻烦要熟悉c并且要使用javac 及javah命令,步骤繁琐2.JNA,Jnative相对简单只需要用实现接口,使用相对简单,但无论使用什么调用dll文件,比较令人头疼的都是JAVA与C之间类型对应与值对应.下面我将项目中对着JNA及jnative的使用总结下. 1.JNA样码 步骤如下: a,下载JNAjar文件,拷贝至系统根目

JNA 备注

最近写JNA调用DLL的代码比较多.应该这样说,C的精华在于对指针的灵活运用,而用JNA调用C/C++最痛苦的也在于此.你不知道该用什么样的方式去对应C/C++的方法,特别是遇到指针.结构体指针.指针作为出参.入参或返回值等等.本文主要把最近遇到并解决了一些问题,备注如下: 1.C++的工程被JNA调用前,要增加extern "C";否则的话方法名字会无法识别: 2.byte[]作为入参的时候可直接使用java的byte[],若作为出参使用ByteByReference; 3.指针和引

JNA调用Delphi7的DLL传递接收中文参数的方法

项目要写个DLL调用硬件,因为人力资源的原因只能用Delphi7开发,结果发现传递中文有点问题,研究了一番后解决,其实很简单,关键是使用system.pas下的编码解码方法.以下在本机测试通过. 环境: Win7 64位旗舰版 JDK1.6 x86 MyEclipse8.6 Delphi7 Delphi代码: library Project2; uses SysUtils, Dialogs; {$R *.res} function testDLL(sInput: PChar):PChar; st