第十一章 JNI设计概述 本章给出了JNI设计的概述,必要时,我们也提供底层技术的动机。设计概述作为关键JNI概念(如JNIEnv接口指针,本地和全局引用以及字段和方法ID)的规范。技术动机旨在帮助读者了解各种设计的权衡…
(译文) JNI编程指南与规范 第十章 陷阱与缺陷
第十章 陷阱与缺陷 为了突显前面几章中介绍的重要技术,本章涵盖了JNI程序员长犯的一些错误。这里描述的每个错误都发生在现实世界的项目中。 10.1 错误检查 编写本地方法最常见的错误是忘记检查是否发生了错误情况。与Jav…
(译文) JNI编程指南与规范 第九章 利用现有的本地库
第九章 利用现有的本地库 JNI的一个应用就是利用已存在的本地库中现有的代码来编写本地方法。本章介绍的一个典型方法是生成一个封装了一系列本地方法的类库。 本章首先介绍编写包装类最直接的方法R…
(译文) JNI编程指南与规范 第八章 附加的JNI特性
第八章 附加的JNI特性 我们已经讨论过用于编写本地代码的和在本地程序中嵌入一个Java虚拟机实现的JNI特性。这一章我们将介绍剩余的JNI特性。 8.1 JNI和线程 Java虚拟机支持在同一地址空间中同时执行的多个控…
(原创) JNI编程指南与规范 第七章 刻意练习
第七章之刻意练习 练习1: 学会在C代码中创建虚拟机,复习类、方法ID的查找 在native侧,使用random函数生成一个包含1000个整型的数组,然后在native侧调用Java编程语言中的Arrays.sort(i…
(译文) JNI编程指南与规范 第七章 调用接口
第七章:调用接口 这一章用于说明在你的本地代码中如何嵌入一个Java虚拟机。Java虚拟机实现通过作为一个本地库来传输,本地应用程序可以连接此库并使用调用接口来加载Java虚拟机。的确,在JDK或Java 2 SDK版本…
(原创) JNI编程指南与规范 第六章 刻意练习
第六章之刻意练习 经过第六章的学习,基本了解JNI的异常处理了,现在我们来刻意练习一下 practice 1, 在native层获取Java异常并将异常抛出给Java层 我们需要在native方法…
(译文) JNI编程指南与规范 第六章 异常
第六章 异常 我们已经遇到大量在本地代码中需要检查执行JNI方法后可能产生的错误。这一章将介绍本地代码如何从这些错误状况中检测和修复。 我们将会重点关注作为JNI函数调用的…
(译文) JNI编程指南与规范 第五章 本地和全局引用
第五章 本地和全局引用 JNI将实例和数组类型(例如jobject、jclass、jstring和jarray)公开为不透明引用。本地代码不能直接检查不透明引用指针的内容。而是通过JNI函数来获取…
(原创) JNI编程指南与规范 第四章 刻意练习
第四章之刻意练习 Practice 1 在Java侧定义两个成员变量,一个为静态成员变量,另一个为非静态成员变量。在Java侧初始化并打印这两个值,然后再native侧修改这两个值,返回到Java侧后再打印这两个值。定义…