目录
java语言本身的特性
跨平台性:java语言诞生之初就有一句口号,一次编译,到处运行。
对比:其他的语言,如C++写出来的代码想要在不同的平台上面运行,那么对于不同的平台来说都需要重新编译一次。,这势必造成资源损耗。但是Java只需要依靠jvm虚拟机就可以让java代码只需要编译一次,就在不同的平台上流畅运行。
java的文件拓展名
(1):“.java” 的含义:编写Java源程序保存时候的文件拓展名。例如“Cat.java”。
(2):“.calss”的含义:java源程序“XXX.java”经过编译转为成的字节码文件拓展名
jvm虚拟机的编译与解释器
前端编译器:比如javac,作用就是把源代码转化为16进制的字节码。因为这个过程发生在编译前期,所以我们把他叫作前端编译器。
后端编译器:
(1)JIT编译器:要运行程序的时候,将jvm虚拟机上的字节码转化为本地的机器码。然后系统来执行本地的机器码。
(2)Java解释器:直接解释执行字节码。
对比:Java解释器的启动时间快(因为不需要像JIT编译器那样把字节码转化为本机的机器码),JIT编译器的运行时间快,因为机器码是“计算机的语言”,没有什么语言可以快过二进制机器码。
字节码与机器码的区别辨析
性质本身
字节码:jvm虚拟机所特有的,可以跨平台使用,十六进制的数。
机器码:二进制的数,在不同的平台上如果想要程序输出"hello world”有可能各平台对应的二进制码不一样。不具有跨平台性。
进制角度
字节码16进制,机器码二进制。
转化流程
前言:由于最后的后端编译器的不同,可能会有两种情况。
流程一: Java源文件——>Java字节码文件——>机器码文件——>系统执行(Jvm后端编译器为JIT编译器的情况)
流程二:Java源文件——>Java字节码文件——>直接被执行(Jvm后端编译器为Java解释器的情况)