官术网_书友最值得收藏!

1.1 Java語言簡介

Java語言受到廣大程序員的歡迎有多方面的原因。首先源于它是面向?qū)ο蟮恼Z言,而面向?qū)ο蟮恼Z言是目前的主流語言。其次,在眾多面向?qū)ο笳Z言中,Java語言自身的許多特點使其脫穎而出。最后,必須指出的是互聯(lián)網(wǎng)在全球范圍的普及應(yīng)用為Java語言提供了一個非常大的舞臺,使其獲得很大的成功。

1.1.1 Java語言的產(chǎn)生

在介紹Java語言之前,我們先說說程序,然后再說說程序設(shè)計語言(簡稱語言)。

用過計算機(jī)的人都知道,使用計算機(jī)可以做很多事情:上網(wǎng)、玩游戲、收發(fā)電子郵件、播放音樂、下載文件資料等,簡直數(shù)不勝數(shù)。但你想過沒有,這些事情是如何完成的?誰來替你做的?答案是:程序!是人們預(yù)先編寫的程序,存儲在計算機(jī)里,等著你來調(diào)用它。你對計算機(jī)發(fā)號施令,計算機(jī)里預(yù)先存儲的程序接受你的命令,為你做事。

圖1-1展示的是幾個常見的應(yīng)用。你計算機(jī)上的應(yīng)用圖標(biāo)數(shù)量遠(yuǎn)不止于此吧!

圖1-1 幾個常見應(yīng)用

瀏覽器程序幫助你在網(wǎng)上沖浪,游戲程序讓你陶醉其中,郵件收發(fā)程序為你和朋友架起互通信息的橋梁……總之,你依賴程序在計算機(jī)上做事。

那么程序怎么寫呢?很顯然,你需要學(xué)習(xí)程序設(shè)計語言。就像你要寫作文,你首先得學(xué)會一門語言,比如漢語、英語或俄語。

Java就是這樣一門程序設(shè)計語言,而且是一門目前很受歡迎的獲得廣泛應(yīng)用的程序設(shè)計語言。

1991年,為了研究計算機(jī)在家電產(chǎn)品中的嵌入式應(yīng)用,Sun公司的James Gosling等人組成名為Green的項目組。他們于1992年設(shè)計出Oak語言。由于當(dāng)時缺乏硬件支持,Oak沒有市場化。

1995年,由于互聯(lián)網(wǎng)的蓬勃發(fā)展,人們迫切需要一種適用于網(wǎng)絡(luò)編程的、小型的、跨平臺的語言,Oak因此重獲生機(jī)。它以Java為名正式面世。此后,Java深受程序員和用戶歡迎,至今仍是開發(fā)各種基于Web應(yīng)用程序的首選語言。據(jù)TIOBE2018年1月的調(diào)查數(shù)據(jù)可知, Java市場占有率高達(dá)14.215%,長期獨(dú)占鰲頭。Java的成績,得益于其固有的優(yōu)點,尤其是2014年推出的最新版Java8引入了函數(shù)式編程的新特性,使其進(jìn)一步擴(kuò)大了其在程序設(shè)計語言領(lǐng)域的領(lǐng)先優(yōu)勢。圖1-2所示為2018年1月Java所占市場份額和排序。

1.1.2 Java語言的版本變遷

Java語言有3個主版本:標(biāo)準(zhǔn)版(Java Standard Edition)、企業(yè)版(Java Enterprise Edition)、微型版(Java Micro Edition)。其可以分別簡稱為Java SE、Java EE、Java ME。其中Java SE是核心語言,Java EE用于企業(yè)應(yīng)用開發(fā),而Java ME用于移動設(shè)備的應(yīng)用開發(fā)。

我們提到Java一般有兩種含義:一是指Java語言,就是Java SE;二是指Java技術(shù),就是以Java SE為核心語言進(jìn)行擴(kuò)展的所有相關(guān)開發(fā)技術(shù)的綜合。這樣的綜合體有哪些內(nèi)容,我們會在1.4節(jié)展開說明。

圖1-2 Java市場份額(2018年1月)

本書講解的Java SE,就是Java語言,書中將介紹它的語法細(xì)節(jié)和應(yīng)用編程方法。

Java SE的版本標(biāo)識從最初的JDK1.0到目前最新的JDK1.8,技術(shù)不斷更新,不斷進(jìn)步,使得Java語言能永葆活力。注意:這里的JDK(Java Development Kit)是Java開發(fā)工具的意思。

Java隨著版本升級,有許多次名稱的改變。例如,從JDK1.5之后,按照主版本號來命名,即JDK5,因此,目前的JDK8是指JDK1.8。也有人喜歡說Java SDK8,這是Java Software Development Kit1.8的簡稱。SDK除了可以包含JDK,還包含輔助開發(fā)的文檔、范例和工具集等,所以JDK是Java SDK的子集。

另外,歷史上曾經(jīng)有過,直到今天仍不乏有人在用的J2SE/J2EE/J2ME,其實是由于JDK1.2版很優(yōu)秀,為了區(qū)分Java 2平臺和之前的JDK而進(jìn)行的命名。在2005年6月推出JDK1.6時,J2SE/J2EE/J2ME統(tǒng)一改稱為Java SE/Java EE/Java ME了。

拓展知識

TIOBE語言排行榜

TIOBE表示熱忱和認(rèn)真,同時也是Oscar Wilde(奧斯卡·王爾德)在19世紀(jì)末寫的一部喜劇的名字。使用TIOBE作為社區(qū)的名稱,也表示了社區(qū)的創(chuàng)立者對軟件客戶、軟件供應(yīng)商和同行的重視以及誠摯的專業(yè)態(tài)度。

TIOBE每天為世界范圍的客戶實時檢查超過9億3400萬行軟件代碼。

TIOBE開發(fā)語言排行榜每月更新一次,依據(jù)的指數(shù)由世界范圍內(nèi)的資深軟件工程師和第三方供應(yīng)商提供,排行結(jié)果可反映當(dāng)前業(yè)內(nèi)程序開發(fā)語言的流行和使用程度。開發(fā)者可根據(jù)排行榜檢查自己的編程技能能否跟上趨勢,是否有必要作出戰(zhàn)略改變,以及是否要學(xué)習(xí)新的編程語言。

建議讀者關(guān)注這個排行榜,既可以對比語言功能及特色,使開發(fā)語言的選擇更有見地,同時也可了解軟件人才市場的需求。

1.1.3 Java語言特點

Java語言具有許多獨(dú)特之處,它既區(qū)別于傳統(tǒng)的面向過程語言,也不同于其他的面向?qū)ο笳Z言。讀者剛開始接觸 Java時,對這些特點可能很難有深入的理解,但是,隨著學(xué)習(xí)的深入,理解會不斷加深。

1.簡單易學(xué)

Java語言的語法與C/C++有很多相似的地方,例如數(shù)據(jù)類型、運(yùn)算符、表達(dá)式和語句。對比一下關(guān)鍵字列表就可以發(fā)現(xiàn)這種相似性。有C基礎(chǔ)的讀者,可以將C與Java的語法做詳細(xì)對比,找出相同、相似和不同點,通過對比法來提高學(xué)習(xí)效率,同時也有利于快速辨析清楚兩種語言的語法規(guī)則和用法的許多細(xì)微區(qū)別,這就是格物致知的道理。

2.解釋式

高級語言的工作方式有兩種:編譯式和解釋式。

編譯式語言如C、C++、Pascal等,它們對源程序先進(jìn)行編譯,生成可執(zhí)行文件(.exe)。可執(zhí)行文件可直接由操作系統(tǒng)(Operating System)來執(zhí)行。在使用集成開發(fā)環(huán)境IDE (Integrated Developing Environment)時,可以從IDE的菜單查看編譯命令,或者到項目工作目錄下查看,了解exe文件的生成方式。

Java語言的工作方式如圖1-3(c)所示,它不同于圖1-3(a)和圖1-3(b)。圖1-3(a)是編譯式語言工作過程,(b)是解釋式語言工作過程,Java語言的工作方式介于編譯式和解釋式中間,是一種混合形式,有人把它稱為偽編譯(pseudo compile),但它本質(zhì)上還是解釋式語言。因為它雖然生成了中間代碼,即字節(jié)碼文件(.class),但這個文件并不能像.exe文件那樣可由操作系統(tǒng)直接執(zhí)行,而是用Java虛擬機(jī)(Java Virtual Machine, JVM)解釋執(zhí)行。

圖1-3 高級語言的工作方式

3.安全性

Java語言通過若干安全機(jī)制來確保其安全性。這些機(jī)制包括通過關(guān)鍵字控制代碼可見性、不支持指針類型、訪問控制的沙箱(sandbox)機(jī)制和數(shù)字簽名機(jī)制、安全策略機(jī)制、字節(jié)代碼校驗機(jī)制、安全代碼發(fā)布、異常處理機(jī)制等。

4.面向?qū)ο?/span>

Java語言是一種面向?qū)ο蟮某绦蛟O(shè)計語言。面向?qū)ο笏枷胧谷藗兎治鰡栴}和解決問題時,更接近人類固有的思維模式,更自然順暢了。用面向?qū)ο蟪绦蛘Z言(OOPL)編程,也更安全高效了。

5.平臺無關(guān)

Java源文件經(jīng)編譯生成與計算機(jī)指令無關(guān)的字節(jié)代碼,這些字節(jié)代碼不依賴于任何硬件平臺和操作系統(tǒng)。當(dāng)Java程序運(yùn)行時,需要由一個解釋程序?qū)ι傻淖止?jié)代碼進(jìn)行解釋執(zhí)行。這體現(xiàn)了Java語言的平臺無關(guān)性,使得Java程序可以在任何平臺上運(yùn)行,如MS-DOS、Windows、Unix等,因此具有很強(qiáng)的可移植性。這就實現(xiàn)了Java“編寫一次,到處運(yùn)行”(write once,run anywhere)的目標(biāo)。

6.多線程

Java語言支持多線程,多線程機(jī)制使得一個Java程序能夠同時處理多項任務(wù)。類似操作系統(tǒng)支持多進(jìn)程并發(fā)執(zhí)行的情況,多進(jìn)程使計算機(jī)能夠同時執(zhí)行多個任務(wù),例如游戲的動感畫面與美妙音樂同在、從網(wǎng)上下載文件和執(zhí)行本地用戶程序并行不悖等,大家都有切身感受。線程可以看作是更小的進(jìn)程。Java提供了實現(xiàn)多線程程序的類和接口,使用它們,可以編寫實現(xiàn)并發(fā)執(zhí)行的多線程程序。

7.動態(tài)性

C語言的基本程序模塊是函數(shù)。程序執(zhí)行過程中所調(diào)用的函數(shù),其代碼已靜態(tài)地加載到內(nèi)存中。Java的類是程序構(gòu)成的模塊,Java程序執(zhí)行時所需要調(diào)用的類是在運(yùn)行時動態(tài)地加載到內(nèi)存中的,這使得Java程序運(yùn)行所需的內(nèi)存開銷小。這也是它可以被用于許多嵌入式系統(tǒng)和部署在許多微小型智能設(shè)備上的原因。Java還可以利用反射機(jī)制動態(tài)地維護(hù)程序和類,而C/C++不經(jīng)代碼修改和重新編譯就無法做到這一點。

此外,Java語言還具有網(wǎng)絡(luò)適用性、可移植性、類庫豐富、高性能等特點。

主站蜘蛛池模板: 唐河县| 邓州市| 本溪市| 班玛县| 资讯 | 博湖县| 霍林郭勒市| 错那县| 淮安市| 北票市| 江阴市| 盐城市| 莆田市| 元朗区| 宁德市| 尖扎县| 荆门市| 水城县| 龙江县| 当阳市| 特克斯县| 蚌埠市| 湖口县| 九台市| 鸡泽县| 盐城市| 海盐县| 嘉荫县| 万年县| 蓬莱市| 新晃| 都兰县| 利津县| 高雄市| 屏南县| 马龙县| 开江县| 温州市| 廊坊市| 江西省| 黄梅县|