JNI
wjakl001
这个作者很懒,什么都没留下…
展开
-
JNI使用指南(一)-数据类型
前言本系列博客可作为JNI参考文档使用,对于初学者,应当在了解了如何在特定平台上(Window、Linux、Android等)搭建JNI开发环境后再来查看。本系列博客主要参考了JNI-API文档,并以此为基础进行扩展。前言一数据类型1 基本数据类型2 引用类型3 属性和方法的ID4 值类型5 类型签名6 使用UTF-8字符串一、数据类型本章内容介绍JNI如何进行Java和C的数据映射。1.1 基本...转载 2018-04-26 14:33:24 · 429 阅读 · 0 评论 -
Java:JVM内存管理(一)
Java:JVM内存管理(一)JVM知识Java:JVM内存管理(一)一、基础知识二、物理内存和虚拟内存三、内核空间与用户空间四、Java中的内存分配4.1 Java堆4.2 线程4.3 NIO4.4 JNI五、JVM的内存结构5.1 PC寄存器5.1.1 什么是PC寄存器?5.1.2 PC寄存器在哪?5.1.3 JVM为什么是基于栈的?5.2 Java栈5.2.1 什么是Java栈?5.2.2 ...转载 2018-04-28 16:09:35 · 244 阅读 · 0 评论 -
JNI操作指南(十)-JavaVM与JNIEnv
JNI完全指南(十)——JavaVM与JNIEnv十、JavaVM与JNIEnv10.1 JNIEnv10.2 JavaVM10.2.1 创建JVM10.2.2 链接到虚拟机10.2.3 解除与虚拟机的连接10.2.4 卸载虚拟机10.2.5 动态加载本地方法10.2.6 卸载本地方法10.2.7 获取默认虚拟机初始化参数10.2.8 获取Java虚拟机十、JavaVM与JNIEnv10.1 JN...转载 2018-04-28 16:08:25 · 1096 阅读 · 0 评论 -
JNI使用指南(九)-反射
JNI使用指南(九)-反射反射1 将一个Method对象转换为方法ID2 将一个Field对象转换为属性ID3 反射得到Method对象4 反射得到Field对象九、反射反射能够使开发者在仅知道名称的情况下就能操作方法和属性。JNI提供了一系列在Java反射的核心方法。9.1 将一个Method对象转换为方法IDjmethodID FromReflectedMethod(JNIEnv *env, ...转载 2018-04-26 14:52:31 · 484 阅读 · 0 评论 -
JNI使用指南(八)-NIO
JNI使用指南(八)-NIONIO1 新建直接字节缓冲区2 获取直接缓冲区地址3 获取直接缓冲区容量八、NIOJDK/JRE 1.4时提供了新的IO访问方式,取代了之前效率不高的BIO。NIO的特色之一便是直接地址访问,这种绕过JVM直接操作内存的方式极大地提高了程序的运行效率。8.1 新建直接字节缓冲区通过下列方法可以将一个内存区域作为直接内存缓冲区,为了能够成功创建缓冲区对象,我们应该保证传入...转载 2018-04-26 14:51:38 · 260 阅读 · 0 评论 -
JNI使用指南(七)-多线程
JNI使用指南(七)-多线程多线程编程1 进入临界区2 MonitorExit3 线程的等待唤醒七、多线程编程本章不讲述如何使用C语言开启新线程,而是讲述如何在本地代码中使用线程同步。由于从Java中访问native方法并没有线程限制,所以我们的本地代码并不一定只会运行在main线程中,一旦本地方法被多个线程调用,那么我们就不得不考虑如何保证数据的安全访问问题了。为了解决这个问题,JNI提供了监视...转载 2018-04-26 14:50:33 · 640 阅读 · 0 评论 -
JNI使用指南(六)-本地方法
JNI使用指南(六)-本地方法本地方法1 注册本地方法2 解除本地方法六、本地方法当我们在一个Java文件中书写一个native的方法的时候,为了让JNI识别我们的方法,就需要采用注册的方式。6.1 注册本地方法通过以下方法可以向JNI环境注册一个本地方法。jint RegisterNatives(JNIEnv *env, jclass clazz, const JNINativeMethod *...转载 2018-04-26 14:49:15 · 165 阅读 · 0 评论 -
JNI使用指南(四)-对象操作
JNI完全指南四(对象操作)对象操作1 基本操作11 创建默认对象12 创建对象13 从对象获取类信息14 获取一个对象的引用类型15 实例运算16 判断对象是否相同2 访问对象中的属性21 获取属性ID22 获取属性值23 设置属性值3 调用实例方法31 获取实例方法ID32 调用实例方法33 调用非虚实例方法4 访问静态属性41 获取静态属性ID42 获取静态属性值43 设置静态属性值5 调用...转载 2018-04-26 14:45:18 · 413 阅读 · 0 评论 -
JNI使用指南(三)-引用类型
JNI完全指南三(引用类型)引用类型1 全局引用11 新建全局引用12 删除全局引用2 局部引用21 创建局部引用22 删除局部引用23 确认局部引用容量24 局部栈帧的入栈和出栈3 弱全局引用31 新建弱全局引用32 删除弱全局引用三、引用类型在JNI中引用类型分为三种,分别是全局引用,局部引用和弱全局引用。3.1 全局引用全局引用可以跨方法(本地方法返回后仍然有效),跨线程使用,直到手动释放才...转载 2018-04-26 14:43:04 · 184 阅读 · 0 评论 -
JNI使用指南(二)-类与异常
JNI使用指南二(类与异常)类与异常1 类11 加载类12 查找一个类13 获取父类14 类型转换2 异常21 抛出已有的异常对象22 抛出一个新异常对象23 获取JVM抛出的异常24 输出错误日志25 清空异常信息26 产生一个严重的错误27 检查是否存在异常信息二、类与异常2.1 类2.1.1 加载类我们可以使用下列方法通过类定义去加载一个类。jclass DefineClass(JNIEnv...转载 2018-04-26 14:37:24 · 183 阅读 · 0 评论 -
如何在C/C++中调用Java的方法
Java跨平台的特性使Java越来越受开发人员的欢迎,但也往往会听到不少的抱怨:用Java开发的图形用户窗口界面每次在启动的时候都会跳出一个控制台窗口,这个控制台窗口让本来非常棒的界面失色不少。怎么能够让通过Java开发的GUI程序不弹出Java的控制台窗口呢?其实现在很多流行的开发环境例如JBuilder、Eclipse都是使用纯Java开发的集成环境。这些集成环境启动的时候并不会打开一个命令窗...转载 2018-04-26 11:46:18 · 3060 阅读 · 0 评论 -
Java:JVM内存管理(二)
Java:JVM内存管理(二)JVM知识在第一节中Java:JVM内存管理(一)中,我们介绍了JVM的内存结构,在介绍JVM如何管理内存之前,我们先要接触JVM的体系结构与工作方式。Java:JVM内存管理(二)六、JVM体系结构6.1 模拟计算机6.1.1 指令集6.1.2 指令集与汇编6.1.3 指令集与CPU架构6.2 JVM的跨平台特性6.3 JVM体系结构七、JVM的工作机制7.1 JV...转载 2018-04-28 16:10:23 · 472 阅读 · 0 评论