问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

在java本地方法调用中,jni.h这个文件起到的作用是什么?它和jniEvn是什么关系?为什么必须要引入jni.h...

发布网友 发布时间:2022-04-23 13:47

我来回答

4个回答

热心网友 时间:2023-10-16 11:46

简单的回答就是需要本地库函数。
从Java原理来讲,你还要看下文:
本地方法调用就是 Java Native Interface(JNI),JNI最终的目的是在Java端调用本地系统的方法,Java之所以跨平台是因为JVM的设计是基于堆栈的,而像C、C++是基于寄存器的,寄存器应该懂吧,每个硬件的寄存器都不相同。JAVA class类运行在JVM中,即在堆栈(逻辑的数据结构)中,这个堆栈的数据结构都一样,所以就JAVA就有了跨平台。
而有的时候JAVA想直接对计算机硬件操作,即直接对寄存器操作,那么就需要相应的本地库,jni.h就是本地库。这个本地库内的API都是完全基于寄存器来操作的。
一个字一个字敲的,不知道我说的你明白没?
如果你明白基于堆栈和寄存器的区别,理解JNI就没问题了。

热心网友 时间:2023-10-16 11:46

jni.h文件作用是数据类型翻译,将JAVA语言的数据类型利用C的语法重新定义,实现2种不同的语法之间的数据类型转换(有的书上称为传递)。至于为什么要重新定义,而不直接使用C的数据类型原因是因为C的数据类型依赖于操作系统和硬件,不同的操作系统硬件int类型的大小不同有32 有16.通过重新定义可统一int的大小。
例如:某操作系统C语言int 16bit long 32 bit 则jni.h文件中需要按照java重新定义:typtdef long jint (在C程序中jint将代表原C中的long数据类型,可参见jni.h源文件)
不同版本操作系统对应不同的JVM不同的JVM对应不同的jni.h,故此文件必须被引入实现本地方法的C文件中。freshman_2007 的回答也值得参考。我不了解寄存器,但我想你要表达的应该就是这个意思。

热心网友 时间:2023-10-16 11:47

关联文件吧、把类和方法连接连接到一个代码页上。不引入的花就会报错吧、全是红线了。好久没做java了 不知道说的对不对

热心网友 时间:2023-10-16 11:47

这是C语言的头文件,Java的一些底层是调用C语言函数的。

热心网友 时间:2023-10-16 11:46

简单的回答就是需要本地库函数。
从Java原理来讲,你还要看下文:
本地方法调用就是 Java Native Interface(JNI),JNI最终的目的是在Java端调用本地系统的方法,Java之所以跨平台是因为JVM的设计是基于堆栈的,而像C、C++是基于寄存器的,寄存器应该懂吧,每个硬件的寄存器都不相同。JAVA class类运行在JVM中,即在堆栈(逻辑的数据结构)中,这个堆栈的数据结构都一样,所以就JAVA就有了跨平台。
而有的时候JAVA想直接对计算机硬件操作,即直接对寄存器操作,那么就需要相应的本地库,jni.h就是本地库。这个本地库内的API都是完全基于寄存器来操作的。
一个字一个字敲的,不知道我说的你明白没?
如果你明白基于堆栈和寄存器的区别,理解JNI就没问题了。

热心网友 时间:2023-10-16 11:46

jni.h文件作用是数据类型翻译,将JAVA语言的数据类型利用C的语法重新定义,实现2种不同的语法之间的数据类型转换(有的书上称为传递)。至于为什么要重新定义,而不直接使用C的数据类型原因是因为C的数据类型依赖于操作系统和硬件,不同的操作系统硬件int类型的大小不同有32 有16.通过重新定义可统一int的大小。
例如:某操作系统C语言int 16bit long 32 bit 则jni.h文件中需要按照java重新定义:typtdef long jint (在C程序中jint将代表原C中的long数据类型,可参见jni.h源文件)
不同版本操作系统对应不同的JVM不同的JVM对应不同的jni.h,故此文件必须被引入实现本地方法的C文件中。freshman_2007 的回答也值得参考。我不了解寄存器,但我想你要表达的应该就是这个意思。

热心网友 时间:2023-10-16 11:47

关联文件吧、把类和方法连接连接到一个代码页上。不引入的花就会报错吧、全是红线了。好久没做java了 不知道说的对不对

热心网友 时间:2023-10-16 11:47

这是C语言的头文件,Java的一些底层是调用C语言函数的。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
windows8怎么本地连接 windows8如何设置网络 诸葛亮故里诸葛亮故里纪念馆 临沂诸葛亮文化旅游节历届介绍 第四届诸葛亮文化旅游节纪念诞辰 ...请根据该表回答下面问题: (1)表中A、B、C分 ...请你分析样品A、B、C中代表血浆、原尿和尿液的样品分别是... c糖蛋白化验 江诗丹顿金属手表(江诗丹顿的手表女款) 定位最好的手表? 表带上的圈叫什么 怎样理解java native方法 Java栈和本地方法栈方法调用栈,这些都是什么? java中的本地方法 Java的方法区和本地方法区有何不同?什么是Native Method? 在java中本地方法是什么意思? JAVA本地方法详解,什么是JAVA本地方法 jvm在调用native本地方法时,本地方法是由谁执行的? 苹果xr用久了声音变小了是什么原因? 我的扶桑花肥上多了换了花盆为什么还是没见好转 需要换花土是养了一年的扶桑。 扶桑花怎样养? 电脑能播放视频但没有声音怎么回事? 前两天我把扶桑移植到新的花盆 大夏天会不会死啊? 电脑播放视频时候没声音,怎么办? 为什么买的扶桑花都是黄胶泥土,换盆也不活,几天后奄奄一息了? 我的电脑音响听音乐有声音 可看视频却没有声音 请问是怎么回事呢 为什么我的电脑播放视频时没有声音? 二年的扶桑花换盆后叶子变黄了为什么? 扶桑花是哪个国家的国花? 想在家里扶桑花,要注意什么问题? jvm中线程本地内存是真实存在的,还是一个抽象概念 Java如何调用本地dll库里面的方法 Java JVM怎么学习啊?从哪方面入手 JVM原理是什么? 2016年,Java还有必要使用本地方法以提高性能吗 native的JVM与Native Method java怎么获取本地文件路径 住街边,隔音玻璃贴膜有用吗,可以做到基本静音吗 玻璃贴膜能增强强度?玻璃在静态下的强度是多少?谢谢! 无胶电静贴膜可以用在淋浴玻璃隔断吗?它与带粘胶玻璃贴膜哪个更合适呢?是贴在里面还是外面呢? 苹果手机屏幕有时会点不动? 有没有什么东西是透明的,贴在玻璃上隔音效果又比较好的东西 苹果手机触摸屏有时候管用有时候不管用怎么回事 受不了噪音,想换中空玻璃窗,或者隔音贴膜? 苹果手机屏幕时灵时不灵是怎么回事 玻璃怎么隔音 请问建军节是几月几日呢? 建筑玻璃贴膜的功能 苹果手机屏幕时好时坏怎么办?如何解决? 玻璃幕墙贴膜施工方法?