編譯器Compiler
編譯器,是將便於人編寫,閱讀,維護的高階電腦語言翻譯為電腦能解讀、執行的低階機器語言的程式。編譯器將原始程式(Source program)作為輸入,翻譯產生使用目的語言(Target language)的等價程式。原始碼一般為高階語言 (High-level language), 如 Pascal、C++、Java 等,而目的語言則是組合語言或目的機器的目的碼(Object code),有時也稱作機械碼(Machine code)。
一個現代編譯器的主要工作流程如下:
原始碼 (source code)
→ 預處理器 (preprocessor)
→ 編譯器 (compiler)
→ 組譯器 (assembler)
→ 目的碼 (object code)
→ 聯結器 (Linker)
→ 可執行程式 (executables)

編譯式語言(例:C,Fortran..)
用編譯器將程式碼轉換成目標平台專用的執行檔
l 優點
n 執行速度快,可與硬體結合。
n 可寫較大的程式。
l 缺點
n 執行檔可攜性不高。
直譯式語言(Basic,dBase..)
用解譯器對原始程式碼一邊讀程式碼一邊執行。
l 優點
n 程式可攜性高。
l 缺點
n 執行速度慢。
n 原始碼必須公開。
Virtual Machine(Java)
是一個虛構出來的電腦,通過在實際的電腦上模擬模擬各種電腦功能來實現的。Java虛擬機有自己完善的硬體架構,如處理器、堆疊、暫存器等,還具有相應的指令系統。JVM屏蔽了與具體作業系統平臺相關的信息,使得Java程序只需生成在Java虛擬機上運行的目標代碼(位元組碼),就可以在多種平臺上不加修改地運行。
l 優點
n 可以用重新編譯即可在各個不同平台執行
l 缺點
n 執行效率不比編譯是語言來的佳,可是比直譯式語言來的快。
n 須要先安裝Virtual Machine才可執行






CSIE (1)

第一個, 所謂的 compiler 跟 interpreter 的定義並不都是針對原始碼. 正確的說法是. compiler 並不需要 run time parsing. 而 interpreter 要.
另外一點, JVM 的本身就是 interpreter. 只是他所直譯的 input 是 java byte code. java 的架構是上述兩種機制都有用到. .java -- javac --> .class (compiler), .class --> jvm (interpreter). 而不是一個前所未見的技術.