首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jdk1.0如何缺乏本机代码和Java代码之间的清晰分离?

jdk1.0如何缺乏本机代码和Java代码之间的清晰分离?
EN

Stack Overflow用户
提问于 2012-05-16 05:37:04
回答 1查看 360关注 0票数 2

来自

JDK1.0版本包含了一个早期的本机方法接口,缺乏本机代码和Java代码之间的清晰分离。在这个接口中,本机将直接扩展到JVM结构中,因此不能在JVM实现、平台甚至JDK版本之间移植。使用JDK1.0模型升级大量本地应用程序的成本很高,开发能够使用多个JVM实现运行的本地应用程序也是昂贵的。

本机意味着什么将直接扩展到JVM结构中,因此不能跨JVM实现进行移植?我不明白这个。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-16 05:59:27

当前JNI的文档包含了关于旧接口的有趣内容:

JDK1.0是随本机方法接口一起提供的。不幸的是,有两个主要原因导致这个接口不适合其他Java采用。 首先,本机代码作为C结构的成员访问Java对象中的字段。但是,Java语言规范并没有定义如何在内存中部署对象。如果Java以不同的方式在内存中放置对象,那么程序员将不得不重新编译本机方法库。 ..。

这意味着本机代码可以直接访问内存中的对象值,而不是遍历某个API。这相当于直接访问Java中的字段,而不是使用getters/setters。这意味着,如果不破坏与使用旧的本机接口的任何代码的兼容性,则无法更改字段的基础布局。

我找到了一个本机方法教程的副本来自这里的JDK 1.0.2。它包括一个关于从本机代码处理Java对象的部分。

现代的JNI只允许通过方法调用访问Java对象字段。这样,对象和许多其他东西的布局就可以改变,而不会破坏兼容性。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10612623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档