Fork me on GitHub

compile once,run anywhere

编译一次,到处运行;指的是Java语言的跨平台能力,而这种能力主要由Java虚拟机提供的,那Java语言从源代码到可以执行的机器码是怎样编译、运行的呢?Java源代码经过javac编译后生成屏蔽操作系统和硬件的字节码,再经由JVM编译、解释执行。

Java语言对字节码文件提供了三种执行方式:

  1. 解释执行,逐条代码边翻译边执行
  2. 编译执行(动态编译),由JIT(存在于JVM中,Java in time,Java即时编译器)将热点代码(使用频率高的代码)编译为机器码
  3. AOT二次编译,先形成静态的二进制文件,运行时指定该静态文件,需要手动指定,利用jaotc工具可以实现静态编译

通过指定参数选择Java字节码的执行方式:

  1. java -Xmixed参数,编译和解释执行混合执行的方式,默认方式
  2. java -Xint,解释(interpret)执行
  3. java -Xcomp 编译(compile)执行
  4. jaotc工具指定静态编译模块,待运行时加载该模块即可

 

posted @ 2018-05-05 12:59  gitmoji  阅读(260)  评论(0编辑  收藏  举报