2017年計算機二級JAVA考點解析:Java語言的產生及其特點

字號:


    1.1.1Java產生的歷史
    Java來自于Sun公司的一個叫Green的項目,其原先的目的是為家用消費電子產品開發(fā)一個分布式代碼系統(tǒng),這樣我們可以把E-mail發(fā)給電冰箱、電視機等家用電器,對它們進行控制,和它們進行信息交流。開始,準備采用C++,但C++太復雜,安全性差,最后基于C++開發(fā)一種新的語言Oak(Java的前身),Oak是一種用于網絡的精巧而安全的語言,Sun公司曾依此投標一個交互式電視項目,但結果是被SGI打敗??蓱z的Oak幾乎無家可歸,恰巧這時MarkArdreesen開發(fā)的Mosaic和Netscape啟發(fā)了Oak項目組成員,他們用Java編制了HotJava瀏覽器,得到了Sun公司首席執(zhí)行官ScottMcNealy的支持,觸發(fā)了Java進軍Internet。Java的取名也有一個趣聞,有一天,幾位Java成員組的會員正在討論給這個新的語言取什么名字,當時他們正在咖啡館喝著Java(爪哇)咖啡,有一個人靈機一動說就叫Java怎樣,得到了其他人的贊賞,于是,Java這個名字就這樣傳開了。
    1.1.2Java的現(xiàn)狀
    Java是Sun公司推出的新的一代面向對象程序設計語言,特別適合于Internet應用程序開發(fā),它的平臺無關性直接威脅到Wintel的壟斷地位。一時間,\"連Internet,用Java編程\",成為技術人員的一種時尚。雖然新聞界的報導有些言過其實,但Java作為軟件開發(fā)的一種革命性的技術,其地位已被確立,這表現(xiàn)在以下幾個方面:1.計算機產業(yè)的許多大公司購買了Java的許可證,包括IBM,Apple,DEC,Adobe,SiliconGraphics,HP,Oracel,Toshiba,以及最不情愿的Microsoft。這一點說明,Java已得到了工業(yè)界的認可。2.眾多的軟件開發(fā)商開始支持Java的軟件產品。例如:Borland公司正在開發(fā)的基于Java的快速應用程序開發(fā)環(huán)境Latte,預計產品會在1996年中期發(fā)布。Borland公司的這一舉措,推動了Java進入PC機軟件市場。Sun公司自己的Java開發(fā)環(huán)境JavaWorkshop已經發(fā)布。數據庫廠商如:Illustra,Sysbase,Versant,Oracle都在開發(fā)CGI接口,支持HTML和Java。今天是以網絡為中心的計算時代,不支持HTML和Java,應用程序的應用范圍只能限于同質的環(huán)境(相同的硬件平臺)。3.Intranet正在成為企業(yè)信息系統(tǒng)的解決方案,而其中Java將發(fā)揮不可替代的作用。Intranet的目的是把Internet用于企業(yè)內部的信息系統(tǒng),它的優(yōu)點表現(xiàn)在:便宜,易于使用和管理。用戶不管使用何種類型的機器和操作系統(tǒng),界面是統(tǒng)一的Intrnet瀏覽器,而數據庫、Web頁面、應用程序(用Java編的Applet)則存在WWW服務器上,無論是開發(fā)人員,還是管理人員,抑或是用戶都可以受益于該解決方案。Java語言正在不斷發(fā)展和完善,Sun公司是主要的發(fā)展推動者,較通用的編譯環(huán)境有JDK(JavaDevelopKit)與JWS(JavaWorkshop)。還有很多其他公司正在開發(fā)Java語言的編譯器與集成環(huán)境,預計不久Java語言的正確性與效率都將會提高,用戶用Java編程和現(xiàn)在用C++編程一樣方便。
    1.2Java語言的特點
    Java到底是一種什么樣的語言呢?Java是一種簡單的面象對象的分布式的解釋的健壯的安全的結構中立的可移植的性能很優(yōu)異的多線程的動態(tài)的語言。
    1.2.1簡單
    Java最初是為對家用電器進行集成控制而設計的一種語言,因此它必須簡單明了。Java語言的簡單性主要體現(xiàn)在以下三個方面:1.Java的風格類似于C++,因而C++程序員是非常熟悉的。從某種意義上講,Java語言是C及C++語言的一個變種,因此,C++程序員可以很快就掌握Java編程技術。2.Java摒棄了C++中容易引發(fā)程序錯誤的地方,如指針和內存管理。3.Java提供了豐富的類庫。
    1.2.2面向對象
    面向對象可以說是Java最重要的特性。Java語言的設計完全是面向對象的,它不支持類似C語言那樣的面向過程的程序設計技術。Java支持靜態(tài)和動態(tài)風格的代碼繼承及重用。單從面向對象的特性來看,Java類似于SmallTalk,但其它特性、尤其是適用于分布式計算環(huán)境的特性遠遠超越了SmallTalk。
    1.2.3分布式
    Java包括一個支持HTTP和FTP等基于TCP/IP協(xié)議的子庫。因此,Java應用程序可憑借URL打開并訪問網絡上的對象,其訪問方式與訪問本地文件系統(tǒng)幾乎完全相同。為分布環(huán)境尤其是Internet提?copy;動態(tài)內容無疑是一項非常宏偉的任務,但Java的語法特性卻使我們很容易地實現(xiàn)這項目標。
    1.2.4健壯
    Java致力于檢查程序在編譯和運行時的錯誤。類型檢查幫助檢查出許多開發(fā)早期出現(xiàn)的錯誤。Java自已操縱內存減少了內存出錯的可能性。Java還實現(xiàn)了真數組,避免了覆蓋數據的可能。這項功能特征大大縮短了開發(fā)Java應用程序的周期。Java提供Null指針檢測數組邊界檢測異常出口字節(jié)代碼校驗
    1.2.5結構中立
    另外,為了建立Java作為網絡的一個整體,Java將它的程序編譯成一種結構中立的中間文件格式。只要有Java運行系統(tǒng)的機器都能執(zhí)行這種中間代碼?,F(xiàn)在,Java運行系統(tǒng)有Solaris2.4(SPARC),Win32系統(tǒng)(Windows95和WindowsNT)等.Java源程序被編譯成一種高層次的與機器無關的byte-code格式語言,這種語言被設計在虛擬機上運行,由機器相關的運行調試器實現(xiàn)執(zhí)行。
    1.2.6安全
    Java的安全性可從兩個方面得到保證。一方面,在Java語言里,象指針和釋放內存等C++功能被刪除,避免了非法內存操作。另一方面,當Java用來創(chuàng)建瀏覽器時,語言功能和一些瀏覽器本身提供的功能結合起來,使它更安全。Java語言在你的機器上執(zhí)行前,要經過很多次的測試。它經過代碼校驗,檢查代碼段的格式,檢測指針操作,對象操作是否過分以及試圖改變一個對象的類型。
    1.2.6.1Byte-code校驗
    如果byte-code通過代碼校驗,沒有返回錯誤,我們可知道:代碼沒有堆棧上溢出和下溢出所有操作代碼參數類型都是正確的沒有發(fā)生非法數據轉換,如將整數轉換成指針。訪問對象操作是合法的
    1.2.6.2類裝載
    ClassLoader通過將本機類與網絡資源類的名稱分開,來保持安全性。因為調入類時總要經過檢查,這樣避免了特洛伊木馬現(xiàn)象的出現(xiàn)。從網絡上下載的類被調進一個與源相關的私有的名字域。當一個私有類訪問另一個類時,build-in(本機類)首先被檢查,然后檢查相關的類。這樣就避免了破壞本機類情況的出現(xiàn)。
    1.2.7可移植的
    同體系結構無關的特性使得Java應用程序可以在配備了Java解釋器和運行環(huán)境的任何計算機系統(tǒng)上運行,這成為Java應用軟件便于移植的良好基礎。但僅僅如此還不夠。如果基本數據類型設計依賴于具體實現(xiàn),也將為程序的移植帶來很大不便。例如在Windows3.1中整數(Integer)為16bits,在Windows95中整數為32bits,在DECAlpha中整數為64bits,在Intel486中為32bits。通過定義獨立于平臺的基本數據類型及其運算,Java數據得以在任何硬件平臺上保持一致。Java語言的基本數據類型及其表示方式如下:byte8-bit二進制補碼short16-bit二進制補碼int32-bit二進制補碼long64-bit二進制補碼float32-bitIEEE754浮點數double32-bitIEEE754浮點數char16-bitUnicode字符。
    在任何Java解釋器中,數據類型都是依據以上標準具體實現(xiàn)的。因為幾乎目前使用的所有CPU都能支持以上數據類型、8~64位整數格式的補碼運算和單/雙精度浮點運算。Java編譯器本身就是用Java語言編寫的。Java運算系統(tǒng)的編制依據POSIX方便移植的限制,用ANSIC語言寫成。Java語言規(guī)范中也沒有任何\"同具體實現(xiàn)相關\"的內容。
    1.2.8解釋的
    Java解釋器(運行系統(tǒng))能直接運行目標代碼指令。鏈接程序通常比編譯程序所需資源少,所以程序員可以在創(chuàng)建源程序上花上更多的時間。
    1.2.9高性能
    如果解釋器速度不慢,Java可以在運行時直接將目標代碼翻譯成機器指令。Sun用直接解釋器一秒鐘內可調用300,000個過程。翻譯目標代碼的速度與C/C++的性能沒什么區(qū)別。
    1.2.10多線程
    Java提?copy;的多線程功能使得在一個程序里可同時執(zhí)行多個小任務。線程--有時也稱小進程--是一個大進程里分出來的小的獨立的進程。因為Java實現(xiàn)的多線程技術,所以比C和C++更鍵壯。多線程帶來的更大的好處是更好的交互性能和實時控制性能。當然實時控制性能還取決于系統(tǒng)本身(UNIX,Windows,Macintosh等),在開發(fā)難易程度和性能上都比單線程要好。任何用過當前瀏覽器的人,都感覺為調一副圖片而等待是一件很煩惱的事情。在Java里,你可用一個單線程來調一副圖片,而你可以訪問HTML里的其它信息而不必等它。
    1.2.11動態(tài)
    Java的動態(tài)特性是其面向對象設計方法的發(fā)展。它允許程序動態(tài)地裝入運行過程中所需要的類,這是C++語言進行面向對象程序設計所無法實現(xiàn)的。在C++程序設計過程中,每當在類中增加一個實例變量或一種成員函數后,引用該類的所有子類都必須重新編譯,否則將導致程序崩潰。Java從如下幾方面采取措施來解決這個問題。Java編譯器不是將對實例變量和成員函數的引用編譯為數值引用,而是將符號引用信息在字節(jié)碼中保存下傳遞給解釋器,再由解釋器在完成動態(tài)連接類后,將符號引用信息轉換為數值偏移量。這樣,一個在存儲器生成的對象不在編譯過程中決定,而是延遲到運行時由解釋器確定的。這樣,對類中的變量和方法進行更新時就不至于影響現(xiàn)存的代碼。解釋執(zhí)行字節(jié)碼時,這種符號信息的查找和轉換過程僅在一個新的名字出現(xiàn)時才進行一次,隨后代碼便可以全速執(zhí)行。在運行時確定引用的好處是可以使用已被更新的類,而不必擔心會影響原有的代碼。如果程序連接了網絡中另一系統(tǒng)中的某一類,該類的所有者也可以自由地對該類進行更新,而不會使任何引用該類的程序崩潰。Java還簡化了使用一個升級的或全新的協(xié)議的方法。如果你的系統(tǒng)運行Java程序時遇到了不知怎樣處理的程序,沒關系,Java能自動下載你所需要的功能程序。
    1.3與C和C++語言的異同
    Java提供了一個功能強大語言的所有功能,但幾乎沒有一點含混特征。C++安全性不好,但C和C++還是被大家所接受,所以Java設計成C++形式,讓大家很容易學習。Java去掉了C++語言的許多功能,讓Java的語言功能很精煉,并增加了一些很有用的功能,Java去掉了以下幾個C和C++功能和特征:指針運算結構typedefs#define需要釋放內存全局變量的定義這個功能都是很容易引起錯誤的地方。