【发布时间】:2016-10-16 20:28:59
【问题描述】:
Java 是独立于平台的,因为它的代码首先被编译,然后 JVM 转换成操作系统可以理解的代码。所以我有疑问,我是否需要在每个操作系统上安装 JVM?
【问题讨论】:
标签: java linux windows macos operating-system
Java 是独立于平台的,因为它的代码首先被编译,然后 JVM 转换成操作系统可以理解的代码。所以我有疑问,我是否需要在每个操作系统上安装 JVM?
【问题讨论】:
标签: java linux windows macos operating-system
java 编译时,并没有直接编译成机器码。它被编译为bytecode - 这个字节码不能被计算机自己读取,它需要一些其他程序进入并为它解释代码。这就是 JVM 的用武之地,它获取字节码,然后将其转换为计算机可以执行的机器码。
因此,您需要一个 JVM 来运行由 java 编译器生成的字节码,尽管您不必专门安装一个。可以将 JVM 与您的 java 程序捆绑在一起,因此当用户下载您的程序时 - 他们已经安装了 java。
这具有让 java 应用程序能够在任何可以运行 JVM 的操作系统上运行的主要好处。这就是为什么java是write once, run anywhere。
【讨论】:
操作系统确实不理解没有任何翻译层的代码。 JVM 理解代码。您需要在您希望运行 java 代码的任何机器上安装运行 JVM 的 java 运行时 (JRE)。这是因为 java 不是像 C 或 C++ 这样的“本机”代码,而是需要一些东西来将指令转换为 JVM 所做的机器代码。
【讨论】:
是的,您需要有一个正在运行的 jvm 才能执行 .class 文件。 Here's 一个相关的 SO 帖子,其中包含更多详细信息。
【讨论】: