Java:但你需要制作每个JVM,不是吗?

时间:2014-07-31 14:26:30

标签: java

我刚刚开始学习Java(作为Python的第二语言),但我无法理解它的第一点。根据我的理解,它说:

"对每种CPU 使各种编译器(例如C / C ++)太麻烦了。另一方面,一旦安装了JVM,Java就会普遍运行,因为它的中间代码是由JVM解释的,而不是制作特定的本机代码。"

...但是你不需要为每种CPU实现各种JVM吗?这真的是Java优于C / C ++的优势吗?

我认为在互联网上的SO或其他地方有相关内容,但很抱歉,我无法想出任何好的搜索词。

3 个答案:

答案 0 :(得分:5)

各种CPU的各种JVM 由oracle和其他JVM供应商的人员实现:在C / C ++的情况下,你必须为每个CPU / OS编译你的应用程序代码

答案 1 :(得分:4)

是的,某人必须让JVM能够在不同的平台上运行,但有人不是你。

如果您转到Java https://java.com/en/download/manual.jsp的下载链接,您会看到有适用于Windows,Mac,Linux和Solaris等的各种JVM版本

作为程序员,您只需编写自己的代码并将其编译为.class文件即可。然后,提供JVM以在特定计算机上运行这些类文件是别人的问题。

答案 2 :(得分:1)

是的,有人需要为每种CPU实现各种JVM吗?如果要使用这个JVM,它也将包含一个jit编译器,因此与编写编译器相比没什么好处。

但它可能正在谈论使用jvm作为您自己的编译语言的目标。

想象一下:你想制作自己的语言。让我们称之为MyLanguage。通常必须为每个cpu编写一个编译器,并为每个要支持的操作系统提供大量支持代码。

但是如果你只编写一个将MyLanguage编译为java字节码的编译器,那么用户可以在JVM上运行java字节代码。

然后,您的语言可用于JVM当前支持的任何处理器/操作系统。而你只需编写一个编译器。

这就是Scala开发人员所做的事情。