Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:但是您需要创建每个JVM,不是吗?_Java - Fatal编程技术网

Java:但是您需要创建每个JVM,不是吗?

Java:但是您需要创建每个JVM,不是吗?,java,Java,我刚刚开始从Python学习Java作为第二语言,但我不理解它的第一点。据我了解,它说: 将每种编译器(例如C/C++编译器)与每种CPU结合起来是一件非常麻烦的事情。另一方面,Java在安装JVM后可以普遍工作,因为它的中间代码由JVM解释,而不是生成特定的本机代码 …但是您不需要将每种JVM实现到每种CPU吗?这真的是Java相对于C/C++的优势吗 我认为在SO或互联网上的其他地方都有类似的情况,但很抱歉,我想不出任何好的搜索词。每种CPU的JVM都是由oracle和其他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构建


作为程序员,您只需编写自己的代码并将其编译成.class文件。那么,提供一个JVM来在特定的机器上运行这些类文件是其他人的问题。

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

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

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

但是如果您只编写一个编译器,将我的语言编译成java字节码,那么用户就可以在JVM上运行java字节码

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


例如,Scala的开发人员就是这样做的。

是的,但这不是我们的问题。Python也是如此,它也为不同的平台编写了一个VM。有人只为每个JVM创建一次。如果你用C语言编写,你每次都需要为每个平台编译。你还需要每次都制作一个C/C++编译器和一个链接器。