我刚刚开始学习Java(作为Python的第二语言),但我无法理解它的第一点。根据我的理解,它说:
"对每种CPU 使各种编译器(例如C / C ++)太麻烦了。另一方面,一旦安装了JVM,Java就会普遍运行,因为它的中间代码是由JVM解释的,而不是制作特定的本机代码。"
...但是你不需要为每种CPU实现各种JVM吗?这真的是Java优于C / C ++的优势吗?
我认为在互联网上的SO或其他地方有相关内容,但很抱歉,我无法想出任何好的搜索词。
答案 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开发人员所做的事情。