1. 程式人生 > >1.談談對Java平臺的理解

1.談談對Java平臺的理解

1.談談你對Java平臺的理解

 Java 本身是一種面向物件的語言,最顯著的特性有兩個方面,一是所謂的“一次編譯,到處執行”(Compile once,run anywhere),能夠非常容易地獲取跨平臺能力;另外就是垃圾收集(GC,Garbage Collection),Java 通過垃圾收集器(Garbage Collector)回收分配記憶體,大部分情況下,程式設計師不需要自己操心記憶體的分配和回收。

“一次編譯,到處執行”說的是Java語言跨平臺的特性,Java的跨平臺特性與Java虛擬機器的存在密不可分,可在不同的環境中執行。比如說Windows 平臺和 Linux 平臺都有相應的JDK,安裝好JDK後就有了 Java 語言的執行環境。其實 Java 語言本身與其他的程式語言沒有特別大的差異,並不是說 Java 語言可以跨平臺而是在不同的平臺都有可以讓 Java 語言執行的環境而已,所以才有了 Java 一次編譯,到處執行這樣的效果。

嚴格的講,跨平臺的語言不止Java一種,但是Java是較為成熟的一種。“一次編譯,到處執行”這種效果跟編譯器有關。程式語言的處理需要編譯器和直譯器。Java虛擬機器和DOS類似,相當於一個供程式執行的平臺。

程式從原始碼到執行的三個階段:編碼——編譯——執行、除錯。Java在編譯階段則體現了跨平臺的特性。編譯過程大概是這樣的:首先將Java原始碼轉化成 .class 位元組碼檔案,這是第一次編譯;.class 位元組碼就是可以到處執行的檔案,然後 .class 位元組碼會被轉化成目標機器碼,這是由JVM 來執行的,即Java 的第二次編譯。

“到處執行”的關鍵和前提就是JVM,因為在第二次編譯中 JVM 起著關鍵作用。在可以執行 Java 虛擬機器的地方都內含著一個JVM作業系統。從而使 Java 提供了各種不同平臺上的虛擬機制,因此實現了“到處執行”的效果。需要強調的一點是,Java並不是編譯機制,而是解釋機制。Java 位元組碼的設計充分考慮了JIT 這一即時編譯方式,可以將位元組碼直接轉化成高效能的本地機器碼,這同樣是虛擬機器的一個構成部分。

 

Java程式碼編譯是由Java原始碼編譯器來完成,流程圖如下所示:

Java位元組碼的執行是由JVM執行引擎來完成,流程圖如下所示:

 

(ps: 摘自Java核心技術36講)                           &n