考虑到Java(该语言)是独立于平台的,为什么JVM不是独立于平台的?

只是好奇知道什么时候java独立于平台,那么JVM是否有任何特定的原因使平台依赖..

除非你有一个可以直接执行Java字节码的CPU(有这样的东西),你需要能够与操作系统交互(例如读取文件,连接到网络,显示到屏幕等等)。

您可以使用其他语言(例如Java或JavaScript )编写JVM,但最终需要能够与底层操作系统交互。

JVM执行Java代码,但是使用平台特定语言(如C / C ++ / ASM等)编写.JVM不是用Java编写的,因此不能独立于平台。

我发现这是一个很好的答案:

JVM将字节码转换为机器语言

每个Java程序都被编译成一种称为Java字节码的中间语言。 JVM用于将字节码转换为特定计算机的机器语言,并且实际上也执行相应的机器语言指令。 JVM和字节码的组合使Java成为一种“可移植”语言。

机器语言取决于操作系统

鉴于以前的信息,应该更容易推断出问题的答案。 由于JVM必须将字节码转换为机器语言,并且由于机器语言取决于所使用的操作系统,因此很明显JVM依赖于平台(操作系统)。 这个事实可以通过尝试下载JVM来validation – 您将获得与不同操作系统相对应的JVM列表,您显然会选择针对您正在运行的操作系统的JVM。

引用JVM平台是否依赖?

JVM必须依赖于平台,以允许Java在特定平台上运行。 JVM for Windows将Java转换为不同于OS X的JVM的系统调用。

不,JVM不是平台独立的。 实际上,它们是供应商提供的特定于平台的运行时环境。 每个平台(Windows,UNIX,Mac等)都有自己的JVM来运行Java应用程序。 虽然字节代码支持连接到多个数据库..

想想音乐是在MP3播放器,CD播放器和老忠实的盒式磁带播放器(Boom Box)中播放的。 输出始终相同,即音乐。 但是输入(媒体,即MP3播放器的.mp3文件,CD播放器的CD和盒式磁带播放器的磁带)因系统而异[这里的系统将是各种操作系统,如Windows,UNIX,Mac等..]。 希望我能够解决你的问题..

因为需要某种方法将独立于平台的应用程序的Java调用转换为与底层操作系统兼容的调用。

JVM依赖于操作系统。 要使代码独立,应该依赖某些东西,那就是JVM。 在下载JDK时,它会询问您要为其下载哪个操作系统。 这显然意味着JVM依赖于平台。

JVM与平台无关

这里的关键是JVM依赖于操作系统 – 因此,如果您运行的是Mac OS X,那么您将拥有与运行Windows或其他操作系统时不同的JVM。 这个事实可以通过尝试为您的特定计算机下载JVM来validation – 在尝试下载时,您将获得与不同操作系统相对应的JVM列表,您显然会选择针对操作系统的任何JVM目标。你在跑步。

就像 – * – 做一个+。

我们都知道Java与平台无关

但我们编写代码的操作系统依赖于平台

和输出应该是平台无关的,因此,我们使jvm(介于中间并与jre一起安装)平台依赖,以便输出是独立的。

我认为它可以是平台独立的,如果许多不同的语言(每个语言都写在特定的不同平台上)结合在一起,使它动态地改变自己的代码。但是所有这些都需要付出很大的努力才能发生并可能破坏它的可移植性。

JVM将通用的字节代码转换为与机器相关的机器代码,因此JVM与平台相关。 由于这个字节码,java是独立于平台的。

不,JVM依赖于平台。 用Java编写的代码不依赖于平台。 如果在Windows操作系统上编写Java代码,则可以在Linux或其他操作系统上运行该代码。 但是Windows和Linux的JVM是不同的。 JVM可以在JRE中找到,当您从Oracle下载JRE时,它会为Window,Linux和其他操作系统提供JRE