java - 为什么其他语言而不是java不是平台无关的?

标签 java jvm programming-languages platform-independent

我们称java为平台无关的,因为java有一个虚拟机JVM,它可以在任何平台上独立执行字节码。

但是 JVM 必须安装(或必须驻留在)该系统上。

现在,为什么人们不为其他现有语言创建像 JVM 这样的虚拟机,并将这些语言称为平台无关的语言?

最佳答案

平台独立性与虚拟机没有直接关系。平台独立开发意味着您开发的软件可以在多个平台上运行。这也可以使用 C 或 C++ 来实现,例如使用 QT 或 boost 等多平台库(无论您的目的是什么)。必须提到的是,C 和 C++ 不在虚拟机中运行。其他语言(如 Java)和 .Net 语言(如 C#)被转换为字节码并在虚拟机中运行。要在不同平台上运行字节码,您需要适用于这些平台的虚拟机。因此必须为每个特定平台开发虚拟机。

而且您也不能简单地为 C 创建虚拟机,它根本不被认为可以在虚拟机中运行。您拥有两种语言:“直接”运行的语言和在虚拟机中运行的语言。您可以使用这两种语言开发独立于平台的软件。简而言之:平台独立性与虚拟机没有直接关系(但当然,虚拟机不需要为每个平台编译一次代码,只需要一次编译,并且允许在拥有该虚拟机的所有平台上直接执行,因此拥有虚拟机可以使事情变得容易一些。)

关于java - 为什么其他语言而不是java不是平台无关的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25465987/

相关文章:

java - 自定义 Tomcat 错误页面不显示图像

从 android 调用端点时出现 java.lang.VerifyError

assembly - 汇编语言从一种架构到另一种架构是否不同?

java - System.out.println 最终阻塞

java - 为什么 OpenJDK 将私有(private)方法放入 vtable 中?

javascript - 在 python 中,我可以编写 myarray[ :3] to address elements of a list. 是否可以在 javascript 或节点中编写?

c - 将节点放入不应该存在的解析树中

java - 如何只选择 jtable 中一行中的单元格?

java - HBase 中要批量删除多少个?

java - 如何修复 java.lang.UnsupportedClassVersionError : Unsupported major. 次要版本