java的‘编译器’与‘即时编译器’有什么区别?

来源:百度知道 编辑:UC知道 时间:2024/05/30 14:08:03

编译器(在windows下,javac.exe)将源代码(java文件)编译为字节码(bytecode),存放在class文件中。

字节码不能直接在机器上执行,而是通过虚拟机(windows下是java.exe)执行。具体的执行方式有两种:

1. 一般情况下解释执行。解释执行并不是“解释为用c++语言写成的程序”,而是jvm把字节码看成脚本,根据字节码中的指令,由JVM去调用实际的本地方法。

2. 在打开了JIT参数的前提下,jvm会把执行过程中发现的热点位置,由jvm内部的即时编译器编译为本地机器码直接执行。
编译器将java文件编译为class文件,解释器将class文件变为机器语言

Java的编译方式有两种,一种是和C++等语言一样的,把源代码编译成和本地机器平台相关的机器语言,叫即时编译。另一种是编译成一种中间的,与机器平台无关的,这种也是常用的,叫解释型的

我没听过即时编译器.


我知道得有, 编译, 直译.

直译: 程序保持源码状态, 执行时, 直接依照源码进行执行.

编译: 编译器将源码编译成"可执行"数据格式, 运行环境则去读取"可执行"数据格式之文档.


可执行环境有两种,

  1. 特定环境的机械语言, 如windows下的com/exe.

  2. 中间语言, 如Java. 他的程序执行环境(JVM)执行在windows上. Java编译後为可执行的中间语言, 程序执行在JVM上. 这是用来跨平台的. 现在Microsoft的.NET也有提供中间语言模式. 这就是某些程序要求先安装Java, 才能执行的原因.

你好!编译器(在windows下,javac.exe)将源代码(java文件)编译为字节码(bytecode),存放在class文件中。

字节码不能直接在机器上执行,而是通过虚拟机(windows下是java.exe)执行。具体的执行方式有两种:

1. 一般情况下