Java,是由Sun Microsystems公司�1995�5月推出的Java程序�(shè)�(jì)�(yǔ)言和Java平臺(tái)的總�。Java�(yǔ)言是一種可以撰寫跨平臺(tái)�(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)�(jì)�(yǔ)言,由�(dāng)�(shí)任職太陽(yáng)微系�(tǒng)的詹姆斯·高斯林(James Gosling)等人于1990年代初開�(fā),它最初被命名為Oak。Java伴隨著互�(lián)�(wǎng)的迅猛發(fā)展而發(fā)�,逐漸成為重要的網(wǎng)�(luò)編程�(yǔ)言�
早期的Java
Duke,Java�(yǔ)言的吉祥物�(yǔ)言最開始只是太陽(yáng)微系�(tǒng)(Sun MicroSystems)公司在1990�12月開始研究的一�(gè)�(nèi)部項(xiàng)�。太�(yáng)微系�(tǒng)公司的一�(gè)叫做帕特里克?諾頓的工程師被公司自己開�(fā)的C++和C�(yǔ)言編譯器搞得焦頭爛�,因?yàn)槠渲械腁PI極其難用。帕特里克決定改用NeXT,同�(shí)他也獲得了研究公司的一�(gè)叫做“Stealth�(jì)劃”的�(xiàng)目的�(jī)�(huì)�
“Stealth�(jì)劃”后�(lái)改名為“Green�(jì)劃�,詹姆斯·高斯林和麥克?舍林丹也加入了帕特里克的工作小組。他們和其他幾�(gè)工程師一起在加利福尼亞州門羅帕克市沙丘路的一�(gè)小工作室里面研究開發(fā)新技�(shù),瞄�(zhǔn)下一代智能家電(如微波爐)的程序�(shè)�(jì),太�(yáng)公司�(yù)料未�(lái)科技將在家用電器�(lǐng)域大顯身手。團(tuán)�(duì)最初考慮使用C++�(yǔ)言,但是很多成員包括太�(yáng)的首席科�(xué)家比�?喬伊,發(fā)�(xiàn)C++和可用的API在某些方面存在很大問(wèn)��
工作小組使用的是�(nèi)嵌類型平�(tái),可以用的資源極其有�。很多成員發(fā)�(xiàn)C++太復(fù)雜以至很多開�(fā)者經(jīng)常錯(cuò)誤使�。他們發(fā)�(xiàn)C++缺少垃圾回收系統(tǒng),還有可移植的安全�、分布程序設(shè)�(jì)、和多運(yùn)行續(xù)功能�,他們想要一種易于移植到各種�(shè)備上的平�(tái)�
根據(jù)可用的資�,比�?喬伊決定開發(fā)一種集C�(yǔ)言和Mesa�(yǔ)言大成的新�(yǔ)言,在一份報(bào)告上,喬伊把它叫做“未�(lái)�,他提議太陽(yáng)公司的工程師�(yīng)該在C++的基�(chǔ)�,開�(fā)一種面�?qū)ο蟮沫h(huán)�。最初,高斯林試圖修改和�(kuò)展C++的功�,他自己稱這種新語(yǔ)言為C++ ++ --,但是后�(lái)他放棄了。他將要?jiǎng)?chuàng)造出一種全新的�(yǔ)言,被他命名為“Oak”(橡樹�,以他的辦公室外的橡樹命��
就像很多開發(fā)新技�(shù)的秘密工程一樣,工作小組�(méi)日沒(méi)夜地工作到了1992年的夏天,他們能夠演示新平臺(tái)的一部分�,包括Green操作系統(tǒng),Oak的程序設(shè)�(jì)�(yǔ)言,類�(kù)及其硬件。最初的嘗試是面向一種類PDA�(shè)�,被命名為Star7,這種�(shè)備有鮮艷的圖形界面和被稱為“Duke”的智能代理�(lái)幫助用戶�1992�12�3日,這臺(tái)�(shè)備�(jìn)行了展示�
同年11�,Green�(jì)劃被�(zhuǎn)化成了“FirstPerson有限公司”,一�(gè)太陽(yáng)公司的全資子公司,團(tuán)�(duì)也被重新安排到了帕洛阿爾托。FirstPerson�(tuán)�(duì)�(duì)建造一種高度交互的�(shè)備感興趣,當(dāng)�(shí)代華納發(fā)布了一�(gè)�(guān)于電視機(jī)頂盒的征求提議書�(shí)(Request for proposal�,F(xiàn)irstPerson改變了他們的目標(biāo),作為對(duì)征求意見書的響應(yīng)� 提出了一�(gè)�(jī)頂盒平臺(tái)的提�。但是有線電視業(yè)界覺(jué)得FirstPerson的平�(tái)給予用戶�(guò)多的控制�(quán),因此FirstPerson的投�(biāo)敗給了SGI。與3DO公司的另外一筆關(guān)于機(jī)頂盒的交易也�(méi)有成功,由于他們的平臺(tái)不能在電視工�(yè)�(chǎn)生任何效�,公司被并回太陽(yáng)公司�
1994�6��7月間,在�(jīng)歷了一�(chǎng)歷時(shí)三天的腦力激蕩的討論后,約翰·蓋吉、詹姆斯·高斯林、比爾·喬�、帕特里克·諾頓、韋恩·羅斯因和埃里克·斯庫(kù)�,團(tuán)�(duì)決定再一次改變了努力的目�(biāo),這次他們決定將該技�(shù)�(yīng)用于�(wàn)維網(wǎng)。他們認(rèn)為隨著Mosaic瀏覽器的到來(lái),因特網(wǎng)正在向同樣的高度互動(dòng)的遠(yuǎn)景演�,而這一�(yuǎn)景正是他�?cè)谟芯€電視網(wǎng)中看到的。作為原�,帕特里克·諾頓寫了一�(gè)小型�(wàn)維網(wǎng)瀏覽�,WebRunner,后�(lái)改名為HotJava�
由于商標(biāo)搜索顯示,Oak已被一家顯卡制造商注冊(cè)。于是同�,Oak被改名為Java。當(dāng)使用十六�(jìn)制編輯器打開由Java源代碼編譯出的二�(jìn)制文件(.class文件)的�,最前面�32位將顯示為CA FE BA BE,即詞組“CAFE BABE”(咖啡屋寶貝)�
1994�10�,HotJava和Java平臺(tái)為公司高層�(jìn)行演��1994年,Java 1.0a版本已經(jīng)可以提供下載,但是Java和HotJava瀏覽器的次公開發(fā)布卻是在1995�3�23日SunWorld大會(huì)上�(jìn)行的。升�(yáng)公司的科�(xué)指導(dǎo)約翰·蓋吉聲明Java技�(shù)。這�(gè)�(fā)布是與網(wǎng)景公司的�(zhí)行副總裁馬克·安德森的驚人�(fā)布一起�(jìn)行的,宣布網(wǎng)景將在其瀏覽器中包含�(duì)Java的支持�1996�1�,升�(yáng)公司成立了Java�(yè)�(wù)集團(tuán),專門開發(fā)Java技�(shù)�
Java近況
在流行幾年之�,Java在瀏覽器中的地位被逐步侵蝕。它在簡(jiǎn)單交互性動(dòng)畫方面的用途已�(jīng)完全被Adobe公司的Flash排擠�2005年Java傾向只被用于雅虎游戲那樣的更為復(fù)雜的�(yīng)用程序。Java同時(shí)遭受到來(lái)自微軟的反對(duì),他們決定在新版本的Internet Explorer和Windows中不再附帶Java平臺(tái)�
與此相反。在�(wàn)維網(wǎng)的服�(wù)器端和手持設(shè)備上,Java變得更加流行。很多網(wǎng)站在后端使用JSP和其他的Java技�(shù)�
在桌面系�(tǒng)�,獨(dú)立的Java程序還是相對(duì)少見,這是�?yàn)镴ava平臺(tái)的運(yùn)行開銷較�,而許多人的電腦上�(méi)有安裝Java,由于網(wǎng)�(luò)帶寬在以前較小,下載Java曾經(jīng)是�(gè)耗時(shí)的事�。但是隨著計(jì)算機(jī)�(jì)算能�、網(wǎng)�(luò)帶寬�10年中取得了很大的�(jìn)�,同�(shí)虛擬�(jī)和編譯器的質(zhì)量得到了提高,許多應(yīng)用程序得到了廣泛的使�
Java�(yǔ)言有下面一些特�(diǎn) :�(jiǎn)�、面�?qū)ο蟆⒎植际?、解�?zhí)�、魯�、安�、體系結(jié)�(gòu)中立、可移植、高性能、多線程以及�(dòng)�(tài)��
1.面向?qū)ο?/FONT>
Java�(yǔ)言的設(shè)�(jì)集中于對(duì)象及其接� ,它提供了�(jiǎn)單的類機(jī)制以及動(dòng)�(tài)的接口模型。對(duì)象中封裝了它的狀�(tài)變量以及相應(yīng)的方� ,�(shí)�(xiàn)了模塊化和信息隱� ;而類則提供了一類對(duì)象的原型 ,并且通過(guò)繼承�(jī)� ,子類可以使用父類所提供的方� ,�(shí)�(xiàn)了代碼的�(fù)��
2.分布�
Java是面向網(wǎng)�(luò)的語(yǔ)言。通過(guò)它提供的類庫(kù)可以處理 TCP/IP�(xié)� ,用戶 可以通過(guò) URL地址在網(wǎng)�(luò)上很方便地訪�(wèn)其它�(duì)象�
3.�(jiǎn)單�
Java�(yǔ)言是一種面�?qū)ο蟮恼Z(yǔ)言 ,它通過(guò)提供最基本的方法來(lái)完成指定的任�(wù) ,只需理解一些基本的概念 ,就可以用它編寫出適合于各種情況的�(yīng)用程�� Java略去了運(yùn)算符重載、多重繼承等模糊的概� ,并且通過(guò)�(shí)�(xiàn)自動(dòng)垃圾收集大大�(jiǎn)化了程序�(shè)�(jì)者的�(nèi)存管理工�。另� ,Java也適合于在小型機(jī)上運(yùn)� ,它的基本解釋器及類的支持只有 40KB左右 ,加上�(biāo)�(zhǔn)類庫(kù)和線程的支持也只� 215KB左右。庫(kù)和線程的支持也只� 215KB左右�
4.魯棒�
Java在編譯和�(yùn)行程序時(shí) ,都要�(duì)可能出現(xiàn)的問(wèn)題�(jìn)行檢� ,以消除錯(cuò)誤的�(chǎn)�。它提供自動(dòng)垃圾收集�(lái)�(jìn)行內(nèi)存管� ,防止程序員在管理�(nèi)存時(shí)容易�(chǎn)生的�(cuò)�。通過(guò)集成的面�?qū)ο蟮睦馓幚頇C(jī)� ,在編譯時(shí),Java提示出可能出�(xiàn)但未被處理的例外 ,幫助程序員正確地�(jìn)行選擇以防止系統(tǒng)的崩�。另�,Java在編譯時(shí)還可捕獲類型聲明中的許多常見�(cuò)� ,防止�(dòng)�(tài)�(yùn)行時(shí)不匹配問(wèn)題的出現(xiàn)�
5.可移植�
與平�(tái)�(wú)�(guān)的特性使 Java程序可以方便地被移植到網(wǎng)�(luò)上的不同�(jī)器。同�(shí) ,Java的類�(kù)中也�(shí)�(xiàn)了與不同平臺(tái)的接� ,使這些類庫(kù)可以移植。另�,Java編譯器是� Java�(yǔ)言�(shí)�(xiàn)� ,Java�(yùn)行時(shí)系統(tǒng)由標(biāo)�(zhǔn) C�(shí)�(xiàn) ,這使得Java系統(tǒng)本身也具有可移植��
6.體系�(jié)�(gòu)中立
Java解釋器生成與體系�(jié)�(gòu)�(wú)�(guān)的字節(jié)碼指� ,只要安裝� Java�(yùn)行時(shí)系統(tǒng) ,Java程序就可在任意的處理器上�(yùn)�。這些字節(jié)碼指令對(duì)�(yīng)� Java虛擬�(jī)中的表示 ,Java解釋器得到字節(jié)碼后 ,�(duì)它�(jìn)行轉(zhuǎn)� ,使之能夠在不同的平臺(tái)�(yùn)行�
7.安全�
用于�(wǎng)�(luò)、分布環(huán)境下� Java必須要防止病毒的入侵� Java不支持指�,一切對(duì)�(nèi)存的訪問(wèn)都必須通過(guò)�(duì)象的�(shí)例變量來(lái)�(shí)�(xiàn) ,這樣就防止程序員使用"特洛� "木馬等欺騙手段訪�(wèn)�(duì)象的私有成員 ,同時(shí)也避免了指針操作中容易產(chǎn)生的�(cuò)��
8.解釋�(zhí)�
Java解釋器直接對(duì) Java字節(jié)碼�(jìn)行解釋執(zhí)行。字節(jié)碼本身攜帶了許多編譯�(shí)信息 ,使得連接�(guò)程更加簡(jiǎn)��
9.�(dòng)�(tài)�
Java的設(shè)�(jì)使它適合于一�(gè)不斷�(fā)展的�(huán)�。在類庫(kù)中可以自由地加入新的方法和實(shí)例變量而不�(huì)影響用戶程序的執(zhí)�。并� Java通過(guò)接口�(lái)支持多重繼承 ,使之比嚴(yán)格的類繼承具有更靈活的方式和�(kuò)展��
10.多線�
多線程機(jī)制使�(yīng)用程序能夠并行執(zhí)� ,而且同步�(jī)制保證了�(duì)共享�(shù)�(jù)的正確操�。通過(guò)使用多線� ,程序�(shè)�(jì)者可以分別用不同的線程完成特定的行為 ,而不需要采用全局的事件循�(huán)�(jī)� ,這樣就很容易地實(shí)�(xiàn)�(wǎng)�(luò)上的�(shí)�(shí)交互行為�
11.高性能
和其它解釋執(zhí)行的�(yǔ)言� BASIC� TCL不同 ,Java字節(jié)碼的�(shè)�(jì)使之能很容易地直接轉(zhuǎn)換成�(duì)�(yīng)于特定CPU的機(jī)器碼 ,從而得到較高的性能�
1、數(shù)�(jù)型態(tài)
boolean byte char string
short int long double float void
2、流程控�
do while if else for switch case
goto
break continue return
throws throw try catch finally
3、類型修�
public protected private static final
synchronized abstract native valatile strictfp transient default
const
4、其�
import class extend implements interface package
this new super
null true false
1995�5�23日,Java�(yǔ)言誕生
1996�1�,�(gè)JDK-JDK1.0誕生
1996�4��10�(gè)最主要的操作系�(tǒng)供應(yīng)商申明將在其�(chǎn)品中嵌入JAVA技�(shù)
1996�9�,約8.3�(wàn)�(gè)�(wǎng)�(yè)�(yīng)用了JAVA技�(shù)�(lái)制作
1997�2�18�,JDK1.1�(fā)�
1997�4�2�,JavaOne�(huì)議召�,參與者逾一�(wàn)�,創(chuàng)�(dāng)�(shí)全球同類�(huì)議規(guī)模之紀(jì)�
1997�9月,JavaDeveloperConnection社區(qū)成員超過(guò)十萬(wàn)
1998�2�,JDK1.1被下載超�(guò)2,000,000�
1998�12�8�,JAVA2企業(yè)平臺(tái)J2EE�(fā)�
1999�6�,SUN公司�(fā)布Java的三�(gè)版本:標(biāo)�(zhǔn)版(J2SE�、企�(yè)版(J2EE)和微型版(J2ME�
2000�5�8日,JDK1.3�(fā)�
2000�5�29�,JDK1.4�(fā)�
2001�6�5日,NOKIA宣布,到2003年將出售1億部支持Java的手�(jī)
2001�9�24�,J2EE1.3�(fā)�
2002�2�26�,J2SE1.4�(fā)布,自此Java的計(jì)算能力有了大幅提�
2004�9�30�18:00PM,J2SE1.5�(fā)布,成為Java�(yǔ)言�(fā)展史上的又一里程�。為了表示該版本的重要性,J2SE1.5更名為Java SE 5.0
2005�6�,JavaOne大會(huì)召開,SUN公司公開Java SE 6。此�(shí),Java的各種版本已�(jīng)更名,以取消其中的數(shù)字�2”:J2EE更名為Java EE,J2SE更名為Java SE,J2ME更名為Java ME
2006�12月,SUN公司�(fā)布JRE6.0
2009�12�,SUN公司�(fā)布Java EE 6
2010�11月,由于Oracle公司�(duì)于Java社區(qū)的不友善,因此Apache�(yáng)言將退出JCP