1、解析執行:
java
就像外語翻譯中的「口譯」同樣,說一句翻一句,不產生全文的翻譯文本。這種工做方式很是適合於人經過終端設備與計算機會話,如在終端上打一條命令或語句,解釋程序就當即將此語句解釋成一條或幾條指令並提交硬件當即執行且將執行結果反映到終端,從終端把命令打入後,就能當即獲得計算結果。這的確是很方便的,很適合於一些小型機的計算問題。但解釋程序執行速度很慢,例如源程序中出現循環,則解釋程序也重複地解釋並提交執行這一組語句,這就形成很大浪費。
2、編譯執行:編程
這是一類很重要的語言處理程序,它把高級語言(如FORTRAN、COBOL、Pascal、C等)源程序做爲輸入,進行翻譯轉換,產生出機器語言的目標程序,而後再讓計算機去執行這個目標程序,獲得計算結果。 編譯程序工做時,先分析,後綜合,從而獲得目標程序。所謂分析,是指詞法分析和語法分析;所謂綜合是指代碼優化,存儲分配和代碼生成。爲了完成這些分析綜合任務,編譯程序採用對源程序進行屢次掃描的辦法,每次掃描集中完成一項或幾項任務,也有一項任務分散到幾回掃描去完成的。下面舉一個四遍掃描的例子:第一遍掃描作詞法分析;第二遍掃描作語法分析;第三遍掃描作代碼優化和存儲分配;第四遍掃描作代碼生成。 值得一提的是,大多數的編譯程序直接產生機器語言的目標代碼,造成可執行的目標文件,但也有的編譯程序則先產生彙編語言一級的符號代碼文件,而後再調用匯編程序進行翻譯加工處理,最後產生可執行的機器語言目標文件。
摘自:深刻java虛擬機優化