`
fishermen
  • 浏览: 374431 次
社区版块
存档分类
最新评论

JNI浅析

阅读更多
   JNI:是java本地接口,是jdk的一部分,通过jni可以在JAVA程序中使用非JAVA语言开发的类或应用程序。

    实现jni步骤:
    1、在java类中声明native方法(表明这个方法使用java以外的语言实现 ),使用System.loadLibrary("hello"),它是在静态初始化块中定义的,系统用来装载hello共享库,这就是我们在后面生成的hello.dll(如果在其他的操作系统可能是其他的形式,比如hello.so) ,并编译。
       
public native void displayHelloWorld();

        
System.loadLibrary("hello")

    2、用javah生成.h文件
    3、用其他语言如/cc++实现native方法,并生成动态连接库
    4、将c/c++动态连接库放到工作目录,用java命令运行

    注意:一般java应用程序通过jre、jvm,最后调用底层函数,但是使用jni,越过jre、jvm直接调用非java语言编写的底层函数,有安全隐患,需要在java级别,即执行权限尚未穿过jvm前,完成安全的限制。


分享到:
评论

相关推荐

    Android JNI 浅析

    文中较为详细的介绍了Android JNI的工作原理,Android的JAVA层如何通过JNI与Native层交互的方法。新手入门必看!

    浅析android下如何通过jni监控wifi网络连接、dhcpcd执行和power电源控制

    浅析android下如何通过jni监控wifi网络连接、dhcpcd执行和power电源控制

    浅析android下如何通过jni监控wifi网络连接、dhcpcd执行和power

    浅析android下如何通过jni监控wifi网络连接、dhcpcd执行和power

    浅析Android.mk

    Android.mk是Android提供的一种makefile文件,用来指定诸如编译生成so库名、引用的头文件目录、需要编译的.c/.cpp文件和.a静态库文件等。要掌握jni,就必须熟练掌握Android.mk的语法规范

    Android代码-各种实例库

    博客:NDK-JNI实战教程(三) 从比Hello World稍复杂点儿的NDK例子说说模板 博客文章链接---------实例代码工程 博客:facebook Fresco框架库源使用基础 博客文章链接---------实例代码工程 博客:浅谈MVP实现...

    Android博客来源:博客演示存储

    我的博客实例库( ##示例索引###博客:NDK-JNI实战教程(三)从比Hello World稍复杂点儿的NDK例子说说模板---------###博客:facebook Fresco框架库源使用基础---------###博客:浅谈MVP实现Android应用层开发------...

    2010年谢彦的android笔记

    4.6 浅析dalvik虚拟机JIT技术的实现 133 4.7 应用程序的签名(Signature) 135 4.8 应用的权限 138 4.9 屏幕密度Density 140 4.10 Prelink实现的源码分析 142 4.11 适配硬件平台 145 4.12 其他介绍 147 4.12.1 手机...

    android笔记.rar

    4.6 浅析dalvik虚拟机JIT技术的实现... ...133 4.7 应用程序的签名(Signature) ... ...135 4.8 应用的权限... ..138 4.9 屏幕密度Density ... ..140 3 4.10 Prelink实现的源码分析 ... ...142 4.11 适配...

    Android 4游戏编程入门经典

     7.12.6 减少opengl es/jni方法的调用  7.12.7 绑定顶点的概念  7.12.8 写在结束之前  7.13 小结 第8章 2d游戏编程技巧  8.1 写在开始  8.2 向量  8.2.1 使用向量  8.2.2 一点三角学的知识  8.2.3 实现一个...

    android游戏编程入门

     7.12.6 减少OpenGL ES/JNI方法的  调用 278  7.12.7 绑定顶点的概念 279  7.12.8 写在结束之前 282  7.13 小结 283  第8章 2D游戏编程技巧 285  8.1 写在开始 285  8.2 向量 286  8.2.1 使用向量 286  ...

Global site tag (gtag.js) - Google Analytics