- 瘋狂Java講義(第2版)
- 李剛編著
- 2946字
- 2018-12-29 14:15:19
1.1 Java語言的發展簡史
Java語言的誕生具有一定的戲劇性,它并不是經過精心策劃、制作,最后產生的劃時代產品,從某個角度來看,Java語言的誕生完全是一種誤會。
1990年年末,Sun公司預料嵌入式系統將在未來家用電器領域大顯身手。于是Sun公司成立了一個由James Gosling領導的“Green計劃”,準備為下一代智能家電(如電視機、微波爐、電話)編寫一個通用控制系統。
該團隊最初考慮使用C++語言,但是很多成員包括Sun的首席科學家Bill Joy,發現C++和可用的API在某些方面存在很大問題。而且工作小組使用的是嵌入式平臺,可用的系統資源極其有限。并且很多成員都發現C++太復雜,以致很多開發者經常錯誤使用。而且C++缺少垃圾回收系統、可移植性、分布式和多線程等功能。
根據可用的資金,Bill Joy決定開發一種新語言,他提議在C++的基礎上,開發一種面向對象的環境。于是,Gosling試圖通過修改和擴展C++的功能來滿足這個要求,但是后來他放棄了。他決定創造一種全新的語言:Oak。
到了1992年的夏天,Green計劃已經完成了新平臺的部分功能,包括Green操作系統、Oak的程序設計語言、類庫等。同年11月,Green計劃被轉化成“FirstPerson有限公司”,一個Sun公司的全資子公司。
FirstPerson團隊致力于創建一種高度互動的設備。當時代華納公司發布了一個關于電視機頂盒的征求提議書時,FirstPerson改變了他們的目標,作為對征求提議書的響應,提出了一個機頂盒平臺的提議。但有線電視業界覺得FirstPerson的平臺給予用戶過多的控制權,因此FirstPerson的投標敗給了SGI。同時,與3DO公司的另外一筆關于機頂盒的交易也沒有成功。此時,可憐的Green項目幾乎接近夭折,甚至Green項目組的一半成員也被調到了其他項目組。
正如中國古代的寓言所言:塞翁失馬,焉知非福?如果Green項目在機頂盒平臺投標成功,也許就不會誕生Java這門偉大的語言了。
1994年夏天,互聯網和瀏覽器的出現不僅給廣大互聯網的用戶帶來了福音,也給Oak語言帶來了新的生機。Gosling立即意識到,這是一個機會,于是對Oak進行了小規模的改造,到了1994年秋,小組中的Naughton和Jonathan Payne完成了第一個Java語言的網頁瀏覽器:WebRunner。Sun公司實驗室主任Bert Sutherland和技術總監Eric Schmidt觀看了該瀏覽器的演示,對該瀏覽器的效果給予了高度評價。當時Oak這個商標已被別人注冊,于是只得將Oak更名為Java。
Sun公司在1995年年初發布了Java語言,Sun公司直接把Java放到互聯網上,免費給大家使用。甚至連源代碼也不保密,也放在互聯網上向所有人公開。
幾個月后,讓所有人都大吃一驚的事發生了:Java成了互聯網上最熱門的寶貝。竟然有10萬多人次訪問了Sun公司的網頁,下載了Java語言。然后,互聯網上立即就有數不清的Java小程序(也就是Applet),演示著各種小動畫、小游戲等。Java語言終于揚眉吐氣了,成為了一種廣為人知的編程語言。
在Java語言出現之前,互聯網的網頁實質上就像是一張紙,不會有任何動態的內容。有了Java語言之后,瀏覽器的功能被擴大了,Java程序可以直接在瀏覽器里運行,可以直接與遠程服務器交互:用Java語言編程,可以在互聯網上像傳送電子郵件一樣方便地傳送程序文件!
1995年,Sun雖然推出了Java,但這只是一種語言,如果想開發復雜的應用程序,必須要有一個強大的開發類庫。因此,Sun在1996年年初發布了JDK 1.0。這個版本包括兩部分:運行環境(即JRE)和開發環境(即JDK)。運行環境包括核心API、集成API、用戶界面API、發布技術、Java虛擬機(JVM)五個部分;開發環境包括編譯Java程序的編譯器(即javac命令)。
接著,Sun在1997年2月18日發布了JDK 1.1。JDK 1.1增加了JIT(即時編譯)編譯器。JIT和傳統的編譯器不同,傳統的編譯器是編譯一條,運行完后將其扔掉;而JIT會將經常用到的指令保存在內存中,當下次調用時就不需要重新編譯了,通過這種方式讓JDK在效率上有了較大提升。
但一直以來,Java主要的應用就是網頁上的Applet以及一些移動設備。到了1996年年底,Flash面世了,這是一種更加簡單的動畫設計軟件:使用Flash幾乎無須任何編程語言知識,就可以做出豐富多彩的動畫。隨后Flash增加了ActionScript編程腳本,Flash逐漸蠶食了Java在網頁上的應用。
從1995年Java的誕生到1998年年底,Java語言雖然成為了互聯網上廣泛使用的編程語言,但它并沒有找到一個準確的定位,也沒有找到它必須存在的理由:Java語言可以編寫Applet,而Flash一樣可以做到,而且更快,開發成本更低。
直到1998年12月,Sun發布了Java歷史上最重要的JDK版本:JDK 1.2,伴隨JDK 1.2一同發布的還有JSP/Servlet、EJB等規范,并將Java分成了J2EE、J2SE和J2ME三個版本。
J2ME:主要用于控制移動設備和信息家電等有限存儲的設備。
J2SE:整個Java技術的核心和基礎,它是J2ME和J2EE編程的基礎,也是這本書主要介紹的內容。
J2EE:Java技術中應用最廣泛的部分,J2EE提供了企業應用開發相關的完整解決方案。
這標志著Java已經吹響了向企業、桌面和移動3個領域進軍的號角,標志著Java已經進入Java 2時代,這個時期也是Java飛速發展的時期。
在Java 2中,Java發生了很多革命性的變化,而這些革命性的變化一直沿用到現在,對Java的發展形成了深遠的影響。直到今天,我們還經常看到J2EE、J2ME等名稱。
不僅如此,JDK 1.2還把它的API分成了三大類。
核心API:由Sun公司制定的基本的API,所有的Java平臺都應該提供。這就是我們平常所說的Java核心類庫。
可選API:這是Sun為JDK提供的擴充API,這些API因平臺的不同而不同。
特殊API:用于滿足特殊要求的API。如用于JCA和JCE的第三方加密類庫。
2002年2月,Sun發布了JDK歷史上最為成熟的版本:JDK 1.4。此時由于Compaq、Fujitsu、SAS、Symbian、IBM等公司的參與,使JDK 1.4成為發展最快的一個JDK版本。到JDK 1.4為止,我們已經可以使用Java實現大多數的應用了。
在此期間,Java語言在企業應用領域大放異彩,涌現出大量基于Java語言的開源框架:Struts、WebWork、Hibernate、Spring等;大量企業應用服務器也開始涌現:WebLogic、WebSphere、JBoss等,這些都標志著Java語言進入了飛速發展時期。
2004年10月,Sun發布了萬眾期待的JDK 1.5,同時,Sun將JDK 1.5改名為Java SE 5.0,J2EE、J2ME也相應地改名為Java EE和Java ME。JDK 1.5增加了諸如泛型、增強的for語句、可變數量的形參、注釋(Annotations)、自動拆箱和裝箱等功能;同時,也發布了新的企業級平臺規范,如通過注釋等新特性來簡化EJB的復雜性,并推出了EJB 3.0規范。還推出了自己的MVC框架規范:JSF,JSF規范類似于ASP.NET的服務器端控件,通過它可以快速地構建復雜的JSP界面。
2006年12月,Sun公司發布了JDK 1.6(也被稱為Java SE 6)。一直以來,Sun公司維持著大約2年發布一次JDK新版本的習慣。
但在2009年4月20日,Oracle宣布將以每股9.5美元的價格收購Sun,該交易的總價值約為74億美元。而Oracle通過收購Sun公司獲得了兩項軟件資產:Java和Solaris。
于是曾經代表一個時代的公司:Sun終于被“雨打風吹”去,“江湖”上再也沒有了Sun的身影。多年以后,在新一輩的程序員心中可能會遺忘曾經的Sun公司,但老一輩的程序員們將永久地懷念Sun公司的傳奇。
Sun倒下了,不過Java的大旗依然“獵獵”作響。2007年11月,Google宣布推出一款基于Linux平臺的開源手機操作系統:Android。Android的出現順應了即將出現的移動互聯網潮流,而且Android系統的用戶體驗非常好,因此迅速成為手機操作系統的中堅力量。Android平臺使用了Dalvik虛擬機來運行.dex文件,Dalvik虛擬機的作用類似于JVM虛擬機,只是它并未遵守JVM規范而已。Android使用Java語言來開發應用程序,這也給了Java語言一個新的機會。在過去的歲月中,Java語言作為服務器端編程語言,已經取得了極大的成功;而Android平臺的流行,則讓Java語言獲得了在客戶端程序上大展拳腳的機會。
2011年7月28日,Oracle公司終于“如約”發布了Java SE 7——這次版本升級經過了將近5年時間。Java SE 7也是Oracle發布的第一個Java版本。Java SE 7雖然并未完全滿足所有人的期望,不過它也加入了不少新特性,本書后面將會詳細介紹這些新特性。
- HTML5+CSS3王者歸來
- Raspberry Pi for Python Programmers Cookbook(Second Edition)
- Delphi程序設計基礎:教程、實驗、習題
- 移動UI設計(微課版)
- Mastering OpenCV Android Application Programming
- Linux核心技術從小白到大牛
- Practical Data Science Cookbook(Second Edition)
- Programming ArcGIS 10.1 with Python Cookbook
- Linux環境編程:從應用到內核
- SQL Server 2016數據庫應用與開發
- Mastering Android Game Development
- Babylon.js Essentials
- Solr Cookbook(Third Edition)
- Mastering ArcGIS Enterprise Administration
- Hands-On Kubernetes on Windows