JNI定义在native系统中了下列JNI的数据类型,他们分别对应着java的数据类型。
1. Java的原始数据类型,JNI中的数据类型jint,jbyte,jshort,jlong,jfloat,jdouble,jchar,jboolean 分别对应的java中的数据类型,int,byte,short,long,float,double,char和boolean。
2. Java的引用类型,JNI中的jobject对应中java中的java.lang.Object. 同时也定义了下列子类型:
a. jclass对应java.lang.Class
b. jstring对应java.lang.String
c. jthrowable对应java.lang.Throwable
d. jarray对应Java.array.java的array是引用类型,拥有8种原始类型的数组和一个Object数组。因此,对应有8中原始数组,jintArray,jbyteArray,jshortArray,jlongArray,jfloatArray,jdoubleArray和jbooleanArray,加上一个对象数组jobjectArray.
native的函数接受上层的JNI类型的参数,返回值为JNI类型的。当然,native函数操作的数据类型是(如C的string和C 的数组int[])native层的,所以在JNI类型和native层需要做一个转换。
native的程序:
- 接受JNI类型的参数(由java程序传递的)
- 对于引用的JNI类型,转换或者拷贝参数成为本地的native类型,比如:jstring转换成C-String类型,jintArray转换成C的int数组。原始JNI类型,比如jint和jdouble是不需要转换,可以被直接操作。
- 执行相应的操作和运算,按照native类型
- 创建返回对象用JNI类型,复制结果并返回
- 返回
在JNI编程中,最具有挑战性和烦人的是在JNI引用类型和原始类型之间的转换,JNI环境提供了许多功能来执行转换。
JNI是C的接口,并不是面向对象的,并不是真正传递对象。
相关推荐
1. **JNI基础知识**:JNI是Java平台标准版(Java SE)的一部分,它定义了一组接口和函数,使得Java程序能够调用本地(非Java)代码,反之亦然。通过JNI,开发者可以编写混合模式的应用程序,结合Java的跨平台优势和C...
JNI的设计不仅仅关注技术细节,更包含了深刻的设计理念,这些理念既吸引学术界的关注,也是高效使用JNI的基础。例如,了解JNI如何处理内存管理、线程同步等复杂问题,对于避免常见陷阱至关重要。此外,作为Java2平台...
本书旨在记录JNI(Java Native Interface)编程的经验,并以此为基础,探索更深层次的虚拟机相关知识。作者原本计划编写一本更为深入的虚拟机书籍,但意识到当前的能力水平尚不足以实现这一目标,因此决定从JNI入手...
这个"JNI-API中文版.rar"文件包含了官方的JNI API文档的中文翻译,对于理解和使用JNI接口非常有帮助。 JNI的核心概念包括以下几个方面: 1. **本地方法接口(JNI Interface)**:这是Java虚拟机(JVM)提供的一组...
1. **JNI基础知识**:包括JNI头文件的引入、本地方法的声明、JNI环境的初始化和清理等。 2. **本地方法定义**:讲解如何在Java类中声明本地方法,并通过`native`关键字进行标记。 3. **JNI函数接口**:介绍如`Find...
- **翻译初衷**:本书的翻译初衷在于记录JNI编程经验以便于未来的查阅,并希望能以此为基础撰写一部更为深入探讨虚拟机的著作。作者意识到自己的技术水平还无法达到这一高度,但仍希望能够通过累积进一步提升。 - *...
这说明这个软件的主要功能是对大量文本数据进行处理,将连续的文本流分割成有意义的词汇单元,即“词”,这是自然语言处理(NLP, Natural Language Processing)中的基础步骤。分词软件在文本分析、信息检索、机器...
【海量分词java版】是针对大规模文本处理的Java实现,其主要目的是高效地对大量文本进行分词,这是自然语言处理(NLP)中的基础任务。在这个版本中,开发者利用JNI(Java Native Interface)技术进行了优化,允许...
它不仅提供了英文原文,还提供了详尽的中文翻译,有助于初学者或有一定基础的学习者更深入地理解JAVA的核心概念和技术。 JAVA是一种广泛使用的面向对象的编程语言,由Sun Microsystems开发,现在由Oracle公司维护。...
本实验“点亮一个LED灯”是一个基础但至关重要的教学环节,它涵盖了软件开发的多个层面,包括Android应用开发、JNI(Java Native Interface)、HAL(Hardware Abstraction Layer)以及硬件驱动。 首先,我们从最...
1. **资源文件创建**:自动生成基础的`.properties`文件结构,这些文件通常命名为`messages_en.properties`(英语)或其他语言的对应版本,例如`messages_fr.properties`(法语)。 2. **翻译管理**:提供一个友好...
3. **跨语言通信**:如果这些源码涉及到了跨语言转换,那么可以学习到如何在不同编程语言之间建立接口,例如通过使用JSON、XML等数据交换格式,或者利用Java的JNI、Python的ctypes库等进行底层调用。 4. **开源社区...
《太阳公司(SUN)官方培训教程》是针对JAVA编程语言的一份权威学习资料,它由SUN公司出品,经过专业翻译成中文,为中国的JAVA爱好者和从业者提供了深入理解JAVA技术的宝贵资源。该教程全面覆盖了JAVA的核心概念、...
JNA(Java Native Access)是Java的一个开源项目,它允许Java代码直接调用本地(操作系统)库,无需编写C/C++的JNI代码。这对于需要与操作系统底层功能交互的Java应用来说非常有用。JNA通过一个动态链接库映射到本地...
段,Android 图像处理篇,Android_CTS测试研,GoogleMaps基础开发教程,Android_GPS架构分析,android_JNI编程_一些技 巧,android_jni操作指南,Android_NDK开发实例,Android_RIL层剖析(官方翻译),Android2.2+API+中文...
段,Android 图像处理篇,Android_CTS测试研,GoogleMaps基础开发教程,Android_GPS架构分析,android_JNI编程_一些技 巧,android_jni操作指南,Android_NDK开发实例,Android_RIL层剖析(官方翻译),Android2.2+API+中文...
运行库是程序执行的基础,类库则提供了丰富的功能和API。C#保留了对底层操作系统的直接API调用和指针操作,这使得C#在性能上接近C++,同时又能避免Java的某些性能瓶颈,如JNI(Java Native Interface)的复杂性。 ...
尽管有些人可能对“21天系列”持有不同的看法,但本书在介绍Java 2(J2SE)基础知识方面表现出色,翻译质量高,避免了常见的语法错误,确保了语言表述的清晰易懂。 本书旨在帮助读者在21天内掌握Java编程的基本概念...
Linux内核层负责基础硬件服务,硬件抽象层隐藏底层实现细节,类库和运行时层提供C/C++库和Dalvik虚拟机支持,应用程序框架层为开发者提供组件重用和替换的平台,而应用程序层则包含了各种Google应用。 在设计流媒体...
6. **Android开发全集**:这个名字暗示了这是一部全面的教程集合,不仅包含基础内容,还可能包含高级主题,如自定义View、动画、NDK开发、JNI接口、Android Wear或Android TV等特定平台的开发。 通过这些教程的学习...