当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《考虑到Java(该语言)是独立于平台的,为什么JVM不是独立于平台的?》经验,为你挑选了4个好方法。

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



1> Chris Kannon..:

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


实际上,几个JVM*是用Java编写的:Maxine和Jikes只是两个例子.
因为启动引导程序需要一个依赖于小平台的C加载器,不管别人怎么说,JVM不是100%java :)
实际上,我忘了一个:JNI代码也包含一些C,因为它再次主要涉及与C数据结构的互操作,因此使用C作为数据定义语言是有意义的.但是,请注意列表中*not*的内容:垃圾收集器,内存分配器,本机编译器,本机汇编器.所有这些都是用Java编写的.

2> TofuBeer..:

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

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



3> 小智..:

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

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

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

机器语言取决于操作系统

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

引用来自JVM平台是否依赖?



4> FrustratedWi..:

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

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有