《《Java_JNI_编程进阶》.pdf

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《《Java_JNI_编程进阶》.pdf

Java JNI 编程进阶 JNI 一直以来都很少去关注,但却是我心中的一个结,最近这几天刚好手头有点 时间,因此抽空看了一下这方面的东西,整理了一份文档,JNI 技术的出现主要 是基于三个方面的应用需求: 1. 解决性能问题 Java 具有平台无关性,这使人们在开发企业级应用的时候总是把它作为主要候 选方案之一,但是性能方面的因素又大大削弱了它的竞争力。为此,提高Java 的性能就显得十分重要。Sun 公司及Java 的支持者们为提高Java 的运行速度已 经做出了许多努力,其中大多数集中在程序设计的方法和模式选择方面。由于算 法和设计模式的优化是通用的,对Java 有效的优化算法和设计模式,对其他编 译语言也基本同样适用,因此不能从根本上改变Java 程序与编译型语言在执行 效率方面的差异。由此,于是人们开始引入JIT(Just In Time,及时编译)的概 念。它的基本原理是:首先通过Java 编译器把Java 源代码编译成平台无关的二 进制字节码。然后在Java 程序真正执行之前,系统通过JIT 编译器把Java 的字 节码编译为本地化机器码。最后,系统执行本地化机器码,节省了对字节码进行 解释的时间。这样做的优点是大大提高了Java 程序的性能,缩短了加载程序的 时间;同时,由于编译的结果并不在程序运行间保存,因此也节约了存储空间。 缺点是由于JIT 编译器对所有的代码都想优化,因此同样也占用了很多时间。 动态优化技术是提高Java 性能的另一个尝试。该技术试图通过把Java 源程序直 接编译成机器码,以充分利用Java动态编译和静态编译技术来提高Java 的性能。 该方法把输入的Java 源码或字节码转换为经过高度优化的可执行代码和动态库 (Windows 中的. dll 文件或Unix 中的. so 文件)。该技术能大大提高程序的性 能,但却破坏了Java 的可移植性。 JNI(Java Native Interface, Java 本地化方法)技术由此闪亮登场。因为采用 JNI 技术只是针对一些严重影响Java 性能的代码段,该部分可能只占源程序的 极少部分,所以几乎可以不考虑该部分代码在主流平台之间移植的工作量。同时, 也不必过分担心类型匹配问题,我们完全可以控制代码不出现这种错误。此外, 也不必担心安全控制问题,因为Java 安全模型已扩展为允许非系统类加载和调 用本地方法。根据Java 规范,从JDK 1. 2 开始,FindClass 将设法找到与当前 的本地方法关联的类加载器。如果平台相关代码属于一个系统类,则无需涉及任 何类加载器; 否则,将调用适当的类加载器来加载和链接已命名的类。换句话说, 如果在Java 程序中直接调用C/C++语言产生的机器码,该部分代码的安全性就 由Java 虚拟机控制。 2. 解决本机平台接口调用问题 JAVA 以其跨平台的特性深受人们喜爱,而又正由于它的跨平台的目的,使得它 和本地机器的各种内部联系变得很少,约束了它的功能。解决JAVA 对本地操作 的一种方法就是JNI。JAVA 通过JNI 调用本地方法,而本地方法是以库文件的形 式存放的(在WINDOWS 平台上是DLL 文件形式,在UNIX 机器上是SO 文件形式)。 通过调用本地的库文件的内部方法,使JAVA 可以实现和本地机器的紧密联系, 调用系统级的各接口方法。 3. 嵌入式开发应用 “一次编程,到处使用”的Java 软件概念原本就是针对网上嵌入式小设备提出 的,几经周折,目前SUN 公司已推出了J2ME(Java 2 P1atform Micro Edition) 针对信息家电的Java 版本,其技术日趋成熟,开始投入使用。SUN 公司Java 虚 拟机(JVM)技术的有序开放,使得Java 软件真正实现跨平台运行,即Java 应用 小程序能够在带有JVM 的任何硬软件系统上执行。加上Java 语言本身所具有的 安全性、可靠性和可移植性等特点,对实现瘦身上网的信息家电等网络设备十分 有利,同时对嵌入式设备特别是上网设备软件编程技术产生了很大的影响。也正 是由于JNI 解决了本机平台接口调用问题,于是JNI 在嵌入式开发领域也是如火 如荼。 不失直观性,我们首先写一个JNI 小例子: Java 代码 1. public class HelloJni { 2. public native void displayHelloJni(); 3. 4. static { 5. System.loadLibrary(helloJn

文档评论(0)

llww + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档