Java JVM与C++;编译程序

Java JVM与C++;编译程序,java,c++,jvm,Java,C++,Jvm,我有一个问题,我不能给出令人满意的答案。Java因其独立于机器体系结构和JVM而臭名昭著。我明白了以下几点: 不同的JVM实现位于不同的机器上,以便从相同的输入(.class文件)生成适当的输出(对于任何不同的体系结构都不同) 现在让我们考虑C++。为什么不对Java做同样的事情呢?即,为不同的架构实现不同的C++编译器版本,用相同的源给它们,并使每个编译器产生适当的输出;只需让C++编译器模仿JVM!p> 这是我的问题,因为我无法理解为什么Java是独一无二的…C++编译器已经做到了这一点

我有一个问题,我不能给出令人满意的答案。Java因其独立于机器体系结构和JVM而臭名昭著。我明白了以下几点:

  • 不同的JVM实现位于不同的机器上,以便从相同的输入(.class文件)生成适当的输出(对于任何不同的体系结构都不同)

现在让我们考虑C++。为什么不对Java做同样的事情呢?即,为不同的架构实现不同的C++编译器版本,用相同的源给它们,并使每个编译器产生适当的输出;只需让C++编译器模仿JVM!p>


这是我的问题,因为我无法理解为什么Java是独一无二的…

C++编译器已经做到了这一点。不同之处在于,虽然类文件是由JVM解释的,但是C++应用程序通常不作为源文件分发。
当然,这也要求您使用适用于所有平台的标准库。这里没有什么神奇的东西。你已经编译了C++等语言,部分编译成java,解释为Ruby .< /P> < P>。据我所知,这正是发生的(正如Kayaman所说)。您可以编写一个源代码,并为不同的平台编译它,例如gcc/mingw或visualforwindows、gccforlinux等


< C++ C++与java之间的区别在于,从C和C++中,直接调用系统更容易,直接与文件系统、声音设备等一起工作。这些系统调用对于每个系统都是不同的,这就是代码不能移植的原因。这意味着C++代码的可移植性是程序员的选择。

因为如果你这样做,你就拥有了java。如果C++与低层资源没有直接连接,那么这种语言的许多优点就消失了。C++和汇编语言也是一样的。创建更高级的语言将对机器资源的控制产生负面影响


阅读这篇关于Java的文章:

你能更善于分析吗?我仍然不理解Java的独特性。感谢you@ILIAS您是如何想到Java在某种程度上是独一无二的?@ILIAS-使用Java,您可以编译成一个.class文件,JVM在运行时完成其余的转换。用C++,编译器可以完成所有的工作,并直接生成一个可执行文件。就这些,太多了。Java之所以“独一无二”,是因为它背后有一家大公司,将其宣传为独一无二。就像可口可乐提供“开放的快乐”和“清新的味道”。@Kayaman-Java是独一无二的,因为Java的推广者说它是独一无二的!喝凉饮料@波普森和圣诞老人。你搞错了。JVM实现不会从类文件生成输出。