有没有可能使C++;通过让它像Java一样在VM中运行而实现平台独立? P> java是高度可移植的,没有严重的开销,C++不能独立于平台吗?< /P> < P>是的,完全是可能的。例如,您可以编译C++到JavaScript(参见)或CLI字节代码()以运行在Windows或Linux上,或各种其他目标。 这些都没有执行本地C++,而且大多数都不直接访问操作系统资源。因此,可移植性需要付出一定的代价,通常,如果您想支付针对web浏览器或CLI的成本,您可以使用更适合这些平台的语言。

有没有可能使C++;通过让它像Java一样在VM中运行而实现平台独立? P> java是高度可移植的,没有严重的开销,C++不能独立于平台吗?< /P> < P>是的,完全是可能的。例如,您可以编译C++到JavaScript(参见)或CLI字节代码()以运行在Windows或Linux上,或各种其他目标。 这些都没有执行本地C++,而且大多数都不直接访问操作系统资源。因此,可移植性需要付出一定的代价,通常,如果您想支付针对web浏览器或CLI的成本,您可以使用更适合这些平台的语言。,c++,jvm,virtual-machine,portability,C++,Jvm,Virtual Machine,Portability,实际上,代码执行方法(无论代码是由VM编译、解释、运行等)更多地是实现的属性,而不是语言 当人们说C++是编译语言,JavaScript是一种解释语言时,这并不意味着你不能编写一个编译器,它将JavaScript代码翻译成你选择的硬件上的机器代码,而不是为语言提供实现的通用方法。p> 实践中,C++是一种高效的、接近于金属特性的工具,它是嵌入式系统编程、系统编程、图形等关键性能任务的良好选择,因此在VM中运行C++会挫败它的目的。 有点像买一块鱼片,然后在微波炉里煮 Java编译成一个与平台无关

实际上,代码执行方法(无论代码是由VM编译、解释、运行等)更多地是实现的属性,而不是语言

当人们说C++是编译语言,JavaScript是一种解释语言时,这并不意味着你不能编写一个编译器,它将JavaScript代码翻译成你选择的硬件上的机器代码,而不是为语言提供实现的通用方法。p> 实践中,C++是一种高效的、接近于金属特性的工具,它是嵌入式系统编程、系统编程、图形等关键性能任务的良好选择,因此在VM中运行C++会挫败它的目的。


有点像买一块鱼片,然后在微波炉里煮

Java编译成一个与平台无关的中间字节码,然后在运行时由特定于平台的JVM进行解释。这就是允许Java可移植的原因。每种类型的JVM都经过定制,以在平台的特定硬件体系结构上运行字节码


C/C++编译成直接在CPU上运行的本机代码(或者在操作系统允许的范围内直接运行)。因此,不能以独立于平台的方式编译C/C++。您必须使用特定于平台的编译器为要在其上运行代码的每个硬件体系结构编译C/C++代码。

Java的VM不是用Java编写的。它的声明性是由C++编写的。注意:java是“没有严重开销”,因为JVM的20年工作。我读到java在大多数任务上都可以超越C++,因为编译器对JVM进行了如此积极的优化。C++编译器不喜欢他们所运行的硬件的保证级别。“IIIIIIIIIIIIIIIIIIIIIIIIIII3”虽然有人这样说,但事实证明,java通常不能达到C++,因为这两个程序都同样优化(编译器选项、适当的算法、手动优化)。(一个好的java程序比一个写得不好的C++程序快得多,这是不值得注意的)“java”不能达到C++,我只是说,在日常工作中,java是一个非常有能力的平台。没有人能制造出一个C++编译器,它没有独立的字节码,它没有根本的原因。除非你正在考虑编译C++到java字节码,并让java JVM运行它,例如,如果JVM计数为“平台无关”,那么C++ C++字节码VM也会这样。