美文网首页andriod
JNI技术实践小节

JNI技术实践小节

作者: 60916fc63567 | 来源:发表于2016-06-24 15:03 被阅读42次

    1、目前java与dll交互的技术主要有3种:jni,jawin和jacob。Jni(Java Native Interface)是sun提供的java与系统中的原生方法交互的技术(在windows\linux系统中,实现java与native method互调)。目前只能由c/c++实现。后两个都是sourceforge上的开源项目,同时也都是基于jni技术的windows系统上的一个应用库。Jacob(Java-Com Bridge)提供了java程序调用microsoft的com对象中的方法的能力。而除了com对象外,jawin(Java/Win32 integration project)还可以win32-dll动态链接库中的方法。就功能而言:jni >> jawin>jacob,其大致的结构如下图:

    就易用性而言,正好相反:jacob>jawin>>jni。


    Jvm封装了各种操作系统实际的差异性的同时,提供了jni技术,使得开发者可以通过java程序(代码)调用到操作系统相关的技术实现的库函数,从而与其他技术和系统交互,使用其他技术实现的系统的功能;同时其他技术和系统也可以通过jni提供的相应原生接口开调用java应用系统内部实现的功能。

    在windows系统上,一般可执行的应用程序都是基于native的PE结构,windows上的jvm也是基于native结构实现的。Java应用体系都是构建于jvm之上。

    Windows系统上的java体系

    Jni对于应用本身来说,可以看做一个代理模式。对于开发者来说,需要使用c/c++来实现一个代理程序(jni程序)来实际操作目标原生函数,java程序中则是jvm通过加载并调用此jni程序来间接地调用目标原生函数。

    Jni程序开发的一般操作步骤如下:

    l编写java中的调用类

    l用javah生成c/c++原生函数的头文件

    lc/c++中调用需要的其他函数功能,实现原生函数(原则上可以调用任何资源)

    l将项目依赖的所有原生库和资源加入到java项目的java.library.path

    l生成java程序

    l发布java应用和dll库

    相关文章

      网友评论

        本文标题:JNI技术实践小节

        本文链接:https://www.haomeiwen.com/subject/vsbodttx.html