JNI 技术与 Android 应用
来源:互联网 发布:网络小胖现状 编辑:程序博客网 时间:2024/06/06 04:01
1. 什么是 JNI
JNI是Java Native Interface的缩写。从Java 1.1开始,JNI标准成为java平台的一部分,它允许Java和其他语言进行交互。JNI一开始为C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。使用java与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做是可以接受的,甚至是必须的,比如,使用一些旧的库,与硬件、操作系统进行交互,或者为了提高程序的性能。关于 JNI 的用法很简单,有点像 java 里的 reflect 的工作机制。
2. Jni程序开发的一般操作步骤如下:
(1) 编写带有native声明的方法的java类
(2) 使用javac 或 IDE(JBuilder,eclipse等)编译所编写的java类
(3) 使用javah -jni java类名生成扩展名为h的头文件
(4) 使用C++ 实现本地方法,对调用签名可用 javap –s –p [类全名] 查看(开发 C++ 动态链接库本例是用的 VC6)
注意要从 JDK下面的 include 文件夹中把 jni.h和 jni_md.h 两个文件 copy 到你的 VC 工程里
(5) 在 Java 中 load 动态链接库文件,调用 native 方法.
或者说将项目依赖的所有原生库和资源加入到java项目的java.library.path,生成java程序
Android JNI 知识简介
Java Native Interface (JNI) 标准是java 平台的一部分,它允许Java 代码和其他语言写的代码进行交互。JNI 是本地编程接口,它使得在 Java 虚拟机 (VM) 内部运行的 Java 代码能够与用其它编程语言( 如 C 、C++ 和汇编语言) 编写的应用程序和库进行交互操作。
1. 从如何载入.so 档案谈起
由于Android 的应用层的类都是以Java 写的,这些Java 类编译为Dex 型式的Bytecode 之后,必须靠Dalvik 虚拟机(VM: Virtual Machine) 来执行。VM 在Android 平台里,扮演很重要的角色。
此外,在执行Java 类的过程中,如果Java 类需要与C 组件沟通时,VM 就会去载入C 组件,然后让Java 的函数顺利地调用到C 组件的函数。此时,VM 扮演着桥梁的角色,让Java 与C 组件能通过标准的JNI 介面而相互沟通。
JNI是Java Native Interface的缩写。从Java 1.1开始,JNI标准成为java平台的一部分,它允许Java和其他语言进行交互。JNI一开始为C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。使用java与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做是可以接受的,甚至是必须的,比如,使用一些旧的库,与硬件、操作系统进行交互,或者为了提高程序的性能。关于 JNI 的用法很简单,有点像 java 里的 reflect 的工作机制。
2. Jni程序开发的一般操作步骤如下:
(1) 编写带有native声明的方法的java类
(2) 使用javac 或 IDE(JBuilder,eclipse等)编译所编写的java类
(3) 使用javah -jni java类名生成扩展名为h的头文件
(4) 使用C++ 实现本地方法,对调用签名可用 javap –s –p [类全名] 查看(开发 C++ 动态链接库本例是用的 VC6)
注意要从 JDK下面的 include 文件夹中把 jni.h和 jni_md.h 两个文件 copy 到你的 VC 工程里
(5) 在 Java 中 load 动态链接库文件,调用 native 方法.
或者说将项目依赖的所有原生库和资源加入到java项目的java.library.path,生成java程序
Android JNI 知识简介
Java Native Interface (JNI) 标准是java 平台的一部分,它允许Java 代码和其他语言写的代码进行交互。JNI 是本地编程接口,它使得在 Java 虚拟机 (VM) 内部运行的 Java 代码能够与用其它编程语言( 如 C 、C++ 和汇编语言) 编写的应用程序和库进行交互操作。
1. 从如何载入.so 档案谈起
由于Android 的应用层的类都是以Java 写的,这些Java 类编译为Dex 型式的Bytecode 之后,必须靠Dalvik 虚拟机(VM: Virtual Machine) 来执行。VM 在Android 平台里,扮演很重要的角色。
此外,在执行Java 类的过程中,如果Java 类需要与C 组件沟通时,VM 就会去载入C 组件,然后让Java 的函数顺利地调用到C 组件的函数。此时,VM 扮演着桥梁的角色,让Java 与C 组件能通过标准的JNI 介面而相互沟通。
- JNI技术与Android应用
- JNI技术与Android应用
- JNI技术与Android应用
- JNI技术与Android应用
- JNI技术与Android应用
- JNI技术与Android应用
- JNI技术与Android应用
- JNI技术与Android应用
- JNI技术与Android应用
- JNI技术与Android应用
- JNI技术与Android应用
- JNI 技术与 Android 应用
- JNI技术与Android应用
- JNI技术与Android应用
- JNI技术与Android应用
- JNI技术与Android应用
- JNI技术与Android应用
- [Android] JNI技术与Android应用
- Android NDK下使用zlib库
- iphone中使用第三方工具(RegexKitLite)实现正则表达式
- onInterceptTouchEvent和onTouchEvent调用关系
- VMware Workstation "This virtual machine appears to be in use.
- MyBatis中对象的范围和生命周期
- JNI 技术与 Android 应用
- 快速排序法(递归调用)
- 如何让你开发的游戏赚钱
- php生成xml文件
- 浏览器插件之ActiveX开发(二
- Linux初学者学习之目录的创建与delete命令
- OpenFileDialog控件用法
- Android EditText属性大全
- LayoutInflater作用及使用