小編給大家分享一下Java是怎么來的,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
城中網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。成都創(chuàng)新互聯(lián)成立于2013年到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
Java的由來
對于計(jì)算機(jī)語言的發(fā)展史,業(yè)界一般認(rèn)為:B語言導(dǎo)致了C語言的誕生,C語言演變出了C++語言,而C++語言將讓位于Java語言。要想更好地了解 Java語言,就必須了解它產(chǎn)生的原因、推動(dòng)它發(fā)展的動(dòng)力,以及它對其他語言的繼承。像以前其他成功的計(jì)算機(jī)語言一樣,Java繼承了其他語言的先進(jìn)原理,同時(shí)又因其獨(dú)特的環(huán)境要求而提出了一些創(chuàng)新性的概念。在這本書的其他各章中,將從實(shí)用的角度,對Java語言、庫及應(yīng)用程序進(jìn)行包括語法在內(nèi)的詳細(xì)介紹。在本章里,我們將介紹Java語言產(chǎn)生的背景、發(fā)展過程,以及使它變得如此重要的原因。
盡管Java語言已和Internet的在線環(huán)境密不可分,但首先應(yīng)該注意到的最重要一點(diǎn)是:它是一種程序語言。計(jì)算機(jī)語言的革新和發(fā)展需要2個(gè)基本因素的驅(qū)動(dòng):
? 適應(yīng)正在變化的環(huán)境和需求
? 實(shí)現(xiàn)編程藝術(shù)的完善與提高
下面你將看到,Java也正是在這兩個(gè)因素的驅(qū)動(dòng)下產(chǎn)生的。
Java總是和C++聯(lián)系在一起,而C++則是從C語言派生而來的,所以Java語言繼承了這兩種語言的大部分特性。Java的語法是從C繼承的,Java許多面向?qū)ο蟮奶匦允艿紺++的影響。事實(shí)上,Java中幾個(gè)自定義的特性都來自于或可以追溯到它的前驅(qū)。而且,Java語言的產(chǎn)生與過去 30年中計(jì)算機(jī)語言細(xì)致改進(jìn)和不斷發(fā)展密切相關(guān)?;谶@些原因,本節(jié)將按順序回顧促使Java產(chǎn)生的事件和推動(dòng)力。正如你將看到的一樣,每一次語言設(shè)計(jì)的革新都是因?yàn)橄惹暗恼Z言不能解決目前遇到的基本問題而引起。Java也不例外。
一、現(xiàn)代的編程語言的誕生:C語言
C語言的產(chǎn)生震撼了整個(gè)計(jì)算機(jī)界。它的影響不應(yīng)該被低估,因?yàn)樗鼜母旧细淖兞司幊痰姆椒ê退悸?。C語言的產(chǎn)生是人們追求結(jié)構(gòu)化、高效率、高級語言的直接結(jié)果,可用它替代匯編語言開發(fā)系統(tǒng)程序。當(dāng)設(shè)計(jì)一種計(jì)算機(jī)語言時(shí),經(jīng)常要從以下幾方面進(jìn)行權(quán)衡:
? 易用性與功能
? 安全性和效率性
? 穩(wěn)定性和可擴(kuò)展性
C語言出現(xiàn)以前,程序員們不得不經(jīng)常在有優(yōu)點(diǎn)但在某些方面又有欠缺的語言之間做出選擇。例如,盡管公認(rèn)FORTRAN在科學(xué)計(jì)算應(yīng)用方面可以編寫出相當(dāng)高效的程序,但它不適于編寫系統(tǒng)程序。BASIC雖然容易學(xué)習(xí),但功能不夠強(qiáng)大,并且談不上結(jié)構(gòu)化,這使它應(yīng)用到大程序的有效性受到懷疑。匯編語言雖能寫出高效率的程序,但是學(xué)習(xí)或有效地使用它卻是不容易的。而且,調(diào)試匯編程序也相當(dāng)困難。
另一個(gè)復(fù)雜的問題是,早期設(shè)計(jì)的計(jì)算機(jī)語言(如BASIC,COBOL,F(xiàn)ORTRAN等)沒有考慮結(jié)構(gòu)化設(shè)計(jì)原則,使用GOTO語句作為對程序進(jìn)行控制的一種主要方法。這樣做的結(jié)果是,用這些語言編寫的程序往往成了“意大利面條式的程序代碼”,一大堆混亂的跳轉(zhuǎn)語句和條件分支語句使得程序幾乎不可能被讀懂。Pascal雖然是結(jié)構(gòu)化語言,但它的設(shè)計(jì)效率比較低,而且缺少幾個(gè)必需的特性,因而無法在大的編程范圍內(nèi)使用(特別是,給定的Pascal 的標(biāo)準(zhǔn)語言在特定時(shí)間是可用的,但將Pascal作為系統(tǒng)級編碼是不切實(shí)際的)。
因此,在C語言產(chǎn)生以前,沒有任何一種語言能完全滿足人們的需要,但人們對這樣一種語言的需要卻是迫切的。在20世紀(jì)70年代初期,計(jì)算機(jī)革命開始了,對軟件的需求量日益增加,使用早期的計(jì)算機(jī)語言進(jìn)行軟件開發(fā)根本無法滿足這種需要。學(xué)術(shù)界付出很多努力,嘗試創(chuàng)造一種更好的計(jì)算機(jī)語言。但是,促使 C語言誕生的另一個(gè),也許是最重要的因素,是計(jì)算機(jī)硬件資源的富余帶來了機(jī)遇。計(jì)算機(jī)不再像以前那樣被緊鎖在門里,程序員們可以隨意使用計(jì)算機(jī),可以隨意進(jìn)行自由嘗試,因而也就有了可以開發(fā)適合自己使用的工具的機(jī)會(huì)。所以,在C語言誕生的前夕,計(jì)算機(jī)語言向前飛躍的時(shí)機(jī)已經(jīng)成熟。
在Dennis Ritchie第一個(gè)發(fā)明和實(shí)現(xiàn)在DEC PDP-11上運(yùn)行UNIX操作系統(tǒng)時(shí),一種更古老的由Martin Richards設(shè)計(jì)的BCPL語言導(dǎo)致了C語言的產(chǎn)生。受BCPL語言的影響,由Ken Thompson發(fā)明的B語言,在20世紀(jì)70年代逐漸向C語言發(fā)展演變。在此后的許多年里,由Brian Kernighan和Dennis Ritchie編寫的《The C Programming Language》(Prentice-Hall,1978)被認(rèn)為是事實(shí)上的C語言標(biāo)準(zhǔn),該書認(rèn)為C只是支持UNIX 操作系統(tǒng)的一種語言。1989年12月,美國國家標(biāo)準(zhǔn)化組織( ANSI )制定了C語言的標(biāo)準(zhǔn),C語言被正式標(biāo)準(zhǔn)化。
許多人認(rèn)為C語言的產(chǎn)生標(biāo)志著現(xiàn)代計(jì)算機(jī)語言時(shí)代的開始。它成功地綜合處理了長期困擾早期語言的矛盾屬性。C語言是功能強(qiáng)大、高效的結(jié)構(gòu)化語言,簡單易學(xué),而且它還包括一個(gè)無形的方面:它是程序員自己的語言。在C語言出現(xiàn)以前,計(jì)算機(jī)語言要么被作為學(xué)術(shù)實(shí)驗(yàn)而設(shè)計(jì),要么由官僚委員會(huì)設(shè)計(jì)。而C語言不同。它的設(shè)計(jì)、實(shí)現(xiàn)、開發(fā)由真正的從事編程工作的程序員來完成,反映了現(xiàn)實(shí)編程工作的方法。它的特性經(jīng)由實(shí)際運(yùn)用該語言的人們不斷去提煉、測試、思考、再思考,使得C語言成為程序員們喜歡使用的語言。確實(shí),C語言迅速吸引了許多狂熱的追隨者,因而很快受到許多程序員的青睞。簡言之,C語言是由程序員設(shè)計(jì)并由他們使用的一種語言。正如你將看到的,Java繼承了這個(gè)思想。
二、對C++的需要
在20世紀(jì)70年代末和80年代初,C成為了主流的計(jì)算機(jī)編程語言,至今仍被廣泛使用。你也許會(huì)問,既然C是一種成功且有用的語言,為什么還需要新的計(jì)算機(jī)語言?答案是復(fù)雜性(complexity)。程序越來越復(fù)雜這一事實(shí)貫穿編程語言的歷史。C++正是適應(yīng)了這一需求。下面介紹為什么對程序復(fù)雜性的更好管理是C++產(chǎn)生的基本條件。
自從計(jì)算機(jī)發(fā)明以來,編程方法經(jīng)歷了戲劇性的變化。例如,當(dāng)計(jì)算機(jī)剛發(fā)明出來時(shí),編程是通過面板觸發(fā)器用人工打孔的辦法輸入二進(jìn)制機(jī)器指令來實(shí)現(xiàn)的。對于只有幾百行的程序,這種辦法是可行的。隨著程序不斷增大,人們發(fā)明了匯編語言,它通過使用符號(hào)來代替機(jī)器指令,這樣程序員就能處理更大、更復(fù)雜的程序。隨著程序的進(jìn)一步增大,高級語言產(chǎn)生了,它給程序員提供了更多的工具來處理復(fù)雜性問題。
第一個(gè)被廣泛使用的高級語言當(dāng)然是FORTRAN。盡管FORTRAN最初給人留下了深刻的印象,但它無法開發(fā)出條理清楚易于理解的程序。20世紀(jì)60年代提出了結(jié)構(gòu)化編程方法。這種結(jié)構(gòu)化的編程思想被像C這樣的語言所應(yīng)用,第一次使程序員可以相對輕松地編寫適度復(fù)雜的程序。然而,當(dāng)一個(gè)工程項(xiàng)目達(dá)到一定規(guī)模后,即使使用結(jié)構(gòu)化編程方法,編程人員也無法對它的復(fù)雜性進(jìn)行有效管理。20世紀(jì)80年代初期,許多工程項(xiàng)目的復(fù)雜性都超過了結(jié)構(gòu)化方法的極限。為解決這個(gè)問題,面向?qū)ο缶幊蹋╫bject-oriented programming,OOP)新方法誕生了。面向?qū)ο蟮木幊淘谶@本書的后面詳細(xì)討論,但在這里給出一個(gè)簡短的定義:面向?qū)ο蟮木幊淌峭ㄟ^使用繼承性、封裝性和多態(tài)性來幫助組織復(fù)雜程序的編程方法。
總之,盡管C是世界上偉大的編程語言之一,但它處理復(fù)雜性的能力有限。一旦一個(gè)程序的代碼超過25 000~100 000行,就很難從總體上把握它的復(fù)雜性了。C++突破了這個(gè)限制,幫助程序員理解并且管理更大的程序。
1979年,當(dāng)Bjarne Stroustrup在新澤西州的Murray Hill實(shí)驗(yàn)室工作時(shí),發(fā)明了C++。Stroustrup 最初把這種新語言稱為“帶類的C”。1983年,改名為C++。C++通過增加面向?qū)ο蟮奶匦詳U(kuò)充了C。因?yàn)镃++產(chǎn)生在C的基礎(chǔ)之上,因此它包括了C所有的特征、屬性和優(yōu)點(diǎn)。這是C++作為語言成功的一個(gè)關(guān)鍵原因。C++的發(fā)明不是企圖創(chuàng)造一種全新的編程語言,而是對一個(gè)已經(jīng)高度成功的語言的改進(jìn)。C+ +在1997年11月被標(biāo)準(zhǔn)化,目前的標(biāo)準(zhǔn)是ANSI/ISO。
三、Java出現(xiàn)的時(shí)機(jī)已經(jīng)到來
在20世紀(jì)80年代末和90年代初,使用面向?qū)ο缶幊痰腃++語言占主導(dǎo)地位。的確,有一段時(shí)間程序員似乎都認(rèn)為已經(jīng)找到了一種完美的語言。因?yàn)?C++有面向?qū)ο蟮奶卣?,又有C語言高效和格式上的優(yōu)點(diǎn),因此它是一種可以被廣泛應(yīng)用的編程語言。然而,就像過去一樣,推動(dòng)計(jì)算機(jī)語言進(jìn)化的力量正在醞釀。在隨后的幾年里,萬維網(wǎng)(WWW)和Internet達(dá)到臨界狀態(tài)。這個(gè)事件促成編程的另一場革命。
看完了這篇文章,相信你對“Java是怎么來的”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!