我们可以将高级编程语言按照程序的执行方式分为两种:
- 编译型:编译型语言会通过编译器将源代码一次性翻译成可被该平台执行的机器码。一般情况下,编译型语言的执行速度较快,开发效率比较低。常见的编译性语言有C、C++、Go、Rust等等。
- 解释型:解释型语言会通过解释器一句一句的将代码解释为机器代码后再执行。解释型语言开发效率比较快,执行速度比较慢。常见的解释行语言有Python、JavaScript、PHP等等。
根据维基百科介绍:
为了改善编译语言的效率而发展出的即时编译技术,已经缩小了这两种语言间的差距。这种技术混合了编译型语言与解释型语言的优点,它像编译语言一样,先把程序源代码编译成字节码。到执行期时,再将字节码直译,之后执行。Java就是这种技术的代表产物。
Java程序从源码到运行的过程如下所示
.java文件 —〉 javac编译 —〉 .class文件 —〉 解释器&JIT
—〉 机器可理解的代码 —〉 计算机
为什么说Java语言“编译与解释”并存?
这是因为Java语言既具有编译语言的特征又具有解释语言的特征。因为Java程序要经过先编译,后解释两个步骤,由Java编写的程序需要先经过编译步骤,生成字节码(后缀名是.class的文件),这种字节码必须由Java解释器来解释执行。