- 從零開(kāi)始學(xué)Java Web開(kāi)發(fā)
- 孫更新等編著
- 1732字
- 2018-12-27 13:05:54
1.1 Java語(yǔ)言概述
Java語(yǔ)言是世界上第一種純粹的面向?qū)ο缶幊陶Z(yǔ)言,其本身的產(chǎn)生與發(fā)展注定了它在現(xiàn)今軟件編程領(lǐng)域的主流地位。
1.1.1 Java語(yǔ)言的產(chǎn)生
1991年4月Sun公司推動(dòng)了一個(gè)綠色項(xiàng)目(Green Project),該項(xiàng)目旨在推出一種可以為家用消費(fèi)電子類(lèi)產(chǎn)品開(kāi)發(fā)的一個(gè)分布式代碼系統(tǒng),這樣可以對(duì)電冰箱、電視機(jī)等家用電器進(jìn)行控制和信息交流。
項(xiàng)目開(kāi)始時(shí),準(zhǔn)備采用C++語(yǔ)言,但C++對(duì)于家用消費(fèi)電子類(lèi)產(chǎn)品的嵌入式編程而言,細(xì)微的硬件變化都意味著軟件要做大量的改動(dòng),而這種分布式系統(tǒng)上將面臨多種硬件平臺(tái),這使得軟件編程變得極為復(fù)雜。最后該項(xiàng)目基于C++開(kāi)發(fā)了一種新的語(yǔ)言,其最大的優(yōu)勢(shì)在于跨平臺(tái),可做到“編寫(xiě)一次,隨處運(yùn)行(Writing Once, Running Everywhere)”。語(yǔ)言的創(chuàng)建者James Gosling將該語(yǔ)言命名為Oak(橡樹(shù)),后來(lái)得知該名稱(chēng)和其他語(yǔ)言重名,其他開(kāi)發(fā)人員在咖啡屋休息時(shí)得到靈感,建議使用Java這個(gè)名字,該名字得到了認(rèn)同并沿用至今。
但是這個(gè)項(xiàng)目在開(kāi)發(fā)過(guò)程中困難重重,由于智能化電子消費(fèi)設(shè)備的市場(chǎng)并不像Sun公司所預(yù)期的那樣發(fā)展迅速,該項(xiàng)目面臨著被取消的危險(xiǎn)。值得慶幸的是,1993年,隨著Internet的迅速興起,開(kāi)發(fā)人員立即發(fā)現(xiàn)了有著跨平臺(tái)優(yōu)勢(shì)的Java在該領(lǐng)域的巨大潛力,利用它可以在網(wǎng)頁(yè)上添加交互操作和動(dòng)畫(huà)等動(dòng)態(tài)內(nèi)容,而不必考慮網(wǎng)頁(yè)運(yùn)行的客戶(hù)端運(yùn)行環(huán)境的差異。
經(jīng)過(guò)對(duì)原來(lái)語(yǔ)言的進(jìn)一步調(diào)整和優(yōu)化,Sun公司在1995年5月正式對(duì)外發(fā)布了Java語(yǔ)言。由于當(dāng)時(shí)業(yè)界對(duì)于Internet的濃厚興趣,Java迅速得到了廣泛的關(guān)注和應(yīng)用。
1.1.2 Java語(yǔ)言的發(fā)展
Java自1995年公布第一個(gè)版本以來(lái),其經(jīng)過(guò)了數(shù)次大的變革與發(fā)展,其主要的發(fā)展過(guò)程,如表1.1所示。
表1.1 Java語(yǔ)言發(fā)展歷史

1.1.3 Java語(yǔ)言的特性
Java從產(chǎn)生至今已經(jīng)有了將近20年的發(fā)展歷史,最初設(shè)計(jì)時(shí)其就具有一些優(yōu)良的特性,這些特性被很好地保持并發(fā)展到了今天,這些特性如下。
? 簡(jiǎn)單性:Java是一種基于C++產(chǎn)生的語(yǔ)言,其語(yǔ)法上繼承了C++的風(fēng)格,但是它比C++要簡(jiǎn)單很多,它去掉了一些復(fù)雜和容易混淆的概念。如無(wú)指針概念,不支持多重繼承與運(yùn)算符重載等。
? 面向?qū)ο螅篔ava徹底全面地應(yīng)用了面向?qū)ο蟮脑O(shè)計(jì)思路,它是完全徹底支持面向?qū)ο蟮模浔3至撕?jiǎn)單類(lèi)型非“純面向?qū)ο蟆闭Z(yǔ)言,兼顧了程序運(yùn)行的效率。
? 健壯:Java是嚴(yán)格的強(qiáng)類(lèi)型語(yǔ)言,在編譯和程序執(zhí)行時(shí)都進(jìn)行代碼檢查,可避免一些通常難以追蹤的錯(cuò)誤。同時(shí)非常好的故障追蹤和處理機(jī)制,也保障了其程序運(yùn)行的健壯性,如對(duì)象的垃圾回收機(jī)制、錯(cuò)誤異常處理機(jī)制等。
? 多線(xiàn)程:Java對(duì)于多線(xiàn)程的支持是最基本的特性之一,在很多之前的編程語(yǔ)言中,多線(xiàn)程編程往往非常復(fù)雜,但是Java實(shí)現(xiàn)多線(xiàn)程編程非常簡(jiǎn)單,程序員在編碼時(shí)不必關(guān)心后臺(tái)的復(fù)雜實(shí)現(xiàn)。
? 跨平臺(tái):Java在最初的時(shí)候就是被設(shè)計(jì)成跨平臺(tái)的,這個(gè)特性被很好地保持和發(fā)揚(yáng)。到目前為止,主流軟件編程語(yǔ)言中,也只有Java語(yǔ)言可以做到在多個(gè)平臺(tái)系統(tǒng)下“編寫(xiě)一次,隨處運(yùn)行”。當(dāng)然在具體的程序?qū)崿F(xiàn)時(shí),還是會(huì)遇到一些問(wèn)題,在早期也曾有程序員稱(chēng)Java是“一次編寫(xiě),到處錯(cuò)誤”,隨著不斷的完善和改進(jìn)這種說(shuō)法已經(jīng)很少有人提及了。
? 解釋性:Java是解釋執(zhí)行的語(yǔ)言,但是有別于傳統(tǒng)的解釋執(zhí)行語(yǔ)言,程序源碼編寫(xiě)完后,先要進(jìn)行“預(yù)編譯”,但是結(jié)果并不是操作系統(tǒng)可以直接識(shí)別運(yùn)行的二進(jìn)制機(jī)器碼,而是Java虛擬機(jī)能夠識(shí)別解釋執(zhí)行的二進(jìn)制字節(jié)碼。當(dāng)然,這也是Java能夠跨平臺(tái)的秘密所在,即不同的系統(tǒng)環(huán)境中安裝了相應(yīng)的Java虛擬機(jī),便可以解釋執(zhí)行相同的Java字節(jié)碼了。
? 高性能:Java作為解釋執(zhí)行的語(yǔ)言,其運(yùn)行的效率一直是人們廣為關(guān)注的問(wèn)題,其運(yùn)行速度明顯低于編譯語(yǔ)言,特別是在桌面應(yīng)用系統(tǒng)中,這應(yīng)該算是Java的一個(gè)弱點(diǎn)。在這里,還說(shuō)Java是高性能的,原因是在于它的“預(yù)編譯”機(jī)制,這使得它比傳統(tǒng)的解釋執(zhí)行的語(yǔ)言性能要高很多,同時(shí)Java在性能上不斷提升優(yōu)化,包括計(jì)算機(jī)硬件性能的提升,都使得Java系統(tǒng)在性能表現(xiàn)上還令人滿(mǎn)意。
? 分布式:Java在一開(kāi)始就是被設(shè)計(jì)成用來(lái)實(shí)現(xiàn)分布式系統(tǒng)的,所以分布式是Java的本質(zhì)特點(diǎn)之一。Java支持網(wǎng)絡(luò)編程、RMI分布對(duì)象、CORBA等,應(yīng)該說(shuō)Java基本能夠與所有主流的分布式設(shè)計(jì)技術(shù)進(jìn)行交互,因此Java也常常被用來(lái)作為企業(yè)系統(tǒng)集成的首選技術(shù)。
? 動(dòng)態(tài)性:Java語(yǔ)言的動(dòng)態(tài)性是與其適應(yīng)的復(fù)雜網(wǎng)絡(luò)應(yīng)用環(huán)境有關(guān)的,在很多情況下,運(yùn)行的代碼是在運(yùn)行期動(dòng)態(tài)加載的。因此Java程序運(yùn)行時(shí),虛擬機(jī)會(huì)管理多種運(yùn)行信息,運(yùn)行時(shí)對(duì)對(duì)象進(jìn)行檢查,控制對(duì)象訪(fǎng)問(wèn),可安全有效地在運(yùn)行時(shí)動(dòng)態(tài)連接代碼。
- 精通MATLAB神經(jīng)網(wǎng)絡(luò)
- Managing Mission:Critical Domains and DNS
- Dreamweaver CS3網(wǎng)頁(yè)設(shè)計(jì)50例
- Blockchain Quick Start Guide
- 大數(shù)據(jù)時(shí)代的數(shù)據(jù)挖掘
- Windows 7寶典
- Splunk Operational Intelligence Cookbook
- 工業(yè)控制系統(tǒng)測(cè)試與評(píng)價(jià)技術(shù)
- Visual FoxPro程序設(shè)計(jì)
- Citrix? XenDesktop? 7 Cookbook
- 電子設(shè)備及系統(tǒng)人機(jī)工程設(shè)計(jì)(第2版)
- SMS 2003部署與操作深入指南
- AI的25種可能
- Deep Learning Essentials
- 7天精通Photoshop CS5平面視覺(jué)設(shè)計(jì)