1.JVM的作用
java是高级语言,无法被机器直接识别,所以他首先需要javac编译生成.class字节码文件,之后再通过JVM的解释,解释成机器码文件之后才能被计算机识别。而C和C++这样的是直接编译完就能生成机器码文件供计算机识别的,那么问题来了,为什么还要使用java呢?因为C和C++的编译只能针对固定的操作系统上运行,而JVM赋予java一次编译,到处运行的特点,也就是说在java编译完之后可以通过不同的操作系统JVM来解释到相应的操作系统上面运行,这就是编译型语言(C)和解释型(python)语言的区别,java这种就是二者兼备,既有编译的特性,又有解释的特性,这个特性是JIT赋予的,JIT将一些解释过的热代码存起来,再次使用的时候不用解释直接运行。JDK-JRE-JVM-JIT
2.不同的文件名后缀,各种软件是怎么识别的
不同的文件名后缀拥有不同的字节码文件的标题,也就是文件的第一行的前几个字节,例如png,txt二者就用不同的标题,这样的话就需要不同的软件程序才能打开相应的文件了