既然Java(语言)是跨平台的,为什么JVM不是跨平台的呢?

16

我很好奇知道当Java变成平台无关的时候,JVM为什么还是平台相关的。


9
你实际上在问什么? - nos
6
个人认为这个问题不应该被关闭(投票重新开放)。这个问题可能表述不够清晰,但其中包含了一个“真正”的问题(尽管对于某些人来说,答案乍一看似乎很明显)。 - ChristopheD
@ChristopheD - 你能否请澄清一下问题? - KatieK
15个回答

0

JVM是平台相关的,因为它接收Java字节码并生成当前操作系统的字节码。因此,Java软件是平台相关的,但Java语言是平台无关的,因为不同的操作系统有不同的JVM。


0

JVM将通用的字节码翻译成机器相关的机器码,因此JVM是平台相关的。由于这种字节码,Java是跨平台的。


0
我认为,如果将许多不同的语言(每种语言都在特定的平台上编写)组合起来,使其能够动态地改变自己的代码,那么它就可能实现跨平台。但是,所有这些都需要付出巨大的努力,并且可能破坏其可移植性。

0

它是跨平台的。因为Java有字节码,所以它是跨平台的。因此,只需编写一次,到处运行。


0

JVM

希望这张图片能让问题更清晰明了。 当你在电脑上安装Java时,会被要求选择你的操作系统。 这意味着在Windows机器上安装的Java与在Mac上安装的不同。 Java安装包含JDK、JRE和JVM,它们都是特定于操作系统的。
JDK具有编译器,可以将您的Java代码转换为字节码,而字节码是平台无关的。JVM可以读取此字节码,并使用解释器将其转换为特定于操作系统的指令,这些指令因操作系统而异。
所有的JDK、JRE和JVM都是特定于平台的。但是Java是平台无关的,因为字节码是平台无关的。 内容摘自此处

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接