【正文】
he equivalent functionality must be programmed manually, usually with a fair bit of code, in Java. There are, however, thirdparty development environments that provide “draganddrop”style program development. Another aspect of being simple is being small. One of the goals of Java is to enable the construction of software that can run standalone in small machines. The size of the basic interpreter and class support is about 40K bytes。 adding the basic stan dard libraries and thread support (essentially a selfcontained microkernel) adds an additional 175K. This was a great achievement at the time. Of course, the library has since grown to huge proportions. There is now a separate Java Micro Edition with a smaller library, suitable for embedded devices. Object Oriented Simply stated, objectoriented design is a technique for programming that focuses on the data (= objects) and on the interfaces to that object. To make an analogy with carpentry, an “objectoriented” carpenter would be mostly concerned with the chair he was building, and secondarily with the tools used to make it。 Java offloads the implementation of multithreading to the underlying operating system or a thread library. Noheless, the ease of multithread ing is one of the main reasons why Java is such an appealing language for serverside development. 第 1 頁 共 5 頁 Java 程序設(shè)計概述 1996 年 Java 第一次發(fā)布就引起了人們的 極大興趣。 Java是第一種也是唯一的一種在 national Public Radio 上占用了十分鐘時間進(jìn)行介紹的程序設(shè)計語言,并且還得到了 $100000000 的風(fēng)險投資基金。本章將簡要的介紹一下 Java 語言的發(fā)展歷史。作為一個名副其實的程序設(shè)計人員,使用 Java 無疑是一個好的選擇,有人認(rèn)為: Java 有望成為一種最優(yōu)秀的程序設(shè)計語言,但還需要一個 相當(dāng)長的發(fā)展時期。” 我們的編輯手中有很多這樣的廣告詞,這是 sun 公司高層的某位不愿透露姓名提供的。 Java 有許多非常優(yōu)秀的程序語言特性,本章稍后會詳細(xì)地討論這些特性。 但是,正像我們在第一版中已經(jīng)指出的那樣, Java 并不只是一種語言。 Java 是一個完整的平臺,有一個龐大的庫,其中包含了很多可重用的代碼和一個提供諸如安全性、跨操作系統(tǒng)的可移植性以及自動垃圾收集等服務(wù)的執(zhí)行環(huán)境。與許多其他的優(yōu)秀語言一樣, Java 恰恰滿 足了這些要求。 Java 這種功能齊全的出色語言,具有高質(zhì)量的執(zhí)行環(huán)境以及龐大的庫。 簡單性 人們希望構(gòu)建一個無需深奧的專業(yè)訓(xùn)練就可以進(jìn)行編程的系統(tǒng),并且要符合 第 2 頁 共 5 頁 當(dāng)今的標(biāo)準(zhǔn)慣例。 Java 剔除了 C++中許多很少使用、難以理解、易混淆的特性。 的確, Java 語法是 C++語法的一個“純凈版本。例如, switch 語句的語法在 Java 中就沒有改變。 如果已經(jīng)習(xí)慣于使用可視化的編 程環(huán)境(例如39。 Java 有許多奇怪的語法(盡管掌握其要領(lǐng)并不需要很長時間),更重要的是,使用 Java 需要自己編寫大量的程序 o Visual Basic的魅力在于它的可視化設(shè)計環(huán)境幾乎自動地為應(yīng)用程序提供了大量的基礎(chǔ)結(jié)構(gòu)。然而,已經(jīng)有一些支持“拖放”風(fēng)格程序開發(fā)的第三方開發(fā)環(huán)境。 Java 的目標(biāo)之一是支持開發(fā)能夠在小型機(jī)器上獨立運行 的軟件。 在當(dāng)時,這是一個了不起的成就?,F(xiàn)在有一個獨立的具有較小類庫的 Java 微型版 (Java Micro Edition)用于嵌入式設(shè)備。它將重點放在數(shù)據(jù)(即對象)和對象的接口上。在本質(zhì)上, Java 的面向?qū)ο竽芰εc C++是一樣的。的確, Java 的面向?qū)ο筇匦耘c C++旗鼓相當(dāng)。 如果沒有使用面向?qū)ο蟪绦蛟O(shè)計語言的經(jīng)驗,你一定要仔細(xì)閱讀第 4 章~第 6 章。 第 3 頁 共 5 頁 網(wǎng)絡(luò)技能 Java有一個擴(kuò)展的例程庫,用于處理像 HTTP和 FTP這類的 TCP/IP協(xié)議。 人們已經(jīng)看到 Java 的網(wǎng)絡(luò)能力強(qiáng)大且易于使用。另外,遠(yuǎn)程方法調(diào)用機(jī)制使 得分布式對象之間可以進(jìn)行通信(也將在卷 II 中介紹)。 Java投入了大量的精力進(jìn)行早期的問題檢測、后期動態(tài)的(運行時)檢測,并消除了有出錯傾向的狀態(tài)。 這個特性非常有用。至于第二點,對于曾經(jīng)花費幾個小時來檢查由于指針 bug 而引起內(nèi)存沖突的人來說,一定很喜歡 Java 的這一特性。Visual Basic 這類沒有顯式指針的語言,你就會感覺這么說似乎有些小題大做了。他們需要利用指針存取字符串、數(shù)組、對象、甚至文件。它不需要使用指針構(gòu)造諸如字符串,數(shù)組這樣的結(jié)構(gòu)。 Java 絕對是安全的,其原因是永遠(yuǎn)不會存取一個“壞的” 指針,造成內(nèi)存分配的錯誤,也不必防范內(nèi)存泄漏。 JaVa 編譯器通過生成與特定的計算機(jī) 體系結(jié)構(gòu)無關(guān)的字節(jié)碼指令來實現(xiàn)這一特性。 這并不是什么新的思路。 當(dāng)然, 解釋字節(jié)碼肯定會比全速地運行機(jī)器指令慢很多。這一策略已經(jīng)證明十分有效,致使微軟的. NET 平臺也依賴于虛擬機(jī)。虛擬機(jī)可以檢測指令序到的行為,以增強(qiáng)其安全性。 可移植性 與 C 和 C++不同, Java 規(guī)范中沒有“依賴具體實現(xiàn) 的地方。 例如 , Java 中的 int 永遠(yuǎn)為 32 位的整數(shù),而在 C/C++中, int 可能是 16位整數(shù)、 32位整數(shù),也可能是編譯器提供商指定的其他大小。二進(jìn)制數(shù)據(jù)以固定的格式進(jìn)行的存儲和傳輸,消除了字節(jié)順序的困擾。 作為系統(tǒng)組成部分的類庫,定義了可移植的接口。凡是嘗試過的人都知道,要編寫一個在 WindowS、Macintosh 和 lO 種不同風(fēng)格的、在 UNIX 上看起來都不錯的程序有多么困難。遺憾的是,花費了大量的心血,卻構(gòu)建了一個在各個平臺上都難以讓人接受的庫(面且,在不同平臺的圖形實現(xiàn)中有不同的 bug)。對于許多應(yīng)用問題來說,可移植性比華而不實的用戶界面更加重要而且這些應(yīng)用程序從 Java 的早期版本中獲 益匪淺。現(xiàn)在的 Java 版本比早期版本更加穩(wěn)定,更加吸引人。由于鏈接是一個增值且簡便的過程,所以,開發(fā)過程也變得更加快捷,更加具有探索性。事實上,早期的Java 開發(fā)工具的速度相當(dāng)慢。 多線程 多線程可以帶來更好的交互響應(yīng)和實時行為。只要操作系統(tǒng)支持, Java 中的線程就可以利用多個處理器。在不同的機(jī)器上,只是調(diào)用多線程的代碼完全相同. Java 把多線程的實現(xiàn)交給了底層的操作系統(tǒng)或線程庫來完成。