摘要:小組最開(kāi)始由兩名程序員和,一名工程師三人組成,后續(xù)有人員擴(kuò)充。其中是最具代表性的人物,如今被稱為語(yǔ)言之父。后于年月日對(duì)外公布這門(mén)編程語(yǔ)言,標(biāo)志著的誕生。官方宣稱全世界有萬(wàn)開(kāi)發(fā)者。數(shù)據(jù)顯示目前處于榜首。
歡迎你來(lái)到Java的世界,作為Java的第一篇文章不可免俗的要做一次介紹,這些東西往往比較枯燥所以我盡可能寫(xiě)的有故事趣味一點(diǎn)。對(duì)于初學(xué)者歷史或者特性的東西瀏覽一遍有所了解即可,即使不知所云也沒(méi)關(guān)系,更不需要記。
本文從四個(gè)方面介紹一下Java:
Java的發(fā)展簡(jiǎn)史
Java的特性
Java能做什么
Java目前的占有率
Java的發(fā)展簡(jiǎn)史1991年Sun公司認(rèn)為用嵌入式系統(tǒng)來(lái)控制消費(fèi)類(lèi)電子產(chǎn)品(例如機(jī)頂盒、電視機(jī)、收音機(jī)、微波爐、烤面包機(jī)等)在未來(lái)很有市場(chǎng)。于是Sun公司成立了一個(gè)名為“Green”的小組來(lái)開(kāi)發(fā)一套新的控制系統(tǒng)。這個(gè)系統(tǒng)用什么語(yǔ)言來(lái)做呢?他們一開(kāi)始考慮過(guò)用C++,但是C++太復(fù)雜了且API不健全。而且由于當(dāng)時(shí)的各類(lèi)設(shè)備的CPU和操作系統(tǒng)不同,內(nèi)存也有限,要實(shí)現(xiàn)用于這些設(shè)備的控制系統(tǒng),需要一種代碼低消耗且平臺(tái)無(wú)關(guān)的編程語(yǔ)言,所以C++并不能勝任。最后Green決定開(kāi)發(fā)一門(mén)新的編程語(yǔ)言。Green小組最開(kāi)始由兩名程序員Patrick Naughton和James Gosling,一名工程師Mike Sheridan三人組成,后續(xù)有人員擴(kuò)充。其中James Gosling是最具代表性的人物,如今被稱為“Java語(yǔ)言之父”。
這門(mén)新的編程語(yǔ)言的風(fēng)格很像C++,因?yàn)楸旧砭褪腔贑++開(kāi)發(fā)的新語(yǔ)言。Gosling把這種語(yǔ)言取名為“Oak”,靈感傳說(shuō)是他喜歡自己辦公室外的橡樹(shù)。但是Sun公司的人后來(lái)發(fā)現(xiàn)“Oak”已經(jīng)是另一種計(jì)算機(jī)語(yǔ)言的名字,沒(méi)辦法注冊(cè)商標(biāo)。所以他們又想了另外幾個(gè)名字,經(jīng)過(guò)投票最后決定改名為“Java”。因?yàn)镴ava是印度尼西亞一個(gè)島嶼爪哇島的名字,且該島嶼盛產(chǎn)的咖啡也叫Java。所以Java的logo是一杯熱氣騰騰的咖啡。后于1995年5月23日對(duì)外公布這門(mén)編程語(yǔ)言,標(biāo)志著Java的誕生。
另外Java的吉祥物叫“Duke”,每年的Java開(kāi)發(fā)者大會(huì)大家都會(huì)穿著印有Duke的文化衫。
1992年的時(shí)候Green小組變成了一家Sun公司的全資子公司,名為“FirstPerson”。
同年FirstPerson發(fā)布了他們的第一個(gè)產(chǎn)品叫“*7”,它是一個(gè)基于SPARC的手持無(wú)線PDA。
可惜Sun公司和其它消費(fèi)品公司并不看好這個(gè)產(chǎn)品。另外FirstPerson從1993年到1994年花了一年半的時(shí)間都沒(méi)能推銷(xiāo)出Java這項(xiàng)技術(shù)。
與此同時(shí)的萬(wàn)維網(wǎng)正在逐漸壯大,而瀏覽器正是推動(dòng)Web發(fā)展的關(guān)鍵技術(shù)。Java開(kāi)發(fā)者們很快意識(shí)到Java具有客戶端/服務(wù)器模型中非常關(guān)鍵的中立、實(shí)時(shí)、可靠、安全等特性,于是他們決定開(kāi)發(fā)一款瀏覽器。
他們開(kāi)發(fā)的瀏覽器一開(kāi)始叫WebRunner后來(lái)改名為HotJava。HotJava是完全由Java編寫(xiě)的,這個(gè)瀏覽器最大的亮點(diǎn)是可以執(zhí)行網(wǎng)頁(yè)中的內(nèi)嵌代碼,這個(gè)技術(shù)稱為Applet。而當(dāng)時(shí)其它的瀏覽器只能顯示靜態(tài)的內(nèi)容。
Sun公司在1995年5月23日發(fā)布了HotJava(和Java語(yǔ)言同時(shí)發(fā)布),在當(dāng)時(shí)引起了不小的關(guān)注并吸引來(lái)了許多新的Java開(kāi)發(fā)者。但是HotJava除了Applet其它表現(xiàn)并不佳,且當(dāng)時(shí)人們習(xí)慣使用瀏覽器是網(wǎng)景的Netscape Navigator和微軟的Internet Explorer。后來(lái)Sun為了推廣Java Applet推出了可以在其他瀏覽器實(shí)現(xiàn)Applet的瀏覽器插件。既然其他瀏覽器都能用Applet那HotJava就更沒(méi)人用了。HotJava的最后一個(gè)版本是3.0版本,在網(wǎng)上搜索還能下載呢。我就好奇在Windows XP系統(tǒng)上裝了結(jié)果是下圖這個(gè)樣子。
1996年年初,Sun發(fā)布了Java的第一個(gè)正式版本,也就是JDK1.0(1995年只是發(fā)布了Java這門(mén)語(yǔ)言)。從此版本更新到現(xiàn)在已經(jīng)是Java8了。下圖是Java的版本更新歷程和每個(gè)版本比較有代表性的新特性。讀者如果是新人對(duì)這些新特性感到不知所云完全沒(méi)有關(guān)系,這篇文章只需要你瀏覽,當(dāng)你學(xué)了相應(yīng)語(yǔ)法也可以回過(guò)頭來(lái)看看會(huì)更有感覺(jué)。
到此關(guān)于Java的歷史基本上講完了,只剩下一個(gè)挺重要的事件。那就是2009年4月20日Oracle以74億美元收購(gòu)了Sun公司所有股份。也就是說(shuō)Java平臺(tái)現(xiàn)在屬于Oracle。
Java的特性在說(shuō)Java特性的時(shí)候,很多資料會(huì)只說(shuō)優(yōu)點(diǎn)不說(shuō)缺點(diǎn),甚至缺點(diǎn)說(shuō)成優(yōu)點(diǎn)。我不會(huì)這么干,Java是一個(gè)很成熟且實(shí)用的工具,但也不是十全十美的。關(guān)于Java特性我分為優(yōu)點(diǎn)和缺點(diǎn)和其它三部分。具體如下:
注:如果你是一名初學(xué)者,這些特性你應(yīng)該看不懂。沒(méi)有關(guān)系你非常正常,你先瀏覽一遍,等你看完整套教程你再回過(guò)頭來(lái)看看。
優(yōu)點(diǎn):
面向?qū)ο?br>Java是一門(mén)面向?qū)ο蟮恼Z(yǔ)言。面向?qū)ο蠼?jīng)過(guò)這么多年的實(shí)踐已經(jīng)證明是當(dāng)下最好的程序設(shè)計(jì),更符合人們的思維習(xí)慣。
跨平臺(tái)
跨平臺(tái)指的是“一次編譯,到處運(yùn)行”,也就是程序員只需要寫(xiě)一份代碼編譯一次,就可以交給各個(gè)平臺(tái)解釋執(zhí)行??缙脚_(tái)可以說(shuō)是Java的招牌特色。
自動(dòng)管理內(nèi)存
Java因?yàn)槎嗔颂摂M機(jī)這一層不僅實(shí)現(xiàn)了“一次編譯,到處運(yùn)行”這一美好特性,而且還提供了用于自動(dòng)管理內(nèi)存的垃圾回收機(jī)制(Garbage Collection,簡(jiǎn)稱GC),這對(duì)于Java程序員來(lái)說(shuō)是是一種釋放。
安全性
在手動(dòng)管理內(nèi)存的語(yǔ)言例如C++中是很容易出現(xiàn)內(nèi)存泄露問(wèn)題的,但是Java的垃圾收集機(jī)制避免了這一安全問(wèn)題。而且Java程序無(wú)法破壞分配給自己之外的其它系統(tǒng)內(nèi)存,這也極大的提高了宿主系統(tǒng)的安全性。除此之外Java還有簽名機(jī)制可以對(duì)諸多權(quán)限進(jìn)行控制,例如文件讀寫(xiě)。
健壯性
Java的編譯器發(fā)展至今有非常完善的代碼檢測(cè)能力,能在編譯期間排除絕大部分代碼錯(cuò)誤。
多線程
多線程不僅可以更有效的利用系統(tǒng)資源,而且可以實(shí)現(xiàn)程序監(jiān)聽(tīng),實(shí)時(shí)交互等功能。
網(wǎng)絡(luò)能力
Java支持TCP/IP協(xié)議,能夠通過(guò)網(wǎng)絡(luò)上傳與接收數(shù)據(jù)。
動(dòng)態(tài)性
Java并不是一門(mén)動(dòng)態(tài)語(yǔ)言,因?yàn)镴ava不能在程序運(yùn)行過(guò)程中動(dòng)態(tài)的修改程序結(jié)構(gòu)或者變量的數(shù)據(jù)類(lèi)型。但是提供了反射機(jī)制實(shí)現(xiàn)了在程序運(yùn)行過(guò)程中動(dòng)態(tài)獲取類(lèi)的信息。
開(kāi)源
Java語(yǔ)言是開(kāi)源的,可以下載源代碼查看。
豐富的代碼庫(kù)
這個(gè)其實(shí)并不是Java語(yǔ)言本身的特性,而是因?yàn)镴ava用戶太多,這么多年來(lái)留下來(lái)太多的可用代碼。除了官方類(lèi)庫(kù)還有大量了第三方類(lèi)庫(kù)可以使用。這使得大部分功能都能在網(wǎng)絡(luò)上找到解決方案,這就使得Java程序員能夠快速實(shí)現(xiàn)某一功能。
缺點(diǎn):
性能較差
Java因?yàn)樘摂M機(jī)擁有諸多優(yōu)勢(shì),但也因?yàn)橐咛摂M機(jī)這一層相比其它編程語(yǔ)言性能差些。
語(yǔ)法啰嗦
Java的語(yǔ)法是特別啰嗦的,例如需要導(dǎo)入一堆包。再例如打印一句Hello World!是這樣:
System.out.println("Hello World!");
而在Groovy里只要這樣:
println "Hello Groovy"
其它:
語(yǔ)法嚴(yán)謹(jǐn)
語(yǔ)法嚴(yán)謹(jǐn)包括兩個(gè)方面:
數(shù)據(jù)類(lèi)型明確。一種數(shù)據(jù)類(lèi)型占多少字節(jié),能表示什么是明確的。并且聲明之后也不能更換數(shù)據(jù)類(lèi)型。
語(yǔ)法明確。例如大小寫(xiě)敏感,一個(gè)語(yǔ)句的“;”不能省略,各種括號(hào)不能省略,訪問(wèn)權(quán)限必須寫(xiě)清楚等等。
注:語(yǔ)法嚴(yán)謹(jǐn)有的人喜歡覺(jué)得這樣大家代碼統(tǒng)一,有的人不喜歡覺(jué)得不夠自由。所以 我只把這點(diǎn)當(dāng)作一個(gè)特點(diǎn)不作為Java的優(yōu)點(diǎn)或者缺點(diǎn)。
Java是解釋型語(yǔ)言
Java從源代碼.java到字節(jié)碼.class是一個(gè)編譯的過(guò)程,但是JVM運(yùn)行程序是一個(gè)解釋的過(guò)程。所以Java是一門(mén)解釋型的語(yǔ)言。
在前面的Java版本更新歷程的配圖中指出Java1.2開(kāi)始把Java分為J2SE(Java 2 Standard Edition,Java標(biāo)準(zhǔn)版)、J2ME(Java 2 Micro Edition,Java微型版本)和J2EE(Java 2 Enterprise Edition,Java企業(yè)版)三個(gè)體系。
JavaSE就是指Java的基礎(chǔ)語(yǔ)法和一些Java平臺(tái)提供的基礎(chǔ)類(lèi)庫(kù)。而后面兩者可以看作是前者的基礎(chǔ)上添加一些針對(duì)某個(gè)領(lǐng)域的類(lèi)庫(kù)和框架。并不是說(shuō)有好幾個(gè)語(yǔ)法版本的Java。開(kāi)發(fā)時(shí)除了安裝標(biāo)準(zhǔn)版的Java后兩者還需要其它的擴(kuò)展工具。
JavaME是指做一些嵌入式設(shè)備(例如PDA、機(jī)頂盒、家用電器等)或者手機(jī)上的軟件。這里的手機(jī)是指以前那些功能機(jī)并不是現(xiàn)在的Android手機(jī)。如下圖。
而JavaEE指的是做一些企業(yè)級(jí)的應(yīng)用,例如大公司里的ERP系統(tǒng)或者網(wǎng)站。其中網(wǎng)站并不是你看到的網(wǎng)頁(yè)的樣子,而是指你看不到的后臺(tái)邏輯。例如京東和天貓就是Java做的。
Java發(fā)展至今這些體系并沒(méi)有特別明確的區(qū)分,就是Java基礎(chǔ)語(yǔ)法然后特定場(chǎng)合選擇一些合適的工具嘛。而如果問(wèn)學(xué)了Java一般做什么?最熱門(mén)的有兩個(gè),其一就是上面所說(shuō)的網(wǎng)站,另外就是Android。
到現(xiàn)在Java已經(jīng)20歲了,已經(jīng)發(fā)展為最受歡迎的編程語(yǔ)言之一。官方宣稱全世界有900萬(wàn)Java開(kāi)發(fā)者??梢?jiàn)Java軍團(tuán)有多么龐大。
熱度可以參考TIOBE在2016年3月更新的編程語(yǔ)言排行榜和趨勢(shì)圖。數(shù)據(jù)顯示Java目前處于榜首。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/65709.html
摘要:配置好開(kāi)發(fā)環(huán)境之后,我們來(lái)寫(xiě)第一個(gè)程序。注原諒我這里只貼了張截圖,因?yàn)槲矣X(jué)得第一個(gè)程序你最好自己敲而不是復(fù)制粘貼。運(yùn)行程序現(xiàn)在命令行窗口輸出了一句,如下圖好了,恭喜你,你已經(jīng)是一名程序員了,太膩害了。注是編譯器,是運(yùn)行器。 配置好開(kāi)發(fā)環(huán)境之后,我們來(lái)寫(xiě)第一個(gè)Java程序。 Step1:敲代碼 可以在任意目錄,為了方便管理我在D盤(pán)下新建了一個(gè)Source文件夾專(zhuān)門(mén)放代碼,又在Source...
摘要:它的實(shí)現(xiàn)原理是在系統(tǒng)層面上又增加了一層虛擬機(jī),簡(jiǎn)稱,且為每個(gè)平臺(tái)都定制了對(duì)應(yīng)的虛擬機(jī)。然后程序是在虛擬機(jī)上跑的,因此平臺(tái)無(wú)關(guān)。 Java的一大特色就是write once, run anywhere即一次編譯,到處運(yùn)行。就是說(shuō)你不用專(zhuān)門(mén)為每個(gè)平臺(tái)寫(xiě)一份代碼,你寫(xiě)的Java程序在任何平臺(tái)都能跑起來(lái)。 它的實(shí)現(xiàn)原理是在系統(tǒng)層面上又增加了一層虛擬機(jī)(Java Virtual Machine,...
摘要:運(yùn)行環(huán)境,它是程序運(yùn)行的所必需的環(huán)境集合。安裝下一步下一步即可,要記得安裝路徑。配置環(huán)境變量安裝完以后需要對(duì)系統(tǒng)的環(huán)境變量進(jìn)行配置才能開(kāi)發(fā)。之所以不能運(yùn)行是因?yàn)檠b類(lèi)之后還得配置環(huán)境變量。 在了解了Java歷史、特性、作用和跨平臺(tái)原理之后,我們可以開(kāi)始為Java開(kāi)發(fā)做準(zhǔn)備工作了,只是在此之前我們還需要了解Java的兩大基礎(chǔ)概念JDK(Java Development kit)和JRE(J...
摘要:偉大的語(yǔ)言希望到目前為止你還沒(méi)有暈,到這里我們知道了,不管我們用的是什么的也好最終都逃不出等語(yǔ)言除外,不直接執(zhí)行之類(lèi)的解釋型語(yǔ)言程序,可以直接執(zhí)行的是解釋器代碼,解釋器最終來(lái)執(zhí)行等程序,這就是解釋型語(yǔ)言效率不如編譯型語(yǔ)言效率高的原因。 雖然在這里我們主要關(guān)注的是操作系統(tǒng),但畢竟操作系統(tǒng)的目的就是能更好的運(yùn)行用戶程序,而且該教程主要是站在程序員的角度來(lái)講解操作系統(tǒng)的,作為程序員是繞不開(kāi)程...
摘要:偉大的語(yǔ)言希望到目前為止你還沒(méi)有暈,到這里我們知道了,不管我們用的是什么的也好最終都逃不出等語(yǔ)言除外,不直接執(zhí)行之類(lèi)的解釋型語(yǔ)言程序,可以直接執(zhí)行的是解釋器代碼,解釋器最終來(lái)執(zhí)行等程序,這就是解釋型語(yǔ)言效率不如編譯型語(yǔ)言效率高的原因。 雖然在這里我們主要關(guān)注的是操作系統(tǒng),但畢竟操作系統(tǒng)的目的就是能更好的運(yùn)行用戶程序,而且該教程主要是站在程序員的角度來(lái)講解操作系統(tǒng)的,作為程序員是繞不開(kāi)程...
閱讀 2263·2021-09-30 09:48
閱讀 3634·2021-09-24 10:27
閱讀 1790·2021-09-22 15:32
閱讀 2026·2021-08-09 13:44
閱讀 3575·2019-08-30 15:55
閱讀 1044·2019-08-29 17:12
閱讀 2000·2019-08-29 17:05
閱讀 2917·2019-08-29 13:43