官术网_书友最值得收藏!

1.3 了解Java語言

Java是一種面向?qū)ο蟮某绦蛟O(shè)計語言,它誕生于1995年,在不長的發(fā)展歷史中,很快受到業(yè)界和許多開發(fā)人員的推崇。它具有以下特性。

(1)簡單性

Java 語言是一種面向?qū)ο蟮恼Z言,它通過提供最基本的方法來完成指定的任務(wù),只需理解一些基本的概念,就可以用它編寫出適合于各種情況的應(yīng)用程序。Java 略去了運算符重載、多重繼承和數(shù)據(jù)類型自動轉(zhuǎn)換等模糊的概念,并且通過實現(xiàn)自動垃圾收集大大簡化了程序設(shè)計者的內(nèi)存管理工作,有助于減少軟件出現(xiàn)的錯誤。另外,Java 也適合于在小型機上運行,它的基本解釋器及類的支持只有40 KB左右,加上標準類庫和線程的支持也只有215 KB左右。

Java 語言的簡單性是以增加運行時系統(tǒng)的復(fù)雜性為代價的。以內(nèi)存管理為例,自動內(nèi)存垃圾處理減輕了面向?qū)ο缶幊痰呢摀?dān)。對開發(fā)人員而言,Java 的簡單性可以使我們的學(xué)習(xí)曲線更趨于合理化,加快了我們的開發(fā)進度,減少了程序出錯的可能性。

(2)面向?qū)ο?/p>

Java 語言的設(shè)計集中于對象及其接口,它提供了簡單的類機制以及動態(tài)的接口模型。對象中封裝了它的狀態(tài)變量以及相應(yīng)的方法,實現(xiàn)了模塊化和信息隱藏;而類則提供了一類對象的原型,并且通過繼承機制,子類可以使用父類所提供的方法,實現(xiàn)了代碼的復(fù)用。

(3)可移植性

程序的可移植性(平臺無關(guān)性)是指Java程序不經(jīng)修改可以方便地被移植到網(wǎng)絡(luò)上的不同機器上運行,包括在不同硬件和軟件平臺上運行。同時,Java的類庫中也實現(xiàn)了與不同平臺的接口,使這些類庫可以移植。另外,Java編譯器是由Java語言實現(xiàn)的,Java運行時系統(tǒng)由標準C實現(xiàn),這使得Java系統(tǒng)本身也具有可移植性。可移植性在一定程度上決定了程序的可應(yīng)用性。

可移植性分為兩個層次:源代碼級可移植性和二進制代碼可移植性。C 和 C++只具有一定程度的源代碼級可移植性,其源程序要想在不同平臺上運行,必須重新編譯,而Java不僅源代碼級是可移植的,甚至源代碼經(jīng)過編譯之后形成的字節(jié)碼,同樣也是可移植的。

(4)安全性和穩(wěn)定性

網(wǎng)絡(luò)分布式計算環(huán)境要求軟件具有良好的穩(wěn)定性和安全性。為此,Java 首先摒棄了指針數(shù)據(jù)類型,這樣,程序員就不能憑著指針在內(nèi)存空間中任意“遨游”;其次,Java提供了數(shù)組下標越界檢查機制,從而使網(wǎng)絡(luò)“黑客”無法構(gòu)造出類似C和C++語言所支持的那種指針;第三, Java 提供了自動內(nèi)存管理機制,可以利用系統(tǒng)的空閑時間來執(zhí)行諸如垃圾清除等操作。例如, Java不支持指針,一切對內(nèi)存的訪問都必須通過對象的實例變量來實現(xiàn),這樣就防止了網(wǎng)絡(luò)“黑客”使用“特洛伊木馬”等欺騙手段訪問對象的私有成員,大大提高了網(wǎng)絡(luò)的安全性和穩(wěn)定性,同時也避免了指針操作中容易產(chǎn)生的錯誤。

(5)高性能

在一般情況下,可移植性、穩(wěn)定性和安全性幾乎都是以犧牲性能為代價的,解釋型語言(如Python/JavaScript/Perl/Shell 等語言)的執(zhí)行效率一般也要低于直接執(zhí)行源碼的速度,而 Java字節(jié)碼的設(shè)計和多線程的支持,很好地彌補了這些性能的不足,從而得到較高的性能。

① 高效的字節(jié)碼

Java 字節(jié)碼格式的設(shè)計充分考慮了性能因素,其字節(jié)碼的格式非常簡單,能很容易地直接轉(zhuǎn)換成對應(yīng)于特定CPU的機器碼。

② 多線程

多線程機制使應(yīng)用程序能夠并行執(zhí)行,而且同步機制保證了對共享數(shù)據(jù)的正確操作。通過使用多線程,開發(fā)人員可以分別用不同的線程完成特定的行為,而不需要采用全局的事件循環(huán)機制,這樣就很容易地實現(xiàn)網(wǎng)絡(luò)上的實時交互行為。Java提供了完全意義上的多線程支持。

③ 即時編譯和嵌入C代碼

Java的運行環(huán)境還提供了另外兩種可選的性能提高措施:即時編譯和嵌入C代碼。即時編譯的另一個作用是,在運行時把字節(jié)碼編譯成機器碼,這意味著代碼仍然是可移植的,但在開始時會有一個編譯字節(jié)碼的延遲過程;而嵌入 C 代碼在運行速度方面效果當(dāng)然是最理想的,但會給開發(fā)人員帶來一些負擔(dān),同時還會降低代碼的可移植性。

④ 動態(tài)性

Java 程序的基本組成單元為類,在類庫中可以自由地加入新的方法和實例變量,類庫升級后不會影響用戶程序的執(zhí)行,使Java程序適應(yīng)于一個不斷發(fā)展變化的環(huán)境。它允許程序動態(tài)地裝入運行過程中所需要的類(在C++中,類的變化必將要重新編譯),Java在運行時才確定引用類,而類的編譯早在編譯階段已完成,正在編譯到運行間的延遲使得Java可以引用最新的類。Java的動態(tài)性使用戶能夠真正擁有“即插即用”的軟件模塊功能。

⑤ 分布性

分布式包括數(shù)據(jù)分布和操作分布。數(shù)據(jù)分布是指數(shù)據(jù)可以分散在網(wǎng)絡(luò)的不同主機上,操作分布是指把一個計算分散在不同主機上處理。Java 支持瀏覽器/服務(wù)器(B/S)和客戶端/服務(wù)器(C/S)兩種分布式計算模式。對于前者,Java提供了一個叫作URL的對象,利用這個對象,可以打開并訪問指定URL地址上的對象,訪問方式與訪問本地文件系統(tǒng)相同。對于后者,Java提供了Socket編程機制,以及一整套網(wǎng)絡(luò)類庫,開發(fā)人員可以利用類庫進行網(wǎng)絡(luò)程序設(shè)計,實現(xiàn)Java的分布式特性。

主站蜘蛛池模板: 郁南县| 黎城县| 平乡县| 灵川县| 孝义市| 都安| 温州市| 萍乡市| 霍城县| 玉环县| 定州市| 如皋市| 岱山县| 晴隆县| 大兴区| 金阳县| 乌鲁木齐县| 怀安县| 鄱阳县| 鹿邑县| 博客| 玉溪市| 兴仁县| 隆尧县| 望江县| 永善县| 南宫市| 华安县| 体育| 福泉市| 江门市| 南木林县| 花莲市| 宜宾市| 沁水县| 莲花县| 白山市| 宿州市| 黄浦区| 定兴县| 尤溪县|