领导:Java是解释执行么?我:what???

143 阅读1分钟

早先Java用 Write once,run anywhere 来宣传,这句话读下来,或多或少都有些知其然而又不知其所以然内味...

当你兴致勃勃,兴高采烈,昂首挺胸地走进面试间,当你还在观察面试官的发量,或脑海里正在回味上面这句话,却不料,面试官不按常理出牌,和你说的第一句话,竟然不是让你自我介绍一下,确是。。。。

Java是解释执行么?

教科书般的回答:

  • Java本身是一种面向对象的语言,最显著的特性有两个方面,一是:write once,run anywhere,能够非常容易地获得跨平台能力
  • 另外就是垃圾回收机制(GC),不同于C/C++之处是,开发人员无需关心内存地分配与回收,这些都可以直接交给GC去处理
  • Java的运行环境通常被成为JRE,其包含了JVM和Java类库,以及JDK,而JDK可以看作是JRE的超集,提供了更多工具,比如编译器、诊断工具等等
  • 对于Java是解释执行这句话,这个说法不太精准。Java源代码通过javac编译成.class字节码文件,字节码文件经过JVM解释或编译运行
    • 解析:字节码文件经过JVM内嵌 的解析器执行

    • 编译:存在JIT编译器(Just In Time Compile即使编译器),把经常运行的代码作为“热点代码”编译与本地平台相关的机器码,并进行各种层次的优化。

    • AOT编译器:java9提供的直接将所有代码编译成机器码执行