您的位置:首页 > 编程语言 > Java开发

使用 Java Native Interface 的最佳实践

2013-06-26 14:10 281 查看
避免最常见的 10 大 JNI 编程错误的技巧和工具http://www.ibm.com/developerworks/cn/java/j-jni/index.html级别: 中级Michael Dawson, 高级软件开发人员, IBM
Graeme Johnson, J9 虚拟机开发经理, IBM
Andrew Low, STSM,J9 虚拟机, IBM2009 年 7 月 27 日Java 本机接口(Java Native Interface,JNI)是一个标准的 Java API,它支持将 Java 代码与使用其他编程语言编写的代码相集成。如果您希望利用已有的代码资源,那么可以使用 JNI 作为您工具包中的关键组件 —— 比如在面向服务架构(SOA)和基于云的系统中。但是,如果在使用时未注意某些事项,则 JNI 会迅速导致应用程序性能低下且不稳定。本文将确定 10 大 JNI 编程缺陷,提供避免这些缺陷的最佳实践,并介绍可用于实现这些实践的工具。本文介绍 JNI 用户最常遇到的 10 大编码和设计错误。其目标是帮助您认识到并避免它们,以便您可以编写安全、高效、性能出众的 JNI 代码。本文还将介绍一些用于在新代码或已有代码中查找这些问题的工具和技巧,并展示如何有效地应用它们。JNI 编程缺陷可以分为两类:性能:代码能执行所设计的功能,但运行缓慢或者以某种形式拖慢整个程序。
正确性:代码有时能正常运行,但不能可靠地提供所需的功能;最坏的情况是造成程序崩溃或挂起。
性能缺陷程序员在使用 JNI 时的 5 大性能缺陷如下:不缓存方法 ID、字段 ID 和类
触发数组副本
回访(Reaching back)而不是传递参数
错误认定本机代码与 Java 代码之间的界限
使用大量本地引用,而未通知 JVM
正确性缺陷5 大 JNI 正确性缺陷包括:使用错误的 JNIEnv
未检测异常
未检测返回值
未正确使用数组方法
未正确使用全局引用
避免常见缺陷假设您编写了一些新 JNI 代码,或者继承了别处的某些 JVI 代码,如何才能确保避免了常见缺陷,或者在继承代码中发现它们?表 1 提供了一些确定这些常见缺陷的技巧:
表 1. 确定 JNI 编程缺陷的清单
未缓存触发数组副本错误界限过多回访使用大量本地引用使用错误的 JNIEnv未检测异常未检测返回值未正确使用数组未正确使用全局引用
规范验证XXX
方法跟踪XXXXXXX
转储X
-verbose:jniX
代码审查XXXXXXXXXX
您可以在开发周期的早期确定许多常见缺陷,方法如下:根据规范验证新代码
分析方法跟踪
使用 -verbose:jni 选项
生成转储
执行代码审查
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: