Java簡(jiǎn)介
Java從誕生到現(xiàn)在已經(jīng)20多年了,一躍成為當(dāng)今高級(jí)語(yǔ)言中的佼佼者,實(shí)屬不易。如果它是一個(gè)人,我想它身上肯定具備了踏實(shí)、努力、自信、奮斗……等優(yōu)秀的品質(zhì)。

Java語(yǔ)言是Sun Microsystems公司于1995年5月推出的高級(jí)程序設(shè)計(jì)語(yǔ)言,從推出至今,引無(wú)數(shù)英雄盡折腰,其面向?qū)ο蟮奶匦允咕幊坛蔀榱艘婚T(mén)藝術(shù),而編程過(guò)程成為了一種享受(不知道初學(xué)的你是否是這樣想的呢)。下面我們將了解Java的歷史和Java主要特性。
Java的起源與發(fā)展
Java的曾用名并不是Java,而是Oak,那Oak又是誰(shuí)呢?
Oak語(yǔ)言是一種可移植、獨(dú)立于平臺(tái)的程序設(shè)計(jì)語(yǔ)言。在20世紀(jì)90年代,由于微波爐、冰箱、遙控器等各種家用設(shè)備的CPU芯片種類(lèi)繁多,各廠商需要為每種設(shè)備單獨(dú)開(kāi)發(fā)控制程序,但是他們面臨一個(gè)情況,C與C++等其他大多數(shù)語(yǔ)言只能對(duì)特定目標(biāo)進(jìn)行編譯,如果對(duì)所有類(lèi)型的CPU芯片進(jìn)行統(tǒng)一編譯,付出的代價(jià)是很大的,所以Java的創(chuàng)始人James Gosling以及他的小伙伴們?yōu)榱颂峁┮环N語(yǔ)言來(lái)解決統(tǒng)一編譯這一難題,結(jié)合C與C++兩門(mén)語(yǔ)言的優(yōu)秀特性(C的語(yǔ)法、C++的面向?qū)ο螅?,開(kāi)始不停地?fù)v鼓,終于在后來(lái)的某一天成功了開(kāi)發(fā)了Oak語(yǔ)言。Oak語(yǔ)言能運(yùn)行不同的環(huán)境、不同的CPU芯片上的代碼。(佩服這幫人的智力與毅力)
James Gosling及他的團(tuán)隊(duì)后來(lái)發(fā)現(xiàn)自己開(kāi)發(fā)的Oak語(yǔ)言還能編寫(xiě)Internet程序,于是在這樣的動(dòng)力感召下,不斷改進(jìn)與完善Oak,并獲得了成功,然后將改進(jìn)后的語(yǔ)言Rename為Java。這個(gè)名字來(lái)源于印度尼西亞一個(gè)盛產(chǎn)咖啡的島嶼,中文名叫爪哇島,意思為世人端上一杯熱咖啡。由于James Gosling等程序設(shè)計(jì)師對(duì)咖啡的情有獨(dú)鐘并且想象力超群,然后就用一杯冒著熱氣的咖啡作為新語(yǔ)言Java的Logo。
2009年Sun Microsystems公司被Oracle收購(gòu),成為Oracle公司旗下的子公司。Oracle公司對(duì)Java語(yǔ)言的創(chuàng)新與發(fā)展投入精力,確保了Java的推陳出新。
Java三大體系
針對(duì)的平臺(tái)規(guī)模及類(lèi)型不一樣,SUN公司將Java分為3個(gè)體系,另外,在2005年6月,JavaOne大會(huì)召開(kāi),SUN公司對(duì)Java各體系版本進(jìn)行更名,原來(lái)的J2SE更名為Java SE,J2EE更名為Java EE,J2ME更名為Java ME。
(1)Java SE(Java Platform Standard Edition,Java平臺(tái)標(biāo)準(zhǔn)版)
(2)Java EE(Java Platform Enterprise Edition,Java平臺(tái)企業(yè)版)
(3)Java ME(Java Platform Micro Edition,Java平臺(tái)微型版)
Java主要特性
任何語(yǔ)言都有其獨(dú)特的魅力,Java也不例外,其具有的主要特性如下:
(1)面向?qū)ο?/p>
Java是一種面向?qū)ο蟮恼Z(yǔ)言(這一點(diǎn)隨它“爸”,C++),這里的對(duì)象指的是應(yīng)用程序的數(shù)據(jù)及其操作方法。Java語(yǔ)言提供類(lèi)、接口、繼承、實(shí)現(xiàn)等原語(yǔ),規(guī)定類(lèi)之間只能進(jìn)行單繼承、接口之間可以進(jìn)行多繼承(這種繼承方式稱為接口實(shí)現(xiàn)機(jī)制),并且Java提供了動(dòng)態(tài)的接口模型,實(shí)現(xiàn)了模塊化和信息封裝??傊?,Java語(yǔ)言是一種純粹的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。
(2)簡(jiǎn)單性
Java語(yǔ)言之所以變得簡(jiǎn)單,是因?yàn)镴ava語(yǔ)言從C語(yǔ)言繼承了語(yǔ)法,從C++學(xué)會(huì)了面向?qū)ο螅ㄕ娴氖情L(zhǎng)江后浪推前浪,一浪更比一浪強(qiáng)),因此,Java的語(yǔ)法與C和C++都比較相近,學(xué)習(xí)起來(lái)就輕松很多。Java取消了很多語(yǔ)言中十分繁瑣又難以理解的內(nèi)容,如C++的指針、運(yùn)算符重載、類(lèi)的多重繼承等,采用了如引用的概念,并提供了自動(dòng)的垃圾收集,大大簡(jiǎn)化了程序設(shè)計(jì)過(guò)程中的內(nèi)存管理工作??偟脕?lái)說(shuō),Java的簡(jiǎn)單性體現(xiàn)在編程過(guò)程中,開(kāi)發(fā)者只需理解基本的概念,就能編寫(xiě)出合適的應(yīng)用。
(3)跨平臺(tái)
Java的跨平臺(tái)特性體現(xiàn)在Java能運(yùn)行于不同的軟件平臺(tái)和硬件平臺(tái)。Java引進(jìn)了Java虛擬機(jī),Java程序都運(yùn)行在虛擬機(jī)中,而且不同平臺(tái)都實(shí)現(xiàn)了Java虛擬機(jī),同一個(gè)Java程序經(jīng)過(guò)編譯后得到的文件都是相同而統(tǒng)一的,因此實(shí)現(xiàn)了程序一次編寫(xiě),到處運(yùn)行(Write Once,Run EveryWhere)。
(4)可移植性
Java具備很好的移植性,這得益于它的平臺(tái)無(wú)關(guān)性。Java的類(lèi)庫(kù)實(shí)現(xiàn)了與平臺(tái)無(wú)關(guān)的接口,這意味這類(lèi)庫(kù)也是可移植的。同時(shí),Java的編譯器是有Java本身實(shí)現(xiàn)的,Java的解釋器(運(yùn)行環(huán)境)由ANSI C(標(biāo)準(zhǔn)C)實(shí)現(xiàn),因而Java系統(tǒng)也具有可移植性。
(5)多線程機(jī)制
Java具有多線程機(jī)制,這使得應(yīng)用程序能夠并行地執(zhí)行。Java語(yǔ)言支持多個(gè)線程同時(shí)執(zhí)行,它的同步機(jī)制保證了對(duì)數(shù)據(jù)的共享操作,而且線程具有優(yōu)先級(jí)機(jī)制,有助于使用不同的線程來(lái)完成不同的任務(wù),這提高了交互的實(shí)時(shí)響應(yīng)能力。Java的多線程技術(shù)使網(wǎng)上實(shí)時(shí)交互很容易實(shí)現(xiàn),從而為大批量并發(fā)訪問(wèn)提供了技術(shù)支持。
(6)健壯性
Java的強(qiáng)類(lèi)型機(jī)制、異常處理機(jī)制、垃圾自動(dòng)回收機(jī)制等都保證了Java程序的健壯性,同時(shí),Java中專(zhuān)門(mén)的指針模型排除了內(nèi)存中的數(shù)據(jù)被覆蓋和損毀的可能性,而Java的安全檢查機(jī)制使得Java更具健壯性。
(7)安全性
Java是一種安全的網(wǎng)絡(luò)編程語(yǔ)言,不支持指針類(lèi)型,一切對(duì)內(nèi)存的訪問(wèn)都必須通過(guò)對(duì)象的實(shí)例來(lái)實(shí)現(xiàn),這能夠防止他人使用欺騙手段訪問(wèn)對(duì)象的私有成員,也能夠避免指針操作中易產(chǎn)生的錯(cuò)誤。Java的安全機(jī)制還體現(xiàn)在多個(gè)層次上:在編譯層,有語(yǔ)法檢查;在解釋層,有字節(jié)碼校驗(yàn)器,測(cè)試代碼段落格式和規(guī)則檢查、訪問(wèn)權(quán)限和類(lèi)型轉(zhuǎn)換合法性檢查、操作數(shù)堆棧的上溢和下溢、代碼參數(shù)類(lèi)型合法性等;在平臺(tái)上,通過(guò)配置策略,可設(shè)定訪問(wèn)資源域,無(wú)須區(qū)分本地或遠(yuǎn)程。另外,Java對(duì)通過(guò)網(wǎng)絡(luò)下載的類(lèi)具有一個(gè)安全防范機(jī)制(類(lèi)ClassLoader),如分配不同的名字空間以防替代本地的同名類(lèi),并提供安全管理機(jī)制(類(lèi)SecurityManager)讓Java應(yīng)用設(shè)置安全哨兵。
(8)分布式
Java語(yǔ)言支持Internet應(yīng)用的開(kāi)發(fā),在基本的Java應(yīng)用編程接口(Application Programming Interface,API)中有一個(gè)網(wǎng)絡(luò)應(yīng)用編程接口(java.net),它提供了用于網(wǎng)絡(luò)應(yīng)用編程的類(lèi)庫(kù),包括URL、URLConnnection、Socket、ServiceSocket等。另外,Java的RMI(Remote Method Invocation)機(jī)制也是開(kāi)發(fā)分布式應(yīng)用的重要手段。
(9)動(dòng)態(tài)性
Java能適應(yīng)不斷變化的環(huán)境,不會(huì)因程序的更新而重新編譯程序,所以在類(lèi)庫(kù)中可以自由地加入新的方法和實(shí)例變量,這并不會(huì)影響用戶程序的執(zhí)行,并且Java通過(guò)接口(Interface)機(jī)制支持多重繼承,使之比嚴(yán)格的類(lèi)繼承更具有靈活性和擴(kuò)展性。另外,Java中的類(lèi)有一個(gè)運(yùn)行時(shí)刻的表示,能進(jìn)行運(yùn)行時(shí)刻的類(lèi)型檢查,從而保證程序的正確性與安全性。
小結(jié)
本章主要介紹了Java的產(chǎn)生與發(fā)展,以及它成為現(xiàn)代高級(jí)編程語(yǔ)言的必備資質(zhì)(即主要特性)。學(xué)習(xí)Java也將從這里開(kāi)始,我們以后將慢慢領(lǐng)略Java的魅力。
壓力不是有人比你努力,而是比你牛幾倍的人依然在努力。(這里沒(méi)有狗糧,只有雞湯)

鄭重聲明:以上圖片來(lái)源于網(wǎng)絡(luò),我只是正好碰到那么美的圖片(若有侵權(quán),給你分點(diǎn)狗糧作為補(bǔ)償)(嘿嘿,記得告訴我)