你還太年輕
創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供平昌網(wǎng)站建設(shè)、平昌做網(wǎng)站、平昌網(wǎng)站設(shè)計(jì)、平昌網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、平昌企業(yè)網(wǎng)站模板建站服務(wù),十余年平昌做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
Java只是一種高級(jí)編程語(yǔ)言,他是沒(méi)有辦法叢伍直接操作硬件的,之所以能控制是因?yàn)樗\(yùn)行在Linux之上,Linux是硬件和java的橋梁 ,最終是Linux操作的猛散
Linux為什么可以?那就去學(xué)一下吧 我也不誤導(dǎo)滲知或你了
Java的起源
計(jì)算機(jī)發(fā)展需要2哥基本因素的驅(qū)動(dòng):
適應(yīng)不斷變化的環(huán)境和并襲需求;
編程藝術(shù)的不斷完善與提高
Java的由來(lái)
語(yǔ)法繼承了c,面向?qū)ο蟮奶匦岳^承了c++,而且Java語(yǔ)言的產(chǎn)生與過(guò)去幾十年計(jì)算機(jī)編程語(yǔ)言的改進(jìn)和發(fā)展密切相關(guān),語(yǔ)言設(shè)計(jì)的每一次革新是因?yàn)榕f的語(yǔ)言無(wú)法解決某個(gè)基本問(wèn)題所引起的,Java也不例外。
C
替代匯編語(yǔ)言,開發(fā)系統(tǒng)程序 特性:易用性和功能 安全性和效率 穩(wěn)定性和可擴(kuò)展性FORTRAN:科學(xué)計(jì)算應(yīng)用方面可以編寫出相當(dāng)高效的程序,但它不適合編寫系統(tǒng)程序,BASIC雖然易學(xué),但功能不夠強(qiáng)大,并且談不上結(jié)構(gòu)化,應(yīng)用到大程序令人懷疑,匯編語(yǔ)言雖能寫出高效率的程序,但是學(xué)習(xí)或者高效地使用不容易,而且調(diào)試匯編攔局程序也相當(dāng)困難。
早期設(shè)計(jì)的計(jì)算機(jī)語(yǔ)言(如BASIC、COBOL、FORTRAN)沒(méi)有考慮結(jié)構(gòu)化,使用GOTO語(yǔ)句,這樣做的結(jié)果是一大堆混亂的跳轉(zhuǎn)語(yǔ)句和條件分支語(yǔ)句使得程序幾乎不可能被讀懂。Pascal雖然是結(jié)構(gòu)化語(yǔ)言,但它的設(shè)計(jì)效率較低,而且缺少幾個(gè)必需的特性,因而無(wú)法在大的編程范圍內(nèi)使用。20世紀(jì)70年代初期,計(jì)算機(jī)革命開始,使用早期語(yǔ)言進(jìn)行軟件開發(fā)無(wú)法滿足這種需求,當(dāng)然硬件資源充足,是促使c誕生的一個(gè)也許最重要的因素。
Dennis Ritchie在運(yùn)行UNIX操作系統(tǒng)的DECPDP-11上發(fā)明并首次實(shí)現(xiàn)了c,而Martin Richards設(shè)計(jì)的BCPL語(yǔ)言導(dǎo)致了c語(yǔ)言開發(fā)成功受BCPL影響,由Brian Kernighan 發(fā)明的B語(yǔ)言也逐漸向c語(yǔ)言發(fā)展演變,在此后的許多年里,Brian Kernighan和Dennis Ritchie編寫的The C Programming Language(Prentice-Hall,1978)被認(rèn)為是事實(shí)上的C語(yǔ)言標(biāo)準(zhǔn),89年12月美國(guó)國(guó)家標(biāo)準(zhǔn)化組織(ANSI)制定了C語(yǔ)言的標(biāo)準(zhǔn)。
C語(yǔ)言的特性由實(shí)際運(yùn)用該語(yǔ)言的人們不斷提煉、測(cè)試、思考、再思考使其成為程序員們喜歡使用的語(yǔ)言。
C++:更上一層樓
20世紀(jì)70年代末和80年代初,C語(yǔ)言成為主流計(jì)算機(jī)編程語(yǔ)言,至今仍被廣泛使用,你也許會(huì)問(wèn),既然C是一種如此成功且有用的語(yǔ)言,為什么還需要新的計(jì)算機(jī)語(yǔ)言?答案是:復(fù)雜性,縱觀編程的歷史,正是程序日益增加的復(fù)雜性驅(qū)使人們尋求管理復(fù)雜性的更好方法。c++正是適應(yīng)了這一需求,為什么管理程序復(fù)雜性是C++產(chǎn)生的基本條件呢?
計(jì)算機(jī)出生:面板觸發(fā)器(人工打孔)——》對(duì)于只有幾百行的程序,這種辦法是可行的,隨著程序不斷變大,人們發(fā)明匯編語(yǔ)言,它使用符號(hào)來(lái)代替機(jī)器指令,這樣程序員就能處理更大更復(fù)雜的程序,隨著程序進(jìn)一步變大,高級(jí)語(yǔ)言產(chǎn)生了,它給程序員提供了更多的工具來(lái)處理復(fù)雜性問(wèn)題。20世紀(jì)80年代初,許多工程項(xiàng)目都令結(jié)構(gòu)化方法到達(dá)了極限。為解決這個(gè)問(wèn)題,一種面向?qū)ο缶幊痰男戮幊谭椒ㄕQ生,在這里先給出一個(gè)簡(jiǎn)短的定義:面向?qū)ο蟮木幊淌峭ㄟ^(guò)使用繼承性、封裝性和多態(tài)性來(lái)組織復(fù)雜程序的編程方法。
盡管C偉大,但是處理復(fù)雜性的能力有限。一旦一個(gè)程序的代碼超過(guò)25000~100000行,就因?yàn)檫^(guò)于復(fù)雜從而很難把握,C++突破了這個(gè)限制,可以幫助程序員理解和管理更大的程序。
1979年Bjiarne Stroustrup發(fā)明C++,最初成為帶類的C,83年改名絕衡兄C++,通過(guò)增加面向?qū)ο蟮奶匦詳U(kuò)充了C。因?yàn)镃++建立在C的基礎(chǔ)之上,所以包括C的所有特性、屬性和優(yōu)點(diǎn),這是C++作為一種語(yǔ)言的成功的關(guān)鍵原因,發(fā)明C++不是企圖創(chuàng)造一種全新的編程語(yǔ)言,相反,它是對(duì)一個(gè)已經(jīng)高度成功的語(yǔ)言的改進(jìn)。
Java出現(xiàn)的時(shí)機(jī)已經(jīng)到來(lái)
20世紀(jì)80年代末和90年代初,使用面向?qū)ο缶幊痰腃++語(yǔ)言占主導(dǎo)地位,甚至有一段時(shí)間程序員似乎都認(rèn)為已經(jīng)找到了一種完美的語(yǔ)言。然而,推動(dòng)計(jì)算機(jī)語(yǔ)言進(jìn)化的力量正在醞釀。在隨后的幾年里,萬(wàn)維網(wǎng)和Internet事件促成了編程的另一場(chǎng)革命。
Java誕生
Java是由Jamcs Gosling、Patrick Naughton、Chris Warth、Ed Frank 和Mike Sheridan于1991年在Sun Microsystems公司設(shè)計(jì)出來(lái),最初推動(dòng)力并非Internet而是源于對(duì)獨(dú)立于平臺(tái)語(yǔ)言的需要,這種語(yǔ)言可開發(fā)能嵌入微波爐、遙控器等各種家用電器設(shè)備軟件。用作控制器的CPU是多種多樣的,但是c和c++(以及其他絕大多數(shù)語(yǔ)言)的缺點(diǎn)是只能對(duì)特定目標(biāo)進(jìn)行編譯。盡管為任何類型的cpu是多種多樣的,但c和c++的缺點(diǎn)只能對(duì)特定目標(biāo)進(jìn)行編譯,盡管為任何類型的cpu編譯c++程序是可能的,但是需要一個(gè)完整的以該cpu為目標(biāo)的c++編譯器,而創(chuàng)建編譯器是一項(xiàng)既耗費(fèi)又耗時(shí)的工作,因此需要一種簡(jiǎn)單且更為經(jīng)濟(jì)高效的解決方案。為了找到這種方案,Gosling和其他人一起致力于開發(fā)一種致力于開發(fā)一種可移植的、平臺(tái)獨(dú)立的語(yǔ)言,該語(yǔ)言能夠生成運(yùn)行于不同環(huán)境、不同cpu上的代碼,他們的努力最終促成了Java的誕生。
www誕生對(duì)java的未來(lái)起到至關(guān)重要的作用
Java與C++不兼容,對(duì)Java影響最大的是c#,二者使用相同的語(yǔ)法,而且均支持分布式程序設(shè)計(jì),使用相同的對(duì)象模型等。
Java對(duì)Internet重要性
二者互補(bǔ)原因簡(jiǎn)單,Java擴(kuò)展了可以在電腦空間自由流動(dòng)的對(duì)象的世界在網(wǎng)絡(luò)中有兩大類對(duì)象在服務(wù)器和個(gè)人計(jì)算機(jī)之間傳輸:被動(dòng)的信息和動(dòng)態(tài)的、主動(dòng)的程序例如,當(dāng)閱讀電子郵件時(shí),是在看被動(dòng)的數(shù)據(jù),甚至當(dāng)你下載一個(gè)程序時(shí),該程序的代碼也是被動(dòng)的數(shù)據(jù),直到你執(zhí)行它為止??梢詡鬏?shù)絺€(gè)人計(jì)算機(jī)的另一類對(duì)象是動(dòng)態(tài)的,自運(yùn)行的程序,雖然這類程序是客戶機(jī)上的活動(dòng)代理,但卻是由服務(wù)器來(lái)初始化的例如,服務(wù)器提供用來(lái)正確地顯示服務(wù)器傳送數(shù)據(jù)的程序。網(wǎng)絡(luò)程序在動(dòng)態(tài)上是令人滿意的,但是在可移植上和安全性上卻帶來(lái)了嚴(yán)重的問(wèn)題,在java出現(xiàn)之前有一半以上的電腦實(shí)體無(wú)法進(jìn)入網(wǎng)絡(luò)世界,是java為它們打開了便利之門,而且在這個(gè)過(guò)程中定義了一種全新的程序形式:applet(小應(yīng)用程序)
Java applet
applet是可以在Internet中傳輸并可以兼容Java的web瀏覽器中運(yùn)行的特殊Java程序,applet可以隨需下載,就像圖像、聲音文件和視頻文件。換句話說(shuō),它能對(duì)用戶的輸入做出反應(yīng),并且能動(dòng)態(tài)的變化,而不是一遍又一遍地播放同一動(dòng)畫或聲音。
如果java不能解決兩個(gè)關(guān)于applet最棘手的問(wèn)題:安全性和可移植性,那么applet就不會(huì)如此令人激動(dòng)了
安全性
眾所周知,每次下載一個(gè)正常的程序時(shí),都要冒著被病毒感染的危險(xiǎn),在java出現(xiàn)之前,大多數(shù)用戶并不經(jīng)常下載可執(zhí)行的程序文件,即使下載也要進(jìn)行病毒檢查,盡管如此,大多數(shù)用戶還是擔(dān)心,除了病毒還有惡意程序也要警惕,這種程序通過(guò)搜索計(jì)算機(jī)本地文件系統(tǒng)的內(nèi)容來(lái)收集你的私人信息,例如信用卡號(hào)碼,銀行賬戶結(jié)算和口令而Java在網(wǎng)絡(luò)應(yīng)用程序和用戶的計(jì)算機(jī)之間提供了一道防火墻(firewall),消除了用戶這些顧慮
將java程序編譯成字節(jié)碼有助于更容易地在一個(gè)大的范圍環(huán)境下運(yùn)行程序原因非常簡(jiǎn)單,只要在各種操作平臺(tái)上實(shí)現(xiàn)java虛擬機(jī)就可以了。在一個(gè)給定的系統(tǒng)中,只要系統(tǒng)運(yùn)行時(shí)包存在,任何java程序就可以在該系統(tǒng)上運(yùn)行。記住,盡管不同平臺(tái)的java虛擬機(jī)的細(xì)節(jié)有所不同,但它們都理解相同的java字節(jié)碼,如果java程序被編譯為本機(jī)代碼,那么對(duì)于連接到Internet上的每種cpu類型都要有該程序的對(duì)應(yīng)版本,這當(dāng)然不是一種可行的解決方案。因此,通過(guò)JVM執(zhí)行字節(jié)碼是編寫真正可移植性程序最容易的方法
JVM執(zhí)行java程序有助于提高安全性,因?yàn)?jvm控制java程序的運(yùn)行,所以它可以包含這個(gè)程序并且能阻止它在系統(tǒng)之外產(chǎn)生負(fù)作用,而java語(yǔ)言特有的某些限制增強(qiáng)了它的安全性
java專門用語(yǔ)
簡(jiǎn)單(simple)安全(secure)可移植(Portable)面向?qū)ο螅∣bject-oriented)健壯(Robust)多線程(Multithread)體系結(jié)構(gòu)中立(Architecture-neutral)解釋執(zhí)行(Interpreted)高性能(High perforance分布式(Distributed)動(dòng)態(tài)(Dynamic)
健壯性:先考慮使程序失敗的兩個(gè)重要原因:內(nèi)存管理錯(cuò)誤,和誤操作引起的異常情況(運(yùn)行時(shí)錯(cuò)誤)。在傳統(tǒng)的編程環(huán)境下,內(nèi)存管理是一項(xiàng)困難乏味的任務(wù)。例如:在c++/c中程序員必須手工分配和釋放所有的動(dòng)態(tài)內(nèi)存。就會(huì)出現(xiàn)問(wèn)題,因?yàn)槌绦騿T可能忘記釋放原來(lái)分配的內(nèi)存,或者釋放了其他正在使用的內(nèi)存,而通過(guò)Java管理內(nèi)存分配和釋放,可以從根本上消除這些問(wèn)題(事實(shí)上釋放內(nèi)存是完全自動(dòng)的,因?yàn)镴ava為閑置的對(duì)象提供了內(nèi)存垃圾自動(dòng)收集)。在傳統(tǒng)的環(huán)境下,異常情況可能經(jīng)常由“除零”或“文件未找到”這樣的情況所引起,而我們又必須用既笨拙又難以理解的一大堆指令來(lái)對(duì)它們進(jìn)行管理,Java通過(guò)提供面向?qū)ο蟮漠惓L幚頇C(jī)制解決這個(gè)問(wèn)題。在編寫良好的Java程序中,所有的運(yùn)行時(shí)錯(cuò)誤都可以并且應(yīng)該有程序自身進(jìn)行管理
多線程
設(shè)計(jì)Java的目標(biāo)之一是滿足人們對(duì)創(chuàng)建交互式網(wǎng)絡(luò)程序的需要,為此,Java支持多線程編程,因而用Java編寫的應(yīng)用程序可以同時(shí)執(zhí)行多個(gè)任務(wù),Java運(yùn)行時(shí)系統(tǒng)在多線程同步方面具有成熟的解決方案,能夠創(chuàng)建出運(yùn)行平穩(wěn)的交互式系統(tǒng),Java的多線程機(jī)制非常好用,所以只需關(guān)注程序特定的行為,不用擔(dān)心多任務(wù)子系統(tǒng)
體系結(jié)構(gòu)中立
Java設(shè)計(jì)者考慮主要問(wèn)題是程序代碼的持久性和可移植性。程序員面臨的問(wèn)題是不能保證今天的程序明天能否在同一臺(tái)機(jī)器上順利運(yùn)行。操作系統(tǒng)升級(jí)、處理器升級(jí)以及核心系統(tǒng)資源的變化,都可能導(dǎo)致程序無(wú)法繼續(xù)運(yùn)行,Java設(shè)計(jì)者對(duì)這個(gè)問(wèn)題做過(guò)多種嘗試,Java虛擬機(jī)就是用來(lái)解決這個(gè)問(wèn)題的。它們的目標(biāo)是“只要寫一次程序,在任何地方、任何時(shí)間該程序永遠(yuǎn)都能執(zhí)行”這在很大程度上,Java實(shí)現(xiàn)了這個(gè)目標(biāo)
解釋執(zhí)行和高性能
前面說(shuō)過(guò),通過(guò)把程序編譯為Java字節(jié)碼,Java可以產(chǎn)生跨平臺(tái)運(yùn)行的程序。該代碼可以在提供Java虛擬機(jī)的任何一種系統(tǒng)上執(zhí)行,其他的跨平臺(tái)解決方案對(duì)性能要求都很高,而Java的字節(jié)碼經(jīng)過(guò)設(shè)計(jì)后,很容易用JIT編譯器將字節(jié)碼直接轉(zhuǎn)換成高性能的本機(jī)代碼,Java運(yùn)行時(shí),系統(tǒng)在提供這個(gè)特性的同時(shí)仍具有平臺(tái)獨(dú)立性
分布式
Java是為Internet的分布式環(huán)境而設(shè)計(jì),因?yàn)樗芴幚鞹CP/IP協(xié)議事實(shí)上,通過(guò)URL地址訪問(wèn)資源與直接訪問(wèn)一個(gè)文件的差別并不太大。Java還支持遠(yuǎn)程方法調(diào)用(Remote Method Invocation,RMI)使程序能夠跨網(wǎng)絡(luò)調(diào)用方法。
動(dòng)態(tài):
Java程序帶有多種運(yùn)行時(shí)類型信息,用于在運(yùn)行時(shí)校驗(yàn)和解決對(duì)象訪問(wèn)問(wèn)題。這使得在一種安全,有效的方式下動(dòng)態(tài)地鏈接代碼成為可能,同時(shí)對(duì)applet環(huán)境的健壯性十分重要,因?yàn)樵谶\(yùn)行的系統(tǒng)中,可以動(dòng)態(tài)地更新字節(jié)碼內(nèi)的小段程序
java的演化
Java的最初發(fā)布本不亞于一場(chǎng)革命,但是它并不標(biāo)志著Java快速革新時(shí)代的結(jié)束。與其他軟件系統(tǒng)經(jīng)常進(jìn)行小的改進(jìn)不同,Java以爆炸式的步伐向前發(fā)展。Java1.0發(fā)布后不久,Java的設(shè)計(jì)者開發(fā)出了Java1.1Java1.1新增的特性遠(yuǎn)比普通意義上的版本修訂的內(nèi)容豐富許多,Java1.1增加了許多新的庫(kù)元素,重新定義了applet處理事件的方法,并且重新設(shè)置了1.0版中庫(kù)的許多特性,同時(shí)它也放棄了原來(lái)的由Java1.0定義的若干過(guò)時(shí)的特征。
java的第二個(gè)版本是java2,“2”代表是第二代,java2是一個(gè)分水嶺,它標(biāo)志著java現(xiàn)代時(shí)的開始!java2第一版本號(hào)是1.2,其原因是1.2最初指的是java庫(kù)的內(nèi)部版本號(hào),后來(lái)才用作整個(gè)發(fā)行版。Sun公司將其java產(chǎn)品重新組裝為J2SE(java2平臺(tái)標(biāo)準(zhǔn)版)
java2增加了很多新特性,例如Swing和集合框架(collection framework),并且還提高了java虛擬機(jī)和各種編程工具的性能。java2也包含了一些不贊成繼續(xù)使用的內(nèi)容主要是Thread類中suspend()、resume()和stop()等方法
Java下一個(gè)版本是J2SE1.3這個(gè)版本是Java2最初版本的第一次主要升級(jí)。該版本增強(qiáng)了Java大部分現(xiàn)有的功能,并且限制了開發(fā)環(huán)境??偟恼f(shuō)來(lái)。版本1.2和1.3的程序源代碼是兼容的
J2se1.4發(fā)布進(jìn)一步增強(qiáng)了java此發(fā)行版包括了許多重要的升級(jí)、改進(jìn)和新增功能例如,新增了關(guān)鍵詞assert、鏈?zhǔn)疆惓:鸵粋€(gè)基于心道的i/o子系統(tǒng),它同時(shí)對(duì)集合框架和網(wǎng)絡(luò)類作樂(lè)改動(dòng)。另外還有不計(jì)其數(shù)的小改動(dòng)貫穿其中。盡管引進(jìn)了很多新功能,但版本1.4幾乎與先前版本幾乎保持了百分之百的源代碼兼容。Java的最新版本是J2se 5,它無(wú)疑是另一場(chǎng)革命!
J2SE最新版本是J2SE5,它無(wú)疑是另一場(chǎng)革命!
J2SE5革命
是java生命里程碑上一個(gè)重要的事件。與java先前大多數(shù)升級(jí)不同,j2se5提供的不是遞增式的改進(jìn),而是從根本上拓展了java語(yǔ)言的作用域,功能和范圍,java的任何一次發(fā)行都無(wú)法與J2SE5相提并論。為了領(lǐng)會(huì)關(guān)注一下新特性
泛型 冗數(shù)據(jù) 自動(dòng)裝箱和自動(dòng)拆箱(Autoboxing和Auto-unboxing)枚舉 增強(qiáng)的for-each風(fēng)格的for循環(huán) 變長(zhǎng)參數(shù) 靜態(tài)導(dǎo)入 格式化I/O 并行工具 對(duì)API的升級(jí)
上述這些特性不是枝節(jié)的改動(dòng)和遞增式的升級(jí),每一項(xiàng)都代表著對(duì)java語(yǔ)言的重大引進(jìn)。比如泛型。增強(qiáng)的for循環(huán)類型,和變長(zhǎng)參數(shù),引進(jìn)了新的語(yǔ)法元素,自動(dòng)裝箱和自動(dòng)拆箱,改變了java的語(yǔ)言的句法冗數(shù)據(jù)將一種全新的標(biāo)準(zhǔn)引入到編程領(lǐng)域,所有這些新增特性,不僅造成了直接影響,而且還改變了java本身的基本特性
這些新增的特性重要性反映了在版本號(hào)“5”的才用上,下一個(gè)版本號(hào)正常情況應(yīng)為1.5,但這些變化和新增的特性是在是太重要了僅從1.4轉(zhuǎn)向1.5不足以說(shuō)明變化之大,因此,Sun公司選擇將發(fā)行號(hào)增至5來(lái)強(qiáng)調(diào),當(dāng)前產(chǎn)品被稱為J2SE 5,開發(fā)者工具箱被稱為JDK 5,不過(guò)處于維持一致性的考慮,Sun決定將內(nèi)部版本號(hào)定為1.5,即“5”是外部版本號(hào),“1.5”是內(nèi)部版本號(hào)。
文化革新
從一開始,Java就處于文化革新的中心位置。它的第一個(gè)發(fā)行版重新定義了面向Internet的程序設(shè)計(jì),Java虛擬機(jī)(JVM和字節(jié)碼)改變了我們對(duì)安全性和可移植性的認(rèn)識(shí),applet(包括其后的servlet)給Web帶來(lái)了盎然生機(jī),Java社區(qū)項(xiàng)目重新定義了Java語(yǔ)言吸收新理念的方式,Java世界從來(lái)都不是靜止不前一成不變的。
隨著J2SE的發(fā)行,Java又一次獲得涅馨,適應(yīng)了變化莫測(cè)的編程前景的需求,也又一次成功地站到了計(jì)算機(jī)語(yǔ)言設(shè)計(jì)領(lǐng)域的最前沿。