
JNI
叫我工程师
这个作者很懒,什么都没留下…
展开
-
JNI官方规范中文版——在程序中集成JVM需要注意的JNI特征
我们已经讨论了JNI在写本地代码和向本地应用程序中集成JVM时的特征。本章接下来的部分分介绍其它的JNI特征。8.1 JNI和线程JVM可以做到在相同的地址空间内执行多个线程。由于多个线程可能会在同时共享资源,所以,增加了程序的复杂性。要完全理解本章的东西,你需要对多线程编程比较熟悉,知道怎么样在Java中用多线程访问共享资源。8.1.1 约束限制如果你的本地代码要运行在多个线转载 2016-07-07 15:38:43 · 322 阅读 · 0 评论 -
JNI官方规范中文版——如何把一个JVM嵌入到本地程序中
本章讲述如何把一个JVM嵌入到你的本地程序当中去。一个JVM可以看作就是一个本地库。本地程序可以链接这个库,然后通过“调用接口”(invocation interface)来加载JVM。实际上,JDK中标准的启动器也就是一段简单的链接了JVM的C代码。启动器解析命令、加载JVM、并通过“调用接口”(invocation interface)运行Java程序。7.1 创建JVM我们用下面这段转载 2016-07-07 15:37:55 · 1007 阅读 · 0 评论 -
JNI官方规范中文版——如何在JNI中抛出Java异常
很多情况下,本地代码做JNI调用后都要检查是否有错误发生,本章讲的就是怎么样检查错误和处理错误。我重点放在JNI函数调用引发的错误上面。如果一个本地方法中调用了一个JNI函数,它必须遵守下面几个步骤来检查和处理这个JNI函数调用时可能引发的错误。至于其它可能的错误,比如本地代码中调用了一个可能引发错误的系统方法,那只需要按照该系统方法的标准文档中规定的来处理就可以了。6.1 概述我们通转载 2016-07-07 15:36:48 · 855 阅读 · 0 评论 -
JNI官方规范中文版——如何使用JNI中的global reference和local reference
JNI提供了一些实例和数组类型(jobject、jclass、jstring、jarray等)作为不透明的引用供本地代码使用。本地代码永远不会直接操作引用指向的VM内部的数据内容。要进行这些操作,必须通过使用JNI操作一个不引用来间接操作数据内容。因为只操作引用,你不必担心特定JVM中对象的存储方式等信息。这样的话,你有必要了解一下JNI中的几种不同的引用:1、 JNI支持三种引用:局部引用、转载 2016-07-07 15:35:55 · 1567 阅读 · 0 评论 -
JNI官方规范中文版——如何访问Java中的字段和方法
现在,你知道了如何通过JNI来访问JVM中的基本类型数据和字符串、数组这样的引用类型数据,下一步就是学习怎么样和JVM中任意对象的字段和方法进行交互。比如从本地代码中调用Java中的方法,也就是通常说的来自本地方法中的callbacks(回调)。我们从进行字段访问和方法回调时需要的JNI函数开始讲解。本章的稍后部分我们会讨论怎么样通过一些cache(缓存)技术来优化这些操作。在最后,我们还会讨转载 2016-07-07 15:32:03 · 436 阅读 · 0 评论 -
JNI官方规范中文版——基本类型、字符串、数组
开发者使用JNI时最常问到的是Java和C/C++之间如何传递数据,以及数据类型之间如何互相映射。本章我们从整数等基本类型和数组、字符串等普通的对象类型开始讲述。至于如何传递任意对象,我们将在下一章中进行讲述。3.1 一个简单的本地方法JAVA端源代码如下:class Prompt { // native method that prints a prompt and re转载 2016-07-07 15:30:26 · 443 阅读 · 0 评论 -
JNI官方规范中文版——从一个简单的例子开始
本章通过一个简单的例子来示例如何使用JNI。我们写一个Java程序,并用它调用一个C函数来打印“Hello World!”。2.1 概述图2.1演示了如何使用JAVA程序调用C函数来打印“Hello World!”。这个过程包含下面几步:1、 创建一个类(HelloWorld.java)声明本地方法。2、 使用javac编译源文件HollowWorld.java,产生HelloWo转载 2016-07-07 15:29:13 · 365 阅读 · 0 评论 -
JNI官方规范中文版——简介
JNI是Java平台的一个重要特征,使用它我们可以重用以前用C/C++写的大量代码。本书既是一个编程指南也是一个JNI手册。本书共包括三部分:1、 第二章通过一个简单的例子介绍了JNI。它的对象是对JNI不熟悉的初学者。2、 3~10章对JNI的特征进行了系统的介绍。我们会举大量的例子来说明JNI的各个特征,这些特征都是JNI中重要且常用的。3、 11~13章是关于JNI的技术规范。可转载 2016-07-07 15:27:56 · 402 阅读 · 0 评论 -
JNI官方规范中文版——序
这四种情况下你会用到本书:1、 在Java程序中复用以前写过的C/C++代码。2、 自己实现一个java虚拟机3、 学习不同语言如何进行协作,尤其是如何实现垃圾回收和多线程。4、 把一个虚拟机实现整合到用C/C++写的程序中。本书是写给开发者的。JNI在1997年第一次发布,本书总结了SUN工程师和大量开发者两年来积累的经验。本书介绍了JNI的设计思想,对这种思想的理解是使转载 2016-07-07 15:24:10 · 406 阅读 · 0 评论 -
JNI官方规范中文版——如何在JNI中使用己有的C/C++库
JNI的一个使用方式就是编写一些本地方法来使用己有的本地库。本章介绍了一种生成一个包含一系列本地函数的类库的经典的方式。本章首先用一对一映射这种(one-to-one mapping)最直接的方式来写封装类.接下来,我们会介绍一种叫做共享stubs(shared stubs)的技术来简化编写封装类的任务。然后,在本章的最后,我们会讨论怎么样使用peer classes来封装本地数据结构。本转载 2016-07-07 15:39:47 · 2174 阅读 · 0 评论