农场老马的专栏

老码农一枚!

JNI官方规范中文版——JNI程序设计总结

本章是JNI设计思想的一个概述,在讲的过程中,如果有必要的话,还会对底层实现技术的原理做说明。本章也可以看作是JNIEnv指针、局部和全局引用、字段和方法ID等这些JNI主要技术的规范。有些地方我们可能还会提到一些技术是怎么样去实现的,但我们不会专注于具体的实现方式,主要还是讨论一些实现策略。 1...

2012-10-14 09:50:41

阅读数:5330

评论数:3

JNI官方规范中文版——使用JNI时容易出错的地方

本章总结了JNI实际应用中容易出错的一些情况供JNI程序员参考。 10.1 错误检查 编写本地方法时最常见的错误就是忘记检查是否发生了异常。我承认,JNI里面的异常检查确实比较麻烦,但是,这很重要。 10.2 向JNI函数传递非法参数 JNI不会检查参数是否正确,如果你自己不保证参数的正确有效,那...

2012-10-14 09:45:38

阅读数:5228

评论数:0

JNI官方规范中文版——如何在JNI中使用己有的C/C++库

JNI的一个使用方式就是编写一些本地方法来使用己有的本地库。本章介绍了一种生成一个包含一系列本地函数的类库的经典的方式。 本章首先用一对一映射这种(one-to-one mapping)最直接的方式来写封装类.接下来,我们会介绍一种叫做共享stubs(shared stubs)的技术来简化编写封装...

2012-10-14 09:43:56

阅读数:8857

评论数:3

JNI官方规范中文版——在程序中集成JVM需要注意的JNI特征

我们已经讨论了JNI在写本地代码和向本地应用程序中集成JVM时的特征。本章接下来的部分分介绍其它的JNI特征。 8.1 JNI和线程 JVM可以做到在相同的地址空间内执行多个线程。由于多个线程可能会在同时共享资源,所以,增加了程序的复杂性。 要完全理解本章的东西,你需要对多线程编程比较熟悉,知道怎...

2012-10-14 09:37:19

阅读数:8208

评论数:0

JNI官方规范中文版——如何把一个JVM嵌入到本地程序中

本章讲述如何把一个JVM嵌入到你的本地程序当中去。一个JVM可以看作就是一个本地库。本地程序可以链接这个库,然后通过“调用接口”(invocation interface)来加载JVM。实际上,JDK中标准的启动器也就是一段简单的链接了JVM的C代码。启动器解析命令、加载JVM、并通过“调用接口”...

2012-10-14 09:35:10

阅读数:7646

评论数:5

JNI官方规范中文版——如何在JNI中抛出Java异常

很多情况下,本地代码做JNI调用后都要检查是否有错误发生,本章讲的就是怎么样检查错误和处理错误。 我重点放在JNI函数调用引发的错误上面。如果一个本地方法中调用了一个JNI函数,它必须遵守下面几个步骤来检查和处理这个JNI函数调用时可能引发的错误。至于其它可能的错误,比如本地代码中调用了一个可能引...

2012-10-14 09:32:10

阅读数:16830

评论数:0

JNI官方规范中文版——如何使用JNI中的global reference和local reference

JNI提供了一些实例和数组类型(jobject、jclass、jstring、jarray等)作为不透明的引用供本地代码使用。本地代码永远不会直接操作引用指向的VM内部的数据内容。要进行这些操作,必须通过使用JNI操作一个不引用来间接操作数据内容。因为只操作引用,你不必担心特定JVM中对象的存储方...

2012-10-14 09:29:01

阅读数:20756

评论数:4

JNI官方规范中文版——如何访问Java中的字段和方法

现在,你知道了如何通过JNI来访问JVM中的基本类型数据和字符串、数组这样的引用类型数据,下一步就是学习怎么样和JVM中任意对象的字段和方法进行交互。比如从本地代码中调用JAVA中的方法,也就是通常说的来自本地方法中的callbacks(回调)。 我们从进行字段访问和方法回调时需要的JNI函数开始...

2012-10-14 09:26:41

阅读数:17017

评论数:6

JNI官方规范中文版——基本类型、字符串、数组

开发者使用JNI时最常问到的是JAVA和C/C++之间如何传递数据,以及数据类型之间如何互相映射。本章我们从整数等基本类型和数组、字符串等普通的对象类型开始讲述。至于如何传递任意对象,我们将在下一章中进行讲述。 3.1 一个简单的本地方法 JAVA端源代码如下: class Prompt { ...

2012-10-14 09:23:13

阅读数:16092

评论数:3

JNI官方规范中文版——从一个简单的例子开始

本章通过一个简单的例子来示例如何使用JNI。我们写一个JAVA程序,并用它调用一个C函数来打印“Hello World!”。 2.1 概述 图2.1演示了如何使用JAVA程序调用C函数来打印“Hello World!”。这个过程包含下面几步: 1、 创建一个类(HelloWorld.java)...

2012-10-14 09:20:48

阅读数:4219

评论数:0

JNI官方规范中文版——简介

JNI是JAVA平台的一个重要特征,使用它我们可以重用以前用C/C++写的大量代码。本书既是一个编程指南也是一个JNI手册。本书共包括三部分: 1、 第二章通过一个简单的例子介绍了JNI。它的对象是对JNI不熟悉的初学者。 2、 3~10章对JNI的特征进行了系统的介绍。我们会举大量的例子来说明J...

2012-10-14 09:17:31

阅读数:10825

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭