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

时间:2010-01-22 21:27:26

标签: java jvm

只是想知道java何时与平台无关,那么JVM是否有任何特定的原因使平台依赖...

13 个答案:

答案 0 :(得分:18)

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

答案 1 :(得分:15)

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

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

答案 2 :(得分:14)

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

  

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

     

每个Java程序都是   编译成一种称为Java字节码的中间语言。 JVM   用于将字节码转换为a的机器语言   特定的计算机,并实际执行相应的   机器语言指令也是如此。 JVM和字节码组合在一起   赋予Java作为“可移植”语言的地位。

     

机器语言取决于操作系统

     

鉴于以前的信息,推断它应该更容易   回答这个问题。由于JVM必须将字节码转换为   机器语言,因为机器语言取决于   正在使用的操作系统,很明显JVM是平台   (操作系统)依赖。这个事实可以通过尝试来验证   下载JVM - 您将获得与JVM相对应的列表   不同的操作系统,你显然会挑选任何一个JVM   是您正在运行的操作系统的目标。

引自Is the JVM Platform Dependent?

答案 3 :(得分:9)

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

答案 4 :(得分:4)

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

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

答案 5 :(得分:3)

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

答案 6 :(得分:1)

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

答案 7 :(得分:1)

JVM与平台无关

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

答案 8 :(得分:0)

就像 - * - 制作一个+。

我们都知道Java是独立于平台的

但我们编写代码的OS是依赖于平台的

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

答案 9 :(得分:0)

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

答案 10 :(得分:0)

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

答案 11 :(得分:0)

JVM是依赖于平台的,因为它需要Java字节代码并为当前操作系统生成字节代码。因此,Java软件依赖于平台,而Java语言则依赖于平台,因为不同的操作系统具有不同的JVM。

答案 12 :(得分:-1)

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