首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java字节码中的平台无关性

Java字节码中的平台无关性
EN

Stack Overflow用户
提问于 2013-06-14 05:40:11
回答 7查看 7K关注 0票数 4

有时我想知道为什么Java被称为独立于平台的语言?

我找不到以下几点的适当解释:

  1. 对于Windows/Linux/Mac,JVM是否相同?
  2. 在上述环境中,为同一个类生成的字节码是否相同?

如果对上述问题的回答是否定的,那么平台独立性是如何实现的。

请帮助我学习这个基本概念。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-06-14 05:41:15

对于Windows/Linux/Mac,JVM是否相同?

不用谢。编译器在不同的平台上是相同的。但是,由于它是一个可执行文件,文件本身将是不同的,即在.exe上,在Linux上,它将是Linux可执行文件等等。

在上述环境中,为同一个类生成的字节码是否相同?

是。这就是为什么只编译一次的原因。跑到任何地方。

在启动请用甲骨文读这篇文档。之前

票数 9
EN

Stack Overflow用户

发布于 2013-07-18 08:56:39

机器依赖:这意味着无论您想在硬件架构上执行什么,都不能在另一个体系结构上执行。就像你已经为你的AMD架构创建了一个可执行文件,它将无法在英特尔的架构上运行。现在对平台的依赖是,您已经为Windows创建了一些可执行文件,它将无法在以程序集中编写的Linux.Code上运行(由您的处理器提供)或机器语言依赖于机器,但是如果您用C、CPP、JAVA编写代码,那么您的代码是与机器无关的,这是由底层操作系统提供的。

平台独立性:如果您创建了一些C或CPP代码,那么它就会依赖于平台,因为它生成一个中间文件,即编译的文件,它与底层操作系统提供的指令集相匹配。因此,您需要一些可以理解编译器和OS.Java的中介,它通过创建JVM实现了这一点。注意:如果您删除操作系统本身就是使用某种语言创建的程序,而该语言可以直接与您的底层机器体系结构对话,那么没有任何语言是独立于机器的。OS就是这样一个程序,它接受编译的代码并在底层架构之上运行它。

票数 3
EN

Stack Overflow用户

发布于 2013-06-14 05:45:25

平台无关的意思是,您只需以一种格式分发Java程序。

这一格式将由JVM在每个平台上解释(它们被编码为针对其所处平台进行优化的不同程序),以便它可以在JVM存在的任何地方运行。

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

https://stackoverflow.com/questions/17101796

复制
相关文章

相似问题

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