1. 程式人生 > 程式設計 >JVM從零開始:Java體系結構--認識Java(一)

JVM從零開始:Java體系結構--認識Java(一)

原文地址:www.sudo.ren/article/75?…

1.認識Java

根據不同的技術規範,Java劃分為3中結構獨立但又相互依賴的技術分支:Java SE(標準版)、Java EE(企業版)、Java ME(精簡版)

Java SE:活躍在桌面領域,主要包含Java API元件。

Java EE:活躍在企業級領域,主要包含Java API元件、Web元件、事務元件、分散式元件、EJB元件、訊息元件;綜合這些技術開發人員完全可以構建出一個具備高效能、結構嚴謹的企業級應用,並且Java EE也是構建SOA架構的首選平臺。

Java ME:活躍在嵌入式領域,稱為精簡版是因為JavaME僅保留了Java API中的部分元件,以及適應裝置的一些特有元件。

Java的發展,除了來自網際網路的崛起,還有Google選擇Java作為Android作業系統(手持移動裝置、嵌入式裝置、個人電腦。。。)的應用層程式語言有關。

(1)與生俱來的優點

體系結構中立 :

Java原始碼的預設編譯結果並不是可執行程式碼(本地機器指令),而是具有平臺通用性的位元組碼;實現了“一次編譯,處處執行”,並且只能在java虛擬機器器中執行,與物理宿主環境隔離。

安全性優越 :

因為java位元組碼只能在java虛擬機器器中執行,與物理宿主環境隔離,實現了安全模型,有助於防止錯誤發生,增強程式的可靠性。同時,Java的廢棄指標操作,自動記憶體管理,陣列邊界檢查,型別轉換檢查,執行緒安全機制和物理環境訪問限制等語法限制也保證了程式的安全。

多執行緒 :

Java使用多執行緒的併發機制將任務進行分散,而不是全部集中在主執行緒內,採用非同步的方式併發執行多項任務,具有極高的執行效率。

分散式 :

Java與生俱來對分散式技術的支援比較完善,充分利用分散式環境中的每一個節點去協同處理任務,具有高效的執行效率,還能有效降低單機負載以及提升穩定性和可用性。(如:RMI--Java遠端方法呼叫,JMS--Java訊息服務)豐富的第三方開源元件 :隨處可見成熟的第三方開源框架。

(2)語法結構和物件模型

Java繼承了C語言的語法結構,並改編了C++的物件模型。 類是Java最基本的封裝單元,所有的操作都發生在類中; 屬性和方法構成了一個簡單的類,屬性用於定義物件的各種“器官”,而方法用於定義物件的一系列“行為”。 在類內部,我們可以定義很多元素特徵,統稱為類成員,Java的一些基本類元素資訊如下: 關鍵字; 識別符號 操作符(空白分隔符、普通分隔符); 註解(@Annotation型別、描述型別); 資料型別(原始資料型別、引用型別); 屬性(常量、變數); 運運算元和表示式; 控制語句(流程控制語句、迴圈控制語句); 異常處理; 方法體; 在語法層面上,開發人員可以在程式中直接使用 new關鍵字建立物件,並返回當前物件的一個引用(reference)。要注意,Java中的引用絕不等價於C++中的指標,因為引用型別的變數持有的僅僅只是一個引用而已非實際值,也就是說不能直接與物件打交道,而必須通過引用進行“牽引”,在程式中,即便不存在物件例項,引用也允許獨立存在,也就是說可以宣告一個引用,不一定要與物件關聯,但務必確保在真正使用一個物件時,它已經完成了初始化操作。(如下圖)

(3)歷史版本追溯

1991年: Sun公司的James Gosling(Java語言主要創始人,Java之父)等人為嵌入式裝置開發了一種叫Oak的語言,沒有引起大多數人注意;
1994年:隨著網際網路和3W的發展,他們使用Oak編寫了一個叫做HotJava的瀏覽器,得到Sun公司執行長的支援;
1995年:為了促銷和法律的原因,Oak正式更名為Java,同年Sun釋出了Java1.0版本,並提出了“Write Once,Run Anywhere”(一次編譯,出處執行)的口號。Java1.0 功能並不多,只有JDK配套的純直譯器實現Java虛擬機器器(Sun Classic VM),Applet,AWT等技術。
1997年:Java1.1釋出,在Java1.0的基礎上,添加了JDBC、JAR格式支援、JavaBeans、RMI等技術,並在語法上開始支援反射和內部類等操作。
1998年:Java1.2釋出,將Java劃分為3種結構獨立卻彼此依賴的技術體系分支,分別是J2SE(標準版)、J2EE(企業版)、J2ME(精簡版),在這個版本中添加了EJB、Java Plug-in、Java IDL、Swing等技術,並且Sun公司首次在JDK中內建了JIT編譯器。
2000年:Java1.3釋出,沒有引進太多的技術和改變,只是在基礎類庫上做了改進。
2002年:Java1.4釋出,引進了相當多的特性,如正則表示式、異常鏈、NIO、日誌類、XML解析器和XSLT轉換器等,意味著Java開始走向成熟。
2005年:Java1.5釋出,同時也是在1.5版本釋出後,後續的Java版本都改為以Java5、Java6、Java7等規則進行命名。在早期中Sun公司對Java各版本的語法改變並不大,但1.5版本針對語法層面的改進相當多,幾乎導致整個API都發生了變化。比如自動裝箱/拆箱、泛型、列舉、@Annotation、可變長引數、foreach、粗粒度的並行模型等。
2006年:Java6釋出,改變更多是體現在虛擬機器器內部,主要以同步物件鎖、垃圾回收、型別裝載等方面的演演算法更新為主。同年Sun公司正式宣佈Java以GPL(General Public License)v2的開源協議進行原始碼公開,並建立了OpenJDK對Java的原始碼庫進行獨立管理。
2010年:由於Sun公司無力推動Java7的研發工作,正式被Oracle公司收購,並接替Java7的後續研發。由於Java7預期的功能非常多,不得不導致Oracle將部分功能進行裁剪,延遲到Java8的版本中再進行釋出。Java7在語法層面上做了較大的改變,還引入許多新技術,比如更新了Java的檔案系統、細粒度的Fork/Join並行程式設計、混合語言等;同時Java虛擬機器器內部也做了許多改進和調整,比如Java7提供了G1垃圾收集器、類裝載器的並行裝載增強實現等。複製程式碼