运行编译器和解释器
Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代码叫做字节码(ByteCode),它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行。
‘贰’ 编译执行和解释执行有什么区别
编译执行就像你买的《C Primer》中文版,译者全部翻译完(编写代码),拿到出版社去(编译器),编辑们校对没有发现错别字(编译),然后出版给你看,只要出版社(编译器)工作正常,那么就可以认为书的内容肯定没有错(可以正确执行);
解释执行就像你去听报告,老外一边讲(代码),同声传译(解释器)一边翻给你听(解释执行),如果哪一句老外讲错了(代码出错),同声传译才卡壳,但是前面已经翻译出去的,肯定是没啥问题(部分正常执行了);
这么说你理解了没有?编译执行效率高,但灵活性差(任何修改都要重编译),代码保密性好;解释执行效率低一点(这是以前的说法,现代解释器的效率也可以非常高),灵活性好,代码保密性差;
还有一种介于两者之间的执行方式,半编译执行,像大名鼎鼎的Java和C#等等,就是这种方式,是实现跨平台的优良解决方案。
‘叁’ 编译器和解释器的主要区别是什么他们相对于对方各自的优点
解释器
是
解释执行
的源代码,
编译器
是将源代码编译成
目标代码
他们最大的区别是程序运行时需要解释器边解释边执行,而编译器则在运行时是完全不需要的
解释器的优点是比较容易让用户实现自己跨平台的代码,比如java,php等,同一套代码可以在
几乎所有的
操作系统上执行,而无需根据操作系统做修改;
编译器的目的就是生成目标代码再由连接器生成可执行的
机器码
,这样的话需要根据不同的操作系统编制代码,虽然有像Qt这样的源代码级跨平台的编程工具库,但在不同的平台上仍然需要重新编译连接成可执行文件,但其执行效率要远远高于解释运行的程序。
编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;
而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.
这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式)
‘肆’ 璁$畻链虹▼搴忕殑瑙i喷鍜岀紪璇戞柟寮
璁$畻链虹▼搴忔槸濡备綍杩愪綔镄勫憿锛熻В閲婃柟寮忓拰缂栬疟鏂瑰纺澶т笉钖岋紒链鏂囧皢娣卞叆鎺㈣ㄨ$畻链虹▼搴忕殑瑙i喷鍜岀紪璇戞柟寮忥纴甯锷╄昏呮洿濂藉湴浜呜В杩欎袱绉嶆柟寮忕殑镙规湰鍖哄埆銆
🔍瑙i喷鏂瑰纺
瑙i喷鏂瑰纺鏄阃愬彞镓鎻忋侀愬彞缈昏疟锛岀劧钖庨愬彞镓ц屻傝繖镒忓懗镌锛屽綋婧愮▼搴忓嚭鐜板惊鐜镞讹纴瑙i喷绋嫔簭浼氶吨澶岖炕璇戝拰镓ц岃繖涓缁勮鍙ワ纴鏁堢巼澶уぇ闄崭绠銆
🚀缂栬疟鏂瑰纺
缂栬疟鏂瑰纺鍒欐槸鍏埚皢婧愮▼搴忕炕璇戞垚鐩镙囱瑷绋嫔簭锛岀劧钖庡啀杩愯屻傝繖涓崭粎澶уぇ鎻愰珮浜嗘墽琛岄熷害锛岃缮阆垮厤浜嗛吨澶岖炕璇戝拰镓ц岀殑娴璐广
🎯镙规湰鍖哄埆
鍒ゆ柇鏄瑙i喷鍣ㄨ缮鏄缂栬疟鍣锛屽叧阌鐪嬫槸钖︽湁镫绔嬬殑鐩镙囩▼搴忕敓鎴愩傜紪璇戝櫒浼氱敓鎴愮嫭绔嬬殑鐩镙囩▼搴忥纴钥岃В閲婂櫒鍒欎笉浼氥傝繖灏辨槸瑙i喷鍜岀紪璇戞柟寮忕殑镙规湰鍖哄埆锛