Java:但是您需要创建每个JVM,不是吗?
我刚刚开始从Python学习Java作为第二语言,但我不理解它的第一点。据我了解,它说: 将每种编译器(例如C/C++编译器)与每种CPU结合起来是一件非常麻烦的事情。另一方面,Java在安装JVM后可以普遍工作,因为它的中间代码由JVM解释,而不是生成特定的本机代码 …但是您不需要将每种JVM实现到每种CPU吗?这真的是Java相对于C/C++的优势吗 我认为在SO或互联网上的其他地方都有类似的情况,但很抱歉,我想不出任何好的搜索词。每种CPU的JVM都是由oracle和其他JVM供应商的人员实现的:在C/C++的情况下,您必须为每个CPU/O编译应用程序代码。是的,必须有人制作一个JVM才能在不同的平台上运行,但那个人不是你 如果您转到Java的下载链接,您可以看到Windows、Mac、Linux和Solaris等的各种JVM构建Java:但是您需要创建每个JVM,不是吗?,java,Java,我刚刚开始从Python学习Java作为第二语言,但我不理解它的第一点。据我了解,它说: 将每种编译器(例如C/C++编译器)与每种CPU结合起来是一件非常麻烦的事情。另一方面,Java在安装JVM后可以普遍工作,因为它的中间代码由JVM解释,而不是生成特定的本机代码 …但是您不需要将每种JVM实现到每种CPU吗?这真的是Java相对于C/C++的优势吗 我认为在SO或互联网上的其他地方都有类似的情况,但很抱歉,我想不出任何好的搜索词。每种CPU的JVM都是由oracle和其他JVM供应商的人员
作为程序员,您只需编写自己的代码并将其编译成.class文件。那么,提供一个JVM来在特定的机器上运行这些类文件是其他人的问题。是的,有人需要为每种CPU实现每种JVM吗?如果要使用这个JVM,它还将包含一个jit编译器,因此与只编写编译器相比没有多少好处 但它可能是在谈论使用jvm作为您自己的编译语言的目标 想象一下:你想创造自己的语言。让我们称之为我的语言。通常,您必须为每个cpu编写一个编译器,并为您想要支持的每个操作系统编写大量支持代码 但是如果您只编写一个编译器,将我的语言编译成java字节码,那么用户就可以在JVM上运行java字节码 然后,可以在JVM当前支持的任何处理器/操作系统上使用您的语言。你只需要写一个编译器
例如,Scala的开发人员就是这样做的。是的,但这不是我们的问题。Python也是如此,它也为不同的平台编写了一个VM。有人只为每个JVM创建一次。如果你用C语言编写,你每次都需要为每个平台编译。你还需要每次都制作一个C/C++编译器和一个链接器。