Java是一门半编译半解释型的跨平台语言,那么这个半编译与半解释是怎么回事呢?下面的文章将为你详细进行剖析。
通常来说,我们的Java程序在本地机运行的过程中会产生out/target的文件夹,这些文件夹下存储着我们所编写的程序代码的内容,可能细心一点的小伙伴就会发现,在target目录下的文件的后缀名都是.class,而我们编写完的文件的后缀名是.java,那么他们之间的区别是什么呢?
在新手期的时候,老师通常会先教我们一个如何快速尝试运行Java版本的Hello World的方法。首先,我们会根据Java语法写出该段程序,然后保存进文件,
下一步是打开terminal(cmd),然后输入javac Hello.java,然后我们就可以得到一份Hello.class的文件啦,而这个Hello.class文件,就是我们通常说的字节码文件
例如这份简单的HelloWorld的文件,我们想要运行它也是十分简单的,只需要敲入java Hello即可运行代码
ok,那么究竟这两个命令是做什么用的大家也都大致清楚了,javac就是把我们可阅读的代码编译成字节码文件,那么我们来看下这份字节码文件是什么样的吧
这样的一份字节码文件,底层系统依然无法理解我们的程序想要的是什么,因此需要有一个工具人将我们的意图解释给机器停,于是就产生了解释器,也就是我们的java指令去调用的程序;解释器的工作是把字节码文件解释成底层指令,然后去执行这些底层指令,达成我们需要的效果,也就是说,底层真正在执行什么样的指令完全依赖于虚拟机的解释,开发者只需要关注上层的应用开发,无需过度去关心底层实现,将这些底层实现交给虚拟机开发者去维护即可,真正做到一份代码,到处运行的效果,就是所谓的Write Once,Run Anywhere,因此我们说Java是一门半编译半解释型的跨平台语言。