程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 再回首,Java溫故知新(一):Java概述,java溫故知新

再回首,Java溫故知新(一):Java概述,java溫故知新

編輯:JAVA綜合教程

再回首,Java溫故知新(一):Java概述,java溫故知新


  Java發展歷程

  Java的發展要追溯到1991年,Patrick Naughton(帕特裡克·諾頓)和James Gosling(詹姆斯·高斯林)帶領Sun公司的工程師打算為有線電視轉換盒之類的消費產品設計一種小型語言,因為這些設備的處理能力和內存都有限,所以要求語言必須要小且能生成緊湊的代碼。另外由於處理器的多樣性,這種語言不能與任何體系結構有關聯,這個項目就被命名為“Green”(參考國內許多軟件綠色版)。提起平台無關性,Pascal之父Niklaus Wirth(尼古拉斯·沃斯)曾帶領團隊設計出一種為假想的機器生成中間代碼的可移植語言,而這種假想的機器被稱為虛擬機,Java虛擬機(JVM)就是由此而來。由於當時Sun公司的人都有Unix應用開發經驗,所以語言是以C++為基礎,Gosling將這種語言命名為Oak,隨後發現Oak是一種已有的計算機語言的名字,於是將其改名為Java。

  1992年Green項目組發布了第一個產品,主要特性為智能遠程控制,然而沒有一家公司對比感興趣,包括Sun。而後Green項目組以First Person公司花費1993年整整一年以及1994年上半年的時間來尋找其技術的買家,然而一個也沒有找到。1994年First Person公司解散,而工作還在Sun公司中繼續進行,同時互聯網業日漸壯大,Web的關鍵是把超文本界面轉換到浏覽器中,1994年大部分人都在使用Mosaic,Java的開發者為了炫耀Java語言超強的能力,開發了HotJava浏覽器,HotJava具有執行網頁中內嵌代碼的能力,即所謂的applet,在1995年5月23日的SunWorld上,這一技術印證得到了展示,同時引發了對Java的狂熱追逐並延續至今。

  1996年年初,Sun發布了Java的第一個版本,但是這個版本並不能進行真正的應用開發,隨後而來的Java1.1彌補了許多明顯的缺陷,大大改進了反射能力,並為GUI編程增加了新的事件處理模型,但是仍具有很大的局限性。1998年JavaOne會議上,Java1.2版發布,取代了之前玩具式的GUI,並且圖形工具箱更加精細而具有可伸縮性,此次更新推出了標准版、微型版和企業版,即Java2 SE、Java2 ME和Java2 EE。2000年發布的1.3版和2002年發布的1.4版只是對Java2版本進行BUG修正,擴展了標准類庫,提高了系統性能,而在此期間,applet漸漸淡出了客戶端的應用,Java成為服務器端應用的首選平台。

  2004年Java 5.0(一開始命名為1.5,但是在JavaOne會議後版本號提升至5.0)發布,這是自1.1版以來第一個對Java做出重大改進的版本,此次更新添加了泛型類型、“for each”循環、自動裝箱和元數據等。2006年年末,Java 6發布,但是此次更新僅僅改進了性能、增強了類庫,並未對語言方面再進行改進。2009年,Sun被Oracle收購,因此Java的開發停滯了很長一段時間,直到2011年Oracle發布了Java 7,但是只是做了一些簡單的改進,決定把重要改進留到java 8。

  2014年Oracle發布了Java 8,此次更新的重點之一就是Lambda表達式,目的是使Java更易於為多核處理器編寫代碼;其次新加入的Nashorn引擎也使得Java程序可以和JavaScript代碼互操作;加入了新的類庫並改進GC和並發。由於版本升級帶來的學習成本提升和語法變更導致的後期維護難度提升等因素,Java 8目前還未在實際開發中大范圍的投入使用,而本人所入手的書籍也是以Java 7為基礎進行講解的,所以此次溫故知新過程中不會過多的考慮Java 8。

  在Java 8還未大范圍投入使用的時候,Oracle已發布Java 9的開發計劃,根據計劃來看,Java 9將於2016年發布。Java 9的更新重點則會是Java 模塊化、統一JVM日志、JSON API以及更加智能的編譯器,同時還會擴展標准類庫。


  Java白皮書解讀

  就目前的使用情況來看,Java的確是一種優秀的程序設計語言,然而Java並不只是一種語言,Java是一個完整的平台,它包括了許多可重用的代碼和一個可提供垃圾回收等服務的執行環境。Java的設計者們編寫了Java“白皮書”並發布了一個簡短的摘要,主要是用來解釋設計的初衷,這裡我們根據摘要中的11個關鍵詞來了解下Java,因為我個人對這11個詞的理解有限,所以這裡我盡量使用簡單的描述來解釋清楚這些概念,有可能會有所纰漏,希望有大神可以指點一二。

  1.簡單性

  簡單在這裡有兩個含義,一個是易學,另一個是小。易學指的是容易上手,Java在設計之初為了更容易理解還是選擇盡可能的接近C++,剔除了C++中很多難理解、易混淆的特性,而到現在為止Java對於初學者而言也是比較容易上手;在上面的發展歷程中提到過,Java設計之初是為了在小型機器上運行的,所以當時的體積非常小,然而經過了這麼多年的擴展,現在的類庫已經非常大了,不過也有針對小型機器的Java ME版本。

  2.面向對象

  面向對象是一種程序設計技術,它將重點放在數據和對象的接口上,在過去的幾十年裡,面向對象已經證明了自身的價值,現在新誕生的語言也都是基於面向對象,而Java也是基於面向對象,且從本質上來講,面向對象的能力和C++相當,僅將後者的多繼承改為了更為簡單的接口。

  3.網絡技能

  網絡編程時Java的強項,Java有強大的類庫用於處理網絡相關的內容,Java較之其他語言大幅度簡化了類似於socket之類的網絡編程,而遠程方法調用機制則使得分布式對象可以進行通信。

  4.健壯性

  Java的健壯性主要是Java程序不會有內存分配的錯誤,相較於C++,Java投入了大量的精力進行早期問題檢測和動態監測,而且Java的指針模型可以消除重寫內存和損壞數據的可能。

  5.安全性

  安全性幾乎是所有語言都會考慮的一個特性,Java在設計時是要適用於網絡和分布式環境,所以在安全性方面下了很大功夫。從Java 1.0開始,sun公司就大力支持對於Java安全性的研究,在這20多年間,眾多安全特性相繼加入Java中,Java的安全機制也越發強大,但是大家都知道,任何系統都會有安全問題,只是多少的問題。

  6.體系結構中立

  這個關鍵詞我們可以理解為硬件上的跨平台,上邊提到Java設計之初考慮到了處理器的多樣性,所以要求語言與處理器類型無關,通過Java虛擬機實現了硬件的跨平台,只要有Java運行時環境即可運行。

  7.可移植性

  這個特性就是平時所說的跨平台,Java和C++不同的是Java沒有依賴具體實現的地方,基本數據大小等都做了明確的說明,例如int永遠為32位,而在C++中有可能是16位,也有可能是32位。

  8.解釋型

  Java解釋器可以在任何移植了解釋器的機器上執行java的字節碼。這一特性並沒有給java帶來太多的好處,而且導致Java的早期開發工具速度非常慢,Java目前是使用即使編譯器將字節碼翻譯成機器碼。

  9.高性能

  Java的高性能這一特性主要來自於即時編譯器,Java剛開始時的高性能主要是“適用性更強”,然而現在的即時編譯器性能已經逐漸的超越傳統編譯器,可以包含更多的可用信息,而且可消除函數的調用。

  10.多線程

  多線程是Java成為服務器端主力開發語言的主要原因之一,Java可以便捷的進行多線程處理,而且還具備平台無關性,因為Java將多線程的實現交給了操作系統和底層的線程庫來實現。

  11.動態性

  Java目前是允許程序員獲得運行時對象的結構和行為,Java的動態性表現在java的庫可以不斷的添加新方法等,而且對現有程序不會有任何影響。

 

  

  

 

 

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved