JNI
文章平均质量分 63
allankin
这个作者很懒,什么都没留下…
展开
-
Linux JNI实例
Linux下JNI技术使用的一个简单实例JNI全名是Java Native Interface,通过JNI技术可以实现Java和其他编程语言的互相调用。这里我们使用的是Java和C的互相调用,Java提供本地接口,C实现该本地接口。我使用的是RHEL 5,主要是为了测试一下在Linux平台下,了解JNI技术是如何实现的。通过一个HelloWorld实例,具体过程在下面讲解。转载 2012-10-11 15:30:09 · 481 阅读 · 0 评论 -
Android JNI编程提高篇之二
上文《Android JNI编程提高篇之一》中我和大家分享了局部引用的一些理解,本文我将继续和大家全局引用和弱全局引用的一些理解。这也可以作为我学习《Java Native Interface: Programmer’s Guide and Specification》一个总结,欢迎大家对本文的理解拍砖。全局引用在所有引用中,我觉得全局引用是最好理解的一个了。为什么呢?主要转载 2012-11-09 10:29:50 · 418 阅读 · 0 评论 -
Android JNI编程提高篇之一
Simon在拙文《Android JNI开发入门之二》中提到了,Android JNI开发的深入学习的一些资料和方法。最近Simon在学习《Java Native Interface: Programmer’s Guide and Specification》,在学习过程中发现在JNI规范中关于引用部分是最难理解的,恕Simon愚钝,看了两遍才对其思想略有理解,在此和大家分享我对JNI规范转载 2012-11-09 10:28:36 · 448 阅读 · 0 评论 -
jni的几个基本的性能测试分析
jni的几个基本的性能测试分析今天对jvm运行jni做了几个基本的性能测试,测试的jvm有jdk1.4.2_19、jdk1.5.0_04和jdk1.6.0_14,测试的重复次数都是一亿次,测试结果的绝对数值意义不大,仅供参考。java调用jni空函数和调用java方法的性能(比较):java.version = 1.6.0_14 Java空方法调用 耗时 329 ms 平转载 2012-11-09 13:14:16 · 1152 阅读 · 0 评论 -
运行so文件时,出现error while loading shared libraries: libjvm.so: cannot open shared object file...
出现:error while loading shared libraries: libjvm.so: cannot open shared object file: No such file or directoryI don't get the errors you report, but there are some things that needto be fixed:-翻译 2012-10-23 16:15:59 · 3523 阅读 · 0 评论 -
JNI编程系列之高级篇
在本篇中,将会涉及关于JNI编程更深入的话题,包括:在native方法中访问Java类的域和方法,将Java中自定义的类作为参数和返回值传递等等。了解这些内容,将会对JNI编程有更深入的理解,写出的程序也更清晰,易用性更好。1. 在一般的Java类中定义native方法在前两篇的例子中,都是将native方法放在main方法的Java类中,实际上,完全可以在任何类中定义native转载 2012-10-20 20:10:27 · 436 阅读 · 0 评论 -
JNI编程系列之基础篇
JNI编程系列之基础篇最近干一个活需要从Java调用C++编译的动态链接库,研究了一下JNI,现在将网上搜罗的文档和自己的体会贡献出来。JNI的做法是:通过在方法前加上关键字native来识别本地方法,然后用本地语言(如C,C++)来实现该方法,并编译成动态链接库,在Java的类中调用该动态链接库,然后就可以像使用Java自己的方法一样使用native方法了。这样做的好处是既具有了转载 2012-10-20 20:12:15 · 354 阅读 · 0 评论 -
JN系列(3):如何得到JavaVM,JNIEnv接口
Java与native code的操作有两种方式:(1)在Java中加载动态链接库(2)使用JNI Invocation inteface,在native code中创建JVMJavaVM接口第一种方式,在加载动态链接库的时候,JVM会调用JNI_OnLoad(JavaVM* jvm, void* reserved)(如果定义了该函数)。第一个参数会传入JavaVM指针。第转载 2012-10-29 16:51:13 · 845 阅读 · 0 评论 -
jni 保存jvm变量及c中调用
可以在jni的实现文件中,添加JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved);实现jvm的获取,此函数会在java加载native 库时调用。也可以在native的实现函数中获取jvm变量。代码:声明全局变量: JavaVM* jvm;jint retint = env->GetJavaVM(&jvm)原创 2012-10-29 16:40:05 · 1363 阅读 · 0 评论 -
a number of mistakes commonly made by JNI programmers.
Chapter 10Traps and PitfallsTo highlight the important techniques covered in previous chapters, this chapter covers a number of mistakes commonly made by JNI programmers. Each mistake desc翻译 2012-10-29 15:48:29 · 889 阅读 · 0 评论 -
Calling Java Methods
Calling Java MethodsThis section illustrates how you can call Java methods from native methods. Our example program, Callbacks.java, invokes a native method. The native method then makes a cal转载 2012-10-12 13:51:43 · 633 阅读 · 0 评论 -
JNIEnv*的常用函数详解
[cpp] view plaincopy#include "TestNative.h" /* * Class: TestNative * Method: add * Signature: (II)I */ JNIEXPORT jint JNICALL Java_TestNative_add转载 2012-10-12 14:37:24 · 615 阅读 · 0 评论 -
JNI学习笔记(六)——局部和全局引用
JNI将实例、数组类型暴露为不透明的引用。native代码从不会直接检查一个不透明的引用指针的上下文,而是通过使用JNI函数来访问由不透明的引用所指向的数据结构。因为只处理不透明的引用,这样就不需要担心不同的java VM实现而导致的不同的内部对象的布局。然而,还是有必要了解一下JNI中不同种类的引用:1)JNI 支持3中不透明的引用:局部引用、全局引用和弱全局引用。2)局转载 2012-11-13 08:40:18 · 512 阅读 · 0 评论