版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
頁共5頁Java程序設計概述 1996年Java第一次發(fā)布就引起了人們的極大興趣。關注Java的人士不僅限于計算機出版界,還有諸如《紐約時報》、《華盛頓郵報》、《商業(yè)周刊》這樣的主流媒體。Java是第一種也是唯一的一種在nationalPublicRadio上占用了十分鐘時間進行介紹的程序設計語言,并且還得到了$100000000的風險投資基金。這些基金全部用來支持用這種特別的計算機語言開發(fā)的產(chǎn)品,重溫那些令人興奮的日子是很有意思的。本章將簡要的介紹一下Java語言的發(fā)展歷史。 本書的第一版是這樣描寫Java的:“作為一種計算機語言,Java的廣告詞確實有點兒夸大其詞,然而,Java的確是一種優(yōu)秀的的程序設計語言。作為一個名副其實的程序設計人員,使用Java無疑是一個好的選擇,有人認為:Java有望成為一種最優(yōu)秀的程序設計語言,但還需要一個 相當長的發(fā)展時期。一旦一種語言應用于某個領域,與現(xiàn)存代碼的相容性問題就擺在了人們的面前?!?我們的編輯手中有很多這樣的廣告詞,這是sun公司高層的某位不愿透露姓名提供的。然而,現(xiàn)在看起來,當初的這些預測還是有一定的準確性的。Java有許多非常優(yōu)秀的程序語言特性,本章稍后會詳細地討論這些特性。由于相容性這個嚴峻的問題確實存在于現(xiàn)實中,所以,或多或少的還是有一些“累贅”被加到語言中,這就導致Java并不如想象的中的那么完美無瑕。 但是,正像我們在第一版中已經(jīng)指出的那樣,Java并不只是一種語言。在此之前出現(xiàn)的那么多種語言也沒有能夠引起那么大的轟動。Java是一個完整的平臺,有一個龐大的庫,其中包含了很多可重用的代碼和一個提供諸如安全性、跨操作系統(tǒng)的可移植性以及自動垃圾收集等服務的執(zhí)行環(huán)境。 作為一名程序設計人員,常常希望能夠有一種語言,它具有令人賞心悅目的語法和易于理解的語義(C++不是這樣的)。與許多其他的優(yōu)秀語言一樣,Java恰恰滿足了這些要求。有些語言提供了可移植性,垃圾收集器等等,但是,沒有提供一個大型的庫,如果想要有奇特的繪圖功能,網(wǎng)絡連接功能和數(shù)據(jù)庫存取功能就必須自己動手編寫代碼。Java這種功能齊全的出色語言,具有高質量的執(zhí)行環(huán)境以及龐大的庫。正是因為它集多種優(yōu)勢于一身,所以對廣大的程序設計人員有著不可抗拒的吸引力。 簡單性 人們希望構建一個無需深奧的專業(yè)訓練就可以進行編程的系統(tǒng),并且要符合當今的標準慣例。因此,盡管人們發(fā)現(xiàn)C++不太適用,但在設計Java的時候還是盡可能地接近C++,以便系統(tǒng)更易于理解。Java剔除了C++中許多很少使用、難以理解、易混淆的特性。在目前看來,這些特性帶來的麻煩遠遠多于其帶來的好處。的確,Java語法是C++語法的一個“純凈版本。這里沒有頭文件、指針運算(甚至指針語法)、結構、聯(lián)合、操作符重載、虛基類等等(請參閱本書各個章節(jié)給出的C++注釋,那里比較詳細地解釋了Java與C++之間的區(qū)別)然而,設計者并沒有試圖清除C++中所有不適當?shù)奶匦?。例如,switch語句的語法在Java中就沒有改變。如果知道C++就會發(fā)現(xiàn)可以輕而易舉地將其轉換成Java。如果已經(jīng)習慣于使用可視化的編程環(huán)境(例如'VisualBasic),你就不會覺得Java簡單了。Java有許多奇怪的語法(盡管掌握其要領并不需要很長時間),更重要的是,使用Java需要自己編寫大量的程序oVisualBasic的魅力在于它的可視化設計環(huán)境幾乎自動地為應用程序提供了大量的基礎結構。而使用Java實現(xiàn)同樣的功能卻需要手工地編制代碼,通常代碼量還相當大。然而,已經(jīng)有一些支持“拖放”風格程序開發(fā)的第三方開發(fā)環(huán)境。簡單的另一個方面是小。Java的目標之一是支持開發(fā)能夠在小型機器上獨立運行的軟件?;镜慕忉屍饕约邦愔С执蠹s僅為40KB;再加上基礎的標準類庫和對線程的支持(基本上是一個白包含的微內核)大約需要增加175KB。在當時,這是一個了不起的成就。當然,由于不斷的擴展,類庫已經(jīng)相當龐大了?,F(xiàn)在有一個獨立的具有較小類庫的Java微型版(JavaMicroEdition)用于嵌入式設備。面向對象簡單地講,面向對象設計是一種程序設計技術。它將重點放在數(shù)據(jù)(即對象)和對象的接口上。用木匠打一個比方,一個“面向對象的”木匠始終關注的是所制作的椅子,第二位才是所使用的工具;一個非面向對象的”木匠首先考慮的是所用的工具。在本質上,Java的面向對象能力與C++是一樣的。在過去的30年里,面向對象已經(jīng)證明了自身的價值,一種現(xiàn)代的程序設計語言不使用面向對象技術簡直讓人難以置信。的確,Java的面向對象特性與C++旗鼓相當。Java與C++的主要不同點在于多繼承,在Java,取而代之的是簡單的接口概念,以及Java的元類(metaclass)模型(有關這部分內容將在第5章中討論)。 如果沒有使用面向對象程序設計語言的經(jīng)驗,你一定要仔細閱讀第4章~第6章。這些章節(jié)解釋了什么是面向對象程序設計以及在煽程實現(xiàn)復雜的項目時為什么比傳統(tǒng)的像C或Basic這樣的面向過程的語言更加有效。 網(wǎng)絡技能 Java有一個擴展的例程庫,用于處理像HTTP和FTP這類的TCP/IP協(xié)議。Java應用程序能夠通過URL打開和訪問網(wǎng)絡上的對象,其便捷程度就好像訪問本地文件一樣。 人們已經(jīng)看到Java的網(wǎng)絡能力強大且易于使用。任何曾經(jīng)試圖使用其他語言進行網(wǎng)絡編程的人都會驚呼Java竟然把類似打開socket連接這類繁重的任務都變得如此簡單(在本書的卷II中介紹網(wǎng)絡連接)。另外,遠程方法調用機制使得分布式對象之間可以進行通信(也將在卷II中介紹)。 健壯性 Java的設計目標之一在于使得Java編寫的程序具有多方面的可靠性。Java投入了大量的精力進行早期的問題檢測、后期動態(tài)的(運行時)檢測,并消除了有出錯傾向的狀態(tài)。Java和C++最大的不同在于Java采用的指針模型可以消除重寫內存和損壞數(shù)據(jù)的可能性。 這個特性非常有用。Java編譯器能夠檢測許多在其他語言中僅在運行時刻才能夠檢測出來的問題。至于第二點,對于曾經(jīng)花費幾個小時來檢查由于指針bug而引起內存沖突的人來說,一定很喜歡Java的這一特性。如果曾經(jīng)只使用過'VisualBasic這類沒有顯式指針的語言,你就會感覺這么說似乎有些小題大做了。然而,C程序員就沒有這樣幸運了。他們需要利用指針存取字符串、數(shù)組、對象、甚至文件。在VisualBasic中,根本不必使用指針訪問這些實體,也不必關心宥關內存分配的問題另一方面,在沒有指針的語言中,許多數(shù)據(jù)結構很難實現(xiàn)oJava具有雙方的優(yōu)勢。它不需要使用指針構造諸如字符串,數(shù)組這樣的結構。如果必要的話,它也能夠具有指針的能力,如鏈表。Java絕對是安全的,其原因是永遠不會存取一個“壞的”指針,造成內存分配的錯誤,也不必防范內存泄漏。 體系結構中立編譯器生成一個體系結構中立的目標文件格式,這是一種縭譯過的代碼,只要有Java運行系統(tǒng),就可以在許多處理器上運行。JaVa編譯器通過生成與特定的計算機體系結構無關的字節(jié)碼指令來實現(xiàn)這一特性。精心設計的字節(jié)碼不僅可以很容易地在任何機器上解釋執(zhí)行,而且還可以迅速地翻譯成本地機器的代碼。這并不是什么新的思路。30多年以前.NiklausWirth實現(xiàn)的原始Pascal以及UCSDPascal系統(tǒng)都使用了這種技術。當然,解釋字節(jié)碼肯定會比全速地運行機器指令慢很多。所以說,這是不是一個好的思路還很難講!然而,虛擬機有一個選項,可以將使用最頻繁的字節(jié)碼序列翻譯成機器碼,這一過程被稱為即時編譯。這一策略已經(jīng)證明十分有效,致使微軟的.NET平臺也依賴于虛擬機。 虛擬機還有一些其他的優(yōu)點。虛擬機可以檢測指令序到的行為,以增強其安全性。有些程序還可以快速地生成字節(jié)碼,并動態(tài)地增強所運行程序的處理能力??梢浦残耘cC和C++不同,Java規(guī)范中沒有“依賴具體實現(xiàn)"的地方?;緮?shù)據(jù)類型的大小以及有關算法都做了明確的說明。例如,Java中的int永遠為32位的整數(shù),而在C/C++中,int可能是16位整數(shù)、32位整數(shù),也可能是編譯器提供商指定的其他大小。惟一的限制只是int類型的大小不能低于shortint,并且不能高于longint.在Java中,數(shù)據(jù)類型具有固定的大小,這消除了代碼移植時令人頭痛的主要問題。二進制數(shù)據(jù)以固定的格式進行的存儲和傳輸,消除了字節(jié)順序的困擾。字符串是用標準的Unicodc格式存儲的。作為系統(tǒng)組成部分的類庫,定義了可移植的接口。例如,有一個抽象的Window類給出了在UNIX、Windows和Macintosh環(huán)境下的不同實現(xiàn)。凡是嘗試過的人都知道,要編寫一個在WindowS、Macintosh和lO種不同風格的、在UNIX上看起來都不錯的程序有多么困難。Javal.0就嘗試著做了這么一個壯舉,發(fā)布了一個將常用的用戶界面元素映射到不同平臺上的簡單工具箱。遺憾的是,花費了大量的心血,卻構建了一個在各個平臺上都難以讓人接受的庫(面且,在不同平臺的圖形實現(xiàn)中有不同的bug)。不過,這畢竟是個開端。對于許多應用問題來說,可移植性比華而不實的用戶界面更加重要而且這些應用程序從Java的早期版本中獲益匪淺?,F(xiàn)在,用戶界面工具箱已經(jīng)完全重寫了,不再依賴于主機的用戶接口?,F(xiàn)在的Java版本比早期版本更加穩(wěn)定,更加吸引人。解釋型Java解釋器可以在任何移植了解釋器的機器上執(zhí)行Java字節(jié)碼。由于鏈接是一個增值且簡便的過程,所以,開發(fā)過程也變得更加快捷,更加具有探索性。增值鏈接有其優(yōu)勢,但給開發(fā)過程帶來的好處顯然是言過其實了。事實上,早期的Java開發(fā)工具的速度相當慢?,F(xiàn)在,使用即時編譯器將字節(jié)碼翻譯成機器碼大大提高速度。多線程多線程可以帶來更好的交互響應
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 信息技術課標的心得體會(8篇)
- 俄語專業(yè)生求職信
- 企業(yè)停電停水的應急預案范文(7篇)
- 中秋佳節(jié)致辭(8篇)
- 設計課件網(wǎng)站教學課件
- 諺語講解課件教學課件
- 盲目從眾課件教學課件
- 天桃實驗學校八年級上學期語文1月月考試卷
- 環(huán)境應急預案的編寫要點
- 自建房屋建筑施工合同(2篇)
- 我國競技體育后備人才培養(yǎng)現(xiàn)狀與對策
- 2023年12月廣西物流職業(yè)技術學院招考聘用106人筆試近6年高頻考題難、易錯點薈萃答案帶詳解附后
- 英語專業(yè)職業(yè)生涯規(guī)劃
- 健身指導與管理職業(yè)生涯規(guī)劃書
- 2024年銀行考試-建設銀行紀檢監(jiān)察條線筆試歷年真題薈萃含答案
- 2023醫(yī)保藥品目錄
- 2024年福建福州天宇電氣股份有限公司招聘筆試參考題庫含答案解析
- 網(wǎng)上訂餐管理系統(tǒng)課件
- 金鏟鏟之戰(zhàn)教程
- 刺梨果汁飲料和刺梨濃縮果汁
- 社交媒體營銷策略研究
評論
0/150
提交評論