Java产品是否在字节码阶段部署?

时间:2018-05-06 14:14:16

标签: java jvm

我了解到java程序在编译后会转换为字节码,并且会在执行阶段通过 JVM 再次转换为本机代码。

我还了解到java程序执行速度比没有中间执行阶段的语言的其他程序慢(因为java字节码需要在每次执行时转换为本机代码)。平台无关编程有一些优点。

但是,当谈到企业级软件时会发生什么。在我们的计算机上安装后,不需要独立于平台。

(它们以不同的方式为每个操作系统分发:Windows的ex .exe设置)

他们是否正在使用某些方法将其产品直接编译为本机代码并进行部署?

或者他们是否仍然使用字节码文件构建和部署他们的产品?

1 个答案:

答案 0 :(得分:2)

Java与平台无关。

意味着无论何时,程序都是用JAVA编写的,它都可以在任何OS平台上运行。

  1. 使用javac命令编译JAVA程序。
  2. JAVA编译器的结果是.class文件或字节码,而不是机器本机代码(与C编译器不同)。
  3. 生成的字节码是不可执行的代码,需要解释器才能在机器上执行。这个解释器是JVM,因此Bytecode由JVM执行。
  4. 最后程序运行以提供所需的输出。

    JVM依赖于平台

    在Java中,这里的要点是JVM依赖于操作系统。每个操作系统都有自己的JVM,它与Jdk一起安装。

    1. 就Java而言,Bytecode的神奇之处在于它使平台无关。
    2. 这增加了JAVA语言的一个重要特征,称为可移植性。每个系统都有自己的JVM,安装jdk软件后会自动安装。对于每个操作系统,可以使用单独的JVM,它能够读取.class文件或字节代码。
    3. 不同的JVM是针对不同的操作系统而设计的,字节码可以在不同的操作系统上运行。
    4. 问题的重要答案 IDE没有附带任何内容(InteliJ,Eclipse等)。所有IDE使用 javac 编译Java代码并使用 java 命令运行