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

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 JNI,全称为Java Native Interface,是Java平台的一个核心特性,它提供了一种方式让Java应用程序能够与本地C/C++代码进行交互。JNI使得开发者可以充分利用Java和C/C++的优点,例如...

    JNI资源汇总

    - "Android_JNI浅析":可能从更直观的角度介绍了JNI,适合初学者快速理解JNI的工作原理。 - "jni详解":这可能是对JNI的深入解析,包括复杂的API使用和最佳实践。 了解和掌握JNI,开发者可以更好地利用Android...

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

    Android 下通过 JNI 监控 WiFi 网络连接、dhcpcd 执行和 Power 电源控制 Android 作为一个开源的移动操作系统,具有广泛的应用前景,而 WiFi 网络连接、dhcpcd 执行和 Power 电源控制是 Android 中的三个重要组件。...

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

    在深入探讨如何在Android系统中利用JNI(Java Native Interface)技术来监控WiFi网络连接状态、DHCP客户端守护进程(dhcpcd)的执行以及管理电源控制(power),我们首先需要理解基本概念与原理。 ### Android与JNI...

    浅析Android NDK编程中参数的传递.pdf

    在Android应用开发中,NDK(原生开发工具包)允许开发者利用C或C++来编写程序的部分,这样的方式称为JNI(Java Native Interface)编程。JNI编程使得Java代码可以调用本地代码,增强了程序的性能,并可以复用已有的C/C++...

    浅析JAVA之垃圾回收机制.doc

    该方法通常用于在对象被销毁前执行一些清理操作,例如释放JNI(Java Native Interface)所分配的本地资源。然而,依赖`finalize()`来释放资源不是最佳实践,因为它的调用时机不确定且可能导致性能问题。建议避免过度...

    浅析Android.mk

    Android.mk是Android Native Development Kit (NDK) 中的关键文件,用于构建C/C++原生代码,通常是用于实现Java平台上的本地方法(JNI)。通过编写Android.mk,开发者能够控制如何编译、链接和打包本地库,使其能与...

    浅析JVM垃圾回收的过程

    - 本地方法栈JNI中栈帧引用的对象:JNI(Java Native Interface)允许Java代码调用本地(非Java)代码,本地方法栈中的引用也需要考虑。 这一过程通常会导致Stop-The-World(STW)事件,即所有线程暂停,直到...

    Android代码-各种实例库

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

    浅析Java内存模型与垃圾回收

    2. **可达性分析算法**:通过GC Roots(如虚拟机栈、方法区的静态属性和常量、本地方法栈中的JNI引用)作为起点,如果对象无法从GC Roots到达,则认为对象不可达,可以被回收。这种方法能有效处理循环引用问题。 **...

    浅析Java中Runnable和Thread的区别

    这是因为`start()`方法内部会调用`start0()`,这是一个本地方法(`native`),它利用了JNI(Java Native Interface)技术来与操作系统进行交互,创建并启动一个真实的系统线程。 使用`Runnable`接口的好处是它可以...

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

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

    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 适配...

Global site tag (gtag.js) - Google Analytics