外文翻譯--java技術(shù)介紹_第1頁(yè)
已閱讀1頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  畢業(yè)設(shè)計(jì)(論文)外文資料翻譯</p><p>  學(xué) 院: 信息工程學(xué)院 </p><p>  專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) </p><p>  姓 名: XXXXXXXXX &l

2、t;/p><p>  學(xué) 號(hào): XXXXXXXXX </p><p>  外文出處: Cay s.Horstmann Core Java ,Volume</p><p>  II, Advanced Features, Eighth Edition

3、 </p><p>  附 件: 1.外文資料翻譯譯文;2.外文原文。 </p><p>  附件1:外文資料翻譯譯文</p><p><b>  Java技術(shù)介紹</b></p><p>  Java是一種程序設(shè)計(jì)平臺(tái)</p><p>  Java是一種優(yōu)秀的程序設(shè)計(jì)語(yǔ)言。對(duì)于一個(gè)名副

4、其實(shí)的程序設(shè)計(jì)人員來(lái)說(shuō),使用Java無(wú)疑是一個(gè)好的選擇。有人認(rèn)為:Java將有望成為一種最優(yōu)秀的程序設(shè)計(jì)語(yǔ)言,但還需要一個(gè)相當(dāng)長(zhǎng)的發(fā)展時(shí)期。一旦一種語(yǔ)言應(yīng)用于某個(gè)領(lǐng)域,與現(xiàn)存代碼的相容性問(wèn)題就擺在了人們的面前?!?lt;/p><p>  Java并不只是一種語(yǔ)言。在此之前出現(xiàn)的那么多種語(yǔ)言也沒(méi)有能夠引起那么大的轟動(dòng)。Java是一個(gè)完整的平臺(tái),有一個(gè)龐大的庫(kù),其中包含很多可重用的代碼和一個(gè)提供諸如安全性、跨操作系統(tǒng)的可

5、移植性以及自動(dòng)垃圾回收等服務(wù)的執(zhí)行環(huán)境。</p><p>  作為一名程序設(shè)計(jì)人員,常常希望能夠有一種語(yǔ)言,它具有令人賞心悅目的語(yǔ)法和易于理解的語(yǔ)義(C++不是這樣的)。與許多其他的優(yōu)秀語(yǔ)言一樣,Java恰恰滿足了這些要求。有些語(yǔ)言提供了可移植性、垃圾回收等等,但是,沒(méi)有提供一個(gè)大型的庫(kù),如果想要有奇特的繪圖功能、網(wǎng)絡(luò)連接功能和數(shù)據(jù)庫(kù)存取功能就必須自己動(dòng)手編寫代碼。Java這種功能齊全的出色語(yǔ)言,具有高質(zhì)量的執(zhí)行

6、環(huán)境以及龐大的庫(kù)。正是因?yàn)樗喾N優(yōu)勢(shì)于一身,所以對(duì)于廣大的程序設(shè)計(jì)人員來(lái)說(shuō)有著不可抗拒的吸引力。</p><p><b>  JAVA的特性</b></p><p><b>  1.簡(jiǎn)單性</b></p><p>  人們希望構(gòu)建一個(gè)無(wú)需深?yuàn)W的專業(yè)訓(xùn)練就可以進(jìn)行編程的系統(tǒng),并且要符合當(dāng)今的 標(biāo)準(zhǔn)慣例。因此,盡管人們發(fā)現(xiàn)C

7、++不太適用,但在設(shè)計(jì)Java的時(shí)候還是盡可能地接近 C++,以便系統(tǒng)更易于理解。Java別除了C++中許多很少使用、難以理解、易混淆的特性。在目前看來(lái),這些特性帶來(lái)的麻煩遠(yuǎn)遠(yuǎn)大于帶來(lái)的好處。</p><p>  的確,Java語(yǔ)法是C++語(yǔ)法的一個(gè)“純凈”版本。這里沒(méi)有頭文件、指針運(yùn)算(甚至指針語(yǔ)法)、結(jié)構(gòu)、聯(lián)合、操作符重載、虛基類等等。(請(qǐng)參看本書(shū)各個(gè)章節(jié)給出的C++注釋,那里比較詳細(xì)地解釋了Java與C++

8、之間的區(qū)別。)然而,設(shè)計(jì)者并沒(méi)有試圖清除C++中所有不適當(dāng)?shù)奶匦浴@?,switch語(yǔ)句的語(yǔ)法在Java中就沒(méi)有改變。如果熟悉C++就會(huì)發(fā)現(xiàn)可以輕而易舉地將它轉(zhuǎn)換成Java,</p><p>  如果已經(jīng)習(xí)慣于可視化的編程環(huán)境(例如Visual Basic),就不會(huì)覺(jué)得Java簡(jiǎn)單了。Java有許多奇怪的語(yǔ)法(盡管掌握其要領(lǐng)并不需要很長(zhǎng)時(shí)間),更重要的是,使用Java需要自己編寫大量的程序。Visual Basi

9、c的魅力在于它的可視化設(shè)計(jì)環(huán)境幾乎自動(dòng)地為應(yīng)用程序提供了大量的基礎(chǔ)結(jié)構(gòu)。而使用Java實(shí)現(xiàn)同樣的功能卻需要手工地編制代碼,通常代碼量還相當(dāng)大。然而,已經(jīng)有一些支持“拖放”風(fēng)格程序開(kāi)發(fā)的第三方開(kāi)發(fā)環(huán)境。</p><p>  簡(jiǎn)單性的另一個(gè)方面是小。Java的目標(biāo)之一是支持開(kāi)發(fā)能夠在小型機(jī)器上獨(dú)立運(yùn)行的軟件。基本的解釋器以及類支持大約僅為40KB;再加上基礎(chǔ)的標(biāo)準(zhǔn)類庫(kù)和對(duì)線程的支持(基本上是一個(gè)自含的微內(nèi)核)大約需要

10、增加175KB。這是一個(gè)了不起的成就。然而,需要注意的是支持圖形用戶界面(GUI)的類庫(kù)相當(dāng)大。</p><p><b>  2.面向?qū)ο?lt;/b></p><p>  簡(jiǎn)單地講,面向?qū)ο笤O(shè)計(jì)是一種程序設(shè)計(jì)技術(shù)。它將重點(diǎn)放在數(shù)據(jù)(即對(duì)象)和對(duì)象的接口上。用木匠來(lái)打一個(gè)比方,一個(gè)“面向?qū)ο蟮摹蹦窘呈冀K關(guān)注的是所制作的 椅子,第二位才是所使用的工具;一個(gè)“非面向?qū)ο蟮摹蹦窘?/p>

11、則首先考慮的是所用的工具。在本質(zhì)上,Java的面向?qū)ο竽芰εcC++是一樣的。</p><p>  在過(guò)去的30年里,面向?qū)ο笠呀?jīng)證明了自身的價(jià)值,一種現(xiàn)代的程序設(shè)計(jì)語(yǔ)言不使用面向?qū)ο蠹夹g(shù)簡(jiǎn)直讓人難以置信。的確,Java的面向?qū)ο筇匦耘cC++旗鼓相當(dāng)。Java與C++的主要不同點(diǎn)在于多繼承,在Java中,取而代之的是簡(jiǎn)單的接口概念,以及Java的元類(metaclass)模型。</p><p&g

12、t;  反射機(jī)制以及對(duì)象序列化特性使得Java更加容易實(shí)現(xiàn)持久對(duì)象和GUI構(gòu)建器(可以整合外來(lái)組件)。</p><p><b>  3.分布式</b></p><p>  Java有一個(gè)擴(kuò)展的例程庫(kù),用于處理像HTTP和FTP這類的TCP/IP協(xié)議。Java應(yīng)用程序能夠通過(guò)URL打開(kāi)和訪問(wèn)網(wǎng)絡(luò)上的對(duì)象,其便利程度如同訪問(wèn)本地文件系統(tǒng)一樣。 人們已經(jīng)看到Java的網(wǎng)絡(luò)能

13、力強(qiáng)大且易于使用。任何曾經(jīng)試圖使用其他語(yǔ)言進(jìn)行網(wǎng)絡(luò)編程的人都會(huì)驚呼Java竟然把類似打開(kāi)socket連接這類繁重的任務(wù)都變得如此簡(jiǎn)單。</p><p>  另外,遠(yuǎn)程方法調(diào)用機(jī)制使得分布式對(duì)象之間可以進(jìn)行通信。 現(xiàn)在有一種獨(dú)立的體系結(jié)構(gòu),Java 2企業(yè)版(J2EE ),它支持大規(guī)模的分布式應(yīng)用。</p><p><b>  4.健壯性</b></p>

14、<p>  Java的設(shè)計(jì)目標(biāo)之一在于使用Java編寫的程序具有多方面的可靠性。Java投入了大量的精力進(jìn)行早期的問(wèn)題檢測(cè)、后期動(dòng)態(tài)的(運(yùn)行時(shí))檢測(cè),并消除了有出錯(cuò)傾向的狀態(tài)……</p><p>  Java和C++最大的不同在于Java采用的指針模型可以消除重寫內(nèi)存和損壞數(shù)據(jù)的可能性。這個(gè)特性非常有用。Java編譯器能夠檢測(cè)許多在其他語(yǔ)言中僅在運(yùn)行時(shí)刻才能夠檢測(cè)出來(lái)的問(wèn)題。至于第二點(diǎn),對(duì)于曾經(jīng)花費(fèi)幾個(gè)

15、小時(shí)來(lái)檢查由于指針bug而引起內(nèi)存沖突的人來(lái)說(shuō),一定很喜歡Java的這一特性。</p><p>  如果曾經(jīng)只使用過(guò)Visual Basic這類沒(méi)有顯式指針的語(yǔ)言,就會(huì)感覺(jué)這么說(shuō)似乎有些小題大做。然而,C程序員就沒(méi)有這樣幸運(yùn)了。他們需要利用指針來(lái)存取串、數(shù)組、對(duì)象,甚至文件。</p><p>  在Visual Basic中,根本不必使用指針來(lái)訪問(wèn)這些實(shí)體,也不必關(guān)心有關(guān)內(nèi)存分配的問(wèn)題。另

16、一方面,在沒(méi)有指針的語(yǔ)言中,許多數(shù)據(jù)結(jié)構(gòu)很難實(shí)現(xiàn)。Java具有雙方的優(yōu)勢(shì)。它不需要使用指針構(gòu)造諸如串、數(shù)組這樣的結(jié)構(gòu)。如果需要,也能夠具有指針的能力,如鏈表。Java絕對(duì)是安全的,其原因是永遠(yuǎn)不會(huì)存取一個(gè)“壞的”指針,造成內(nèi)存分配的錯(cuò)誤,也不必防范內(nèi)存泄漏。</p><p><b>  5.安全性</b></p><p>  Java適用于網(wǎng)絡(luò)/分布式環(huán)境。為了達(dá)到這

17、個(gè)目標(biāo),在安全方面投入了很大精力。 使用Java可以構(gòu)建防病毒、防墓改的系統(tǒng)。事實(shí)證明這是正確的。在Java開(kāi)發(fā)工具箱啟用后不久,普林斯頓大學(xué)的一些安全專家們發(fā)現(xiàn)了在Java 1.0中的某些安全特性方面存在著一些非常隱蔽的bug, Sun Microsystems大力支持對(duì)Java的安全性的研究,制定了供人們使用的規(guī)范,實(shí)現(xiàn)了虛擬機(jī)和安全庫(kù),并迅速地處理了所有已知的安全bug。在任何情況下,蒙騙Java的安全機(jī)制都是十分困難的?,F(xiàn)在,發(fā)

18、現(xiàn)bug所需的技術(shù)性越來(lái)越強(qiáng),數(shù)目越來(lái)越少。 從一開(kāi)始,Java就被設(shè)計(jì)成能夠防范各種襲擊,包括:</p><p>  ·禁止運(yùn)行時(shí)堆棧溢出。例如,蠕蟲(chóng)等病毒常用的襲擊手段。</p><p>  ·禁止在自己的處理空間之外破壞內(nèi)存。</p><p>  ·未經(jīng)授權(quán)禁止讀寫文件。許多安全特性相繼不斷地被加入Java中。</p>

19、<p>  自從Java 1.1問(wèn)世以來(lái),Java就有了數(shù)字簽名類(digitally signed class)的概念(請(qǐng)參看卷II)。通過(guò)數(shù)字簽名類,可以確定類的作者。如果信任這個(gè)類的作者,這個(gè)類就可以在你的機(jī)器上擁有更多的權(quán)限。</p><p>  來(lái)自微軟的基于ActiveX技術(shù)的競(jìng)爭(zhēng)代碼傳輸機(jī)制,其安全性完全依賴于數(shù)字簽名。這顯然是不夠的,因?yàn)槲④涀陨懋a(chǎn)品的任何用戶都可以證實(shí),來(lái)自知名提供

20、商的程序會(huì)崩潰并對(duì)系統(tǒng)產(chǎn)生危害。Java的安全機(jī)制比ActiveX要強(qiáng)得多,因?yàn)樗窃趹?yīng)用程序運(yùn)行時(shí)加以拉制并制止惡意性破壞的。</p><p><b>  6.體系結(jié)構(gòu)中立</b></p><p>  編譯器生成一個(gè)體系結(jié)構(gòu)中立的目標(biāo)文件格式,這是一種編譯過(guò)場(chǎng)代碼,只要有Java運(yùn)行時(shí)系統(tǒng),就可以在許多處理器上運(yùn)行。Java編譯器通過(guò)生成與特定的計(jì)算機(jī)體系結(jié)構(gòu)無(wú)關(guān)的

21、字節(jié)碼指令來(lái)實(shí)現(xiàn)這一特性。精心設(shè)計(jì)的字節(jié)碼不僅可以很容易地在任何機(jī)器上被解釋執(zhí)行,而且還可以迅速地翻譯成本地機(jī)器的代碼。這并不是什么新的思想。20多年以前,Niklaus Wirth最初實(shí)現(xiàn)的Pascal以及UCSD Pascal系統(tǒng)都使用了這種技術(shù)。當(dāng)然,解釋字節(jié)碼肯定要比全速地運(yùn)行機(jī)器指令慢很多。所以說(shuō),這是不是一個(gè)好的思想還很難講!然而,虛擬機(jī)有一個(gè)選項(xiàng),它可以將執(zhí)行最頻繁的字韋碼序列翻譯成機(jī)器碼,這一過(guò)程被稱為即時(shí)編譯。這一策略

22、已經(jīng)被證明十分有效,致使微軟的.NET平臺(tái)也依賴于虛擬機(jī)。虛擬機(jī)還有一些其他的優(yōu)點(diǎn)。虛擬機(jī)可以檢測(cè)指令序列的行為,以增強(qiáng)其安全性。有些程序甚至能夠快速地生成字節(jié)碼,并動(dòng)態(tài)地增強(qiáng)所運(yùn)行程序的處理能力。</p><p><b>  7.可移植性</b></p><p>  與C和C++不同,Java規(guī)范中沒(méi)有“依賴具體實(shí)現(xiàn)”的地方。塞本數(shù)據(jù)類型的大小以及有關(guān)算法都做了明確

23、的說(shuō)明。例如,Java中的int永遠(yuǎn)為32位的整數(shù),而在C/C++中,int可能是16位整數(shù)、32位整數(shù),也可能是編譯器提供商指定的其他大小。唯一的限制只是int類型的大小不能低于short int,并且不能高于long int。在Java中,數(shù)據(jù)類型具有固足的大小,們除J代消移祖盯竿八大油a'i土女IWJ*I。-ml R77數(shù)據(jù)以固定的格式存儲(chǔ)和傳輸,消除了字節(jié)順序的困擾。字符串是用標(biāo)準(zhǔn)的Unicode格式存儲(chǔ)的。作為系統(tǒng)的組

24、成部分的類庫(kù),定義了可移植的接口。例如,有一個(gè)抽象的Window類給出了在UNIX, Windows和Macintosh環(huán)境下的不同實(shí)現(xiàn)。</p><p>  凡是嘗試過(guò)的人都知道,要編寫一個(gè)在Windows, Macintosh和10種不同風(fēng)格的、在UNIX上看起來(lái)都不錯(cuò)的程序有多么困難。Java 1.0就嘗試著做了這么一個(gè)壯舉,發(fā)布了一個(gè)將常用的用戶界面元素映射到不同平臺(tái)上的簡(jiǎn)單工具箱。遺憾的是,花費(fèi)了大量的

25、心血,卻構(gòu)建了一個(gè)在各個(gè)系統(tǒng)上都難以讓人接受的庫(kù)(而且,在不同平臺(tái)的圖形實(shí)現(xiàn)中有不同的bug)。不過(guò),這畢竟是個(gè)開(kāi)端。對(duì)于許多應(yīng)用問(wèn)題來(lái)說(shuō),可移植性比花枝招展的用戶界面更加重要。而且這些應(yīng)用程序從Java的早期版本中獲益匪淺。現(xiàn)在,用戶界面工具箱已經(jīng)完全被重寫了,不再依賴于主機(jī)的用戶接口?,F(xiàn)在的Java版本比早期版本更加穩(wěn)定,更加吸引人。</p><p><b>  8.解釋型</b><

26、;/p><p>  Java解釋器可以在任何移植了解釋器的機(jī)器上執(zhí)行Java字節(jié)碼。由于鏈接是一個(gè)更加增量且簡(jiǎn)便的過(guò)程,所以開(kāi)發(fā)過(guò)程也變得更加快捷,更加具有探索性。增量鏈接有其優(yōu)勢(shì),但給開(kāi)發(fā)過(guò)程帶來(lái)的好處顯然是言過(guò)其實(shí)了。在任何情況下,都會(huì)覺(jué)得Java開(kāi)發(fā)工具的速度相當(dāng)慢。如果習(xí)慣于經(jīng)典的Microsoft Visual C++環(huán)境的速度,就會(huì)對(duì)Java開(kāi)發(fā)環(huán)境的性能感到失望。(但是,Visual Studio的當(dāng)前

27、版本不像經(jīng)典的環(huán)境那樣快捷。無(wú)論用什么語(yǔ)言編寫程序,都需要向老板申請(qǐng)一臺(tái)速度更快的計(jì)算機(jī),以便運(yùn)行最新的開(kāi)發(fā)環(huán)境。)</p><p><b>  9.高性能</b></p><p>  盡管對(duì)解釋后的字節(jié)碼性能已經(jīng)比較滿意,但在有些情況下卻需要更加高效的性能。字節(jié)碼可以(在運(yùn)行時(shí)刻)被快速地翻譯成運(yùn)行該應(yīng)用程序的特定CPU的機(jī)器碼。如果使用解釋器執(zhí)行字節(jié)碼,根本就不可

28、能用術(shù)語(yǔ)“高性能”。然而,在許多平臺(tái)上,還有另一種編譯形式,這就是即時(shí)編譯器(JIT編譯器)。它的基本工作方式是一次把字節(jié)碼編譯為本地代碼,并將結(jié)果緩存起來(lái)。在需要的時(shí)候重新調(diào)用。由于這種方式只需要進(jìn)行一次解釋,從而極大地提高了常用代碼運(yùn)行速度。雖然,即時(shí)編譯器仍然比真正的本地代碼編譯器慢一些,但是對(duì)某些程序來(lái)說(shuō),能夠提高10倍乃至20倍的速度,而且?guī)缀踉谌魏吻闆r下,都比解釋器的速度快得多。這個(gè)技術(shù)始終在不斷完善著,或許有一天它能夠達(dá)到

29、傳統(tǒng)編譯系統(tǒng)所無(wú)法匹敵的性能。例如,即時(shí)編譯器可以監(jiān)視哪些代碼被頻繁地執(zhí)行,并對(duì)其進(jìn)行優(yōu)化,以提高程序的運(yùn)行速度。</p><p><b>  10.多線程</b></p><p>  多線程可以帶來(lái)更好的交互響應(yīng)和實(shí)時(shí)行為。 如果曾經(jīng)使用過(guò)其他語(yǔ)言編寫多線程的應(yīng)用程序,就會(huì)對(duì)Java多線程處理的便捷性驚嘆不已。</p><p>  只要操作系

30、統(tǒng)支持,Java中的線程就可以利用多個(gè)處理器。在底層,主流平臺(tái)的線程實(shí)現(xiàn)機(jī)制各不相同,Java并沒(méi)有花費(fèi)太大的力氣對(duì)此實(shí)現(xiàn)平臺(tái)無(wú)關(guān)性。在不同的機(jī)器上,只是調(diào)用多線程的代碼完全相同;Java把多線程的實(shí)現(xiàn)交給了底層的操作系統(tǒng)或線程庫(kù)來(lái)完成。(有關(guān)線程的詳細(xì)內(nèi)容將在卷II中介紹。)盡管如此,多線程的簡(jiǎn)單性是Java成為頗具魅力的服務(wù)器端開(kāi)發(fā)語(yǔ)言的主要原因之一。</p><p><b>  11.動(dòng)態(tài)性<

31、;/b></p><p>  從各種角度看,Java與C或C++相比更加具有動(dòng)態(tài)性。它能夠適應(yīng)不斷發(fā)展的環(huán)境。庫(kù)中可以自由地添加新方法和實(shí)例變童,而時(shí)客戶端卻沒(méi)有任何影響。在Java中找出運(yùn)行時(shí)刻類型信息十分直觀。當(dāng)需要將某些代碼添加到正在運(yùn)行的程序中時(shí),動(dòng)態(tài)性將是一個(gè)非常重要的特性。一個(gè)很好的例子是:從Internet上下載代碼,然后在瀏覽器上運(yùn)行。在Java 1.0中,不能直接地獲取運(yùn)行時(shí)類型信息,而J

32、ava的當(dāng)前版本允許程序員知曉對(duì)象的結(jié)構(gòu)和行為。這對(duì)于必須在運(yùn)行時(shí)分析對(duì)象的系統(tǒng)來(lái)說(shuō)非常有用。這些系統(tǒng)有:Java GUI構(gòu)建器、智能調(diào)試器、可插入組件以及對(duì)象數(shù)據(jù)庫(kù)。</p><p>  微軟曾經(jīng)發(fā)布了一個(gè)叫做J++的產(chǎn)品,它與Java有許多共享的機(jī)制。與Java一樣,J++是由虛擬機(jī)來(lái)執(zhí)行的,該虛擬機(jī)與執(zhí)行Java字節(jié)碼的Java虛擬機(jī)相互兼容,但是,當(dāng)與外部代碼有接口時(shí)就會(huì)出現(xiàn)很多不同之處?;菊Z(yǔ)言的語(yǔ)法與

33、Java幾乎一樣。只是除了與Windows API的接口之外,還增加了一些可能具有一定實(shí)用性的語(yǔ)言結(jié)構(gòu)。Java和J++不僅共享通用的語(yǔ)法,它們的塞本類庫(kù)(串、實(shí)用程序、聯(lián)網(wǎng)、多線程、數(shù)學(xué)函數(shù)等等)從本質(zhì)上說(shuō)也是一致的。然而,圖形庫(kù)、用戶界面、遠(yuǎn)程對(duì)象存取的方式則完全不同。為此,微軟不再支持J++,取而代之的是另一種被稱為C#語(yǔ)言。C#與Java有很多相似之處,然而使用的卻是完全不同的虛擬機(jī)。甚至還有一種J#語(yǔ)言可將J++的應(yīng)用遷移到使

34、用C#的虛擬機(jī)上。</p><p>  Java與Internet</p><p>  這里的思想很簡(jiǎn)單:用戶將從Internet下載Java字節(jié)碼,并在自己的機(jī)器上運(yùn)行。在網(wǎng)頁(yè)中運(yùn)行的Java程序稱為applet。為了使用applet,需要一個(gè)啟用Java的Web瀏覽器來(lái)執(zhí)行字節(jié)碼。因?yàn)镾un公司只負(fù)責(zé)發(fā)放Java源代碼的許可證,并堅(jiān)持不允許對(duì)語(yǔ)言和基本類庫(kù)的結(jié)構(gòu)做出任何修改,因此,Ja

35、va的applet應(yīng)該可以運(yùn)行在任何啟用Java瀏覽器上。遺憾的是,實(shí)際情況并非如此。</p><p>  各個(gè)版本的Netscape(網(wǎng)景瀏覽器)和Internet Explorer (IE瀏覽器)運(yùn)行著不同版本的Java,其中有些早已過(guò)時(shí)。這種糟糕的情況導(dǎo)致更加難于利用Java最新版本來(lái)開(kāi)發(fā)applet。為了擺脫這種局面,Sun開(kāi)發(fā)了Java插件。這就使得Netscape和Internet Explorer都

36、可以利用最新的Java運(yùn)行時(shí)環(huán)境。 用戶下載一個(gè)applet就如同在網(wǎng)頁(yè)中嵌入一幅圖片。applet成為了頁(yè)面的一部分。文本環(huán)繞著applet所占據(jù)的空間周圍。關(guān)鍵一點(diǎn)是圖片為活動(dòng)的。它可以對(duì)用戶命令做出響應(yīng),改變外觀,在運(yùn)行它的計(jì)算機(jī)與提供它的計(jì)算機(jī)之間傳遞數(shù)據(jù)。 applet顯示了分子結(jié)構(gòu),這將需要相當(dāng)復(fù)雜的計(jì)算。</p><p>  在一個(gè)網(wǎng)頁(yè)中,可以利用鼠標(biāo)進(jìn)行旋轉(zhuǎn),調(diào)整焦距等操作,以便能夠更好地理

37、解分子結(jié)構(gòu)。用靜態(tài)網(wǎng)頁(yè)將無(wú)法實(shí)現(xiàn)這種直接操作,而applet卻可以達(dá)到此目的??梢越柚鷄pplet在網(wǎng)頁(yè)上增加按鈕和輸人框。但是,通過(guò)撥號(hào)連接下載這樣的applet速度相當(dāng)慢。除此之外,還可以使用Dynamic HTML, HTML表單和某種腳本語(yǔ)言(如JavaScript)完成這類操作。當(dāng)然,早期的applet主要用于動(dòng)畫,如大家熟悉的旋轉(zhuǎn)球、跳動(dòng)的卡通字符、瘋狂。</p><p>  我們對(duì)JAVA的誤解&l

38、t;/p><p>  下面是我們對(duì)java的一些誤解,這里將給出解釋:</p><p>  1)Java是HTML的擴(kuò)展。</p><p>  Java是一種程序設(shè)計(jì)語(yǔ)言;HTML是一種描述網(wǎng)頁(yè)結(jié)構(gòu)的方式。除了存在用于放置Java applet的HTML擴(kuò)展之外,兩者沒(méi)有任何共同之處。</p><p>  2)使用XML,就不需要Java。<

39、;/p><p>  Java是一種程序設(shè)計(jì)語(yǔ)言;XML是一種描述數(shù)據(jù)的方式。可以使用任何一種程序設(shè)計(jì)語(yǔ)言來(lái)處理XML數(shù)據(jù),而Java API對(duì)處理XML提供了很好的支持。此外,許多重要的第三方XML工具是采用Java編寫的.</p><p>  3) Java是一種非常容易學(xué)習(xí)的程序設(shè)計(jì)語(yǔ)言。 </p><p>  Java這種功能強(qiáng)大的語(yǔ)言大都不太容易學(xué)習(xí)。首先,必須

40、將編寫玩具式程序的輕松和開(kāi)發(fā)實(shí)際項(xiàng)目的艱難區(qū)分開(kāi)來(lái)。如何使用Java類庫(kù)將Java語(yǔ)言應(yīng)用到實(shí)際中去。Java類庫(kù)包含了數(shù)千種類和接口與幾萬(wàn)種方法。幸運(yùn)的是,并不需要知曉它們中的每一個(gè),但是要用Java解決實(shí)際問(wèn)題,還是需要了解不少內(nèi)容的。</p><p>  4) Java將成為適用于所有平臺(tái)的通用性編程語(yǔ)言。</p><p>  從理論上講,這是完全有可能的。的確,除了微軟之外的每一個(gè)

41、廠商都希望如此。然而有很多已經(jīng)在桌面計(jì)算機(jī)上工作良好的應(yīng)用程序,它們不大可能在其他設(shè)備或在瀏覽器中工作的也很正常。同時(shí),在編寫這些應(yīng)用程序時(shí),利用了相應(yīng)處理器的速度和本地的用戶接口庫(kù),而且它們已經(jīng)被移植到所有重要的平臺(tái)上。這類應(yīng)用程序包括字處理程序、圖片編輯器、Web瀏覽器。它們通常是用C或C++編寫的,采用Java語(yǔ)言進(jìn)行重新編寫似乎對(duì)最終的用戶不會(huì)帶來(lái)什么特別的好處。</p><p>  5) Java只不過(guò)

42、是另外一種程序設(shè)計(jì)語(yǔ)言。</p><p>  Java是一種很好的程序設(shè)計(jì)語(yǔ)言;很多程序設(shè)計(jì)人員喜歡Java勝過(guò)C, C+十或C#。有上百種好的程序設(shè)計(jì)語(yǔ)言沒(méi)有廣泛地流行,而帶有明顯缺陷的語(yǔ)言,如C十+和Visual Basic卻大行其道。這是為什么呢?程序設(shè)計(jì)語(yǔ)言的成功更多地取決于其支持系統(tǒng)的能力,而不是優(yōu)美的語(yǔ)法。人們關(guān)注是:是否提供了易于實(shí)現(xiàn)某些功能的易用、便捷標(biāo)準(zhǔn)庫(kù)?是否擁有強(qiáng)大的程序設(shè)計(jì)能力與調(diào)試環(huán)境工

43、具?語(yǔ)言和工具是否能夠與計(jì)算機(jī)的其他基礎(chǔ)結(jié)構(gòu)整合在一起.Java的成功就是來(lái)自于其類庫(kù)能夠讓你輕松地完成原本十分艱難的事情。例如,聯(lián)網(wǎng)、多線程。Java減少了指針錯(cuò)誤,因此使用Java編程的效率更高了。但這些并不是Java成功的全部原因。</p><p>  6)現(xiàn)在有了C#, Java過(guò)時(shí)了。</p><p>  C#借鑒了Java許多好的思想,例如,清晰的程序設(shè)計(jì)語(yǔ)言、虛擬機(jī)和垃圾回收

44、。無(wú)論怎樣,C#還是保持了一些好的特性,其中最重要的是安全性和平臺(tái)無(wú)關(guān)性。人們普遍認(rèn)為,C#最大的優(yōu)勢(shì)是其優(yōu)良的開(kāi)發(fā)環(huán)境。如果再能夠與Windows捆綁在一起,就更加具有現(xiàn)實(shí)意義了。但是,從廣義來(lái)判定,Java仍然是大多數(shù)開(kāi)發(fā)者選擇的語(yǔ)言。</p><p>  7) Java有專利,應(yīng)該避免使用。</p><p>  每個(gè)人都需要為這個(gè)問(wèn)題做出決定。有時(shí)候會(huì)因?yàn)镴ava的某些問(wèn)題而感到沮喪

45、,并希望能夠擁有一個(gè)完全開(kāi)放的源代碼的團(tuán)隊(duì)給予救助方案。然而,情況沒(méi)有這么簡(jiǎn)單。 盡管Sun公司最終控制著Java,但是他們通過(guò)“Java Community Process”已經(jīng)與許多其他的公司聯(lián)手進(jìn)行語(yǔ)言修訂版的開(kāi)發(fā)及新類庫(kù)的設(shè)計(jì)。虛擬機(jī)和類庫(kù)的源代碼都可以免費(fèi)獲取,但Java程序設(shè)計(jì)描述是只能夠查閱,而不能修改,也不能再發(fā)布。</p><p>  想一想開(kāi)放源代碼的那些語(yǔ)言,其實(shí)很難說(shuō)清楚這樣做是否更好。最

46、為流行的是“LAMP"(Linux, Apache, MySQL和Perl/PHP/Python)中的三個(gè)“P;。這些語(yǔ)言固然有它們的好處,但同時(shí)它們混亂的版本變化、有限的類庫(kù)和開(kāi)發(fā)工具的匾乏也帶來(lái)了一定的困擾。</p><p>  另一方面,C++和C#已經(jīng)獨(dú)立于廠商的標(biāo)準(zhǔn)協(xié)會(huì)標(biāo)準(zhǔn)化。我們認(rèn)為這一過(guò)程比JavaCommunity Process更加透明。然而,結(jié)果并不像想象的那樣有用。僅僅標(biāo)準(zhǔn)化語(yǔ)言和

47、基類庫(kù)是不夠的。對(duì)于實(shí)際的程序設(shè)計(jì)來(lái)說(shuō),很快會(huì)超出字符串、集合和文件的處理范圍。對(duì)于C#,微軟一再重申:他們將保持大部分的類庫(kù)不做標(biāo)準(zhǔn)化處理或許未來(lái)的Java會(huì)采用開(kāi)放源代碼方式。但是,就此而言,許多人都相信Sun公司是Java最可信賴的管理員。</p><p>  8) Java是解釋型的,因此對(duì)于正式的應(yīng)用程序而言太慢了。</p><p>  早期的Java是解釋型的。現(xiàn)在除了像手機(jī)這

48、樣的“微型”平臺(tái)之外,Java虛擬機(jī)使用了即時(shí)編譯器,因此采用Java編寫的“熱點(diǎn)”代碼其運(yùn)行速度與C++相當(dāng)。Java有一些C++沒(méi)有的且與虛擬機(jī)無(wú)關(guān)的額外開(kāi)銷。垃圾回收會(huì)比手工內(nèi)存管理稍微慢一些,并且實(shí)現(xiàn)同樣的功能,Java程序需要的內(nèi)存量要比C++程序大。程序啟動(dòng)可能也會(huì)慢一些,特別是大型的程序。另外,Java GUI要比本地的GUI慢一些,因?yàn)樗鼈儾捎门c平臺(tái)無(wú)關(guān)的方式繪制圖形。</p><p>  人們抱

49、怨Java比C+十慢已經(jīng)有好多年了。但是,今天的計(jì)算機(jī)比人們發(fā)出抱怨的時(shí)候已經(jīng)快了很多很多。一個(gè)慢的Java程序與幾年前相當(dāng)快的C++程序相比還是要快一些的。就這一點(diǎn)來(lái)說(shuō),那些抱怨聽(tīng)起來(lái)像狐貍抱怨葡萄酸,并且一些誹謗者已經(jīng)轉(zhuǎn)過(guò)來(lái)攻擊Java用戶界面不漂亮而不是攻擊速度慢了。</p><p>  9)所有的Java程序都是在網(wǎng)頁(yè)中運(yùn)行的。</p><p>  所有的Java applet都是

50、在網(wǎng)頁(yè)瀏覽器中運(yùn)行的。這也恰恰是applet的定義,即一種在網(wǎng)頁(yè)中運(yùn)行的Java程序。同時(shí),也完全可以編寫一個(gè)獨(dú)立的、不依賴于Web瀏覽器運(yùn)行的Java程序,并且十分有用。這些程序(通常稱為應(yīng)用程序)是完全可移植的。把代碼移到另一臺(tái)機(jī)器上直接運(yùn)行就行了。由于Java與不夠成熟的C十+相比更加便利、出錯(cuò)的可能性更小,因而對(duì)于程序設(shè)計(jì)來(lái)說(shuō),可謂一種上好的選擇。在使用JDBC這類的數(shù)據(jù)庫(kù)存取工具時(shí),Java語(yǔ)言就更是責(zé)無(wú)旁貸了。毫無(wú)疑問(wèn),Ja

51、va是學(xué)習(xí)程序設(shè)計(jì)的首選語(yǔ)言。 </p><p>  10) Java程序是主要的安全風(fēng)險(xiǎn)。</p><p>  早期的Java,有過(guò)關(guān)于安全系統(tǒng)失效的報(bào)道,曾經(jīng)引起過(guò)公眾的嘩然。大多數(shù)安全問(wèn)題都存在于Java的特定瀏覽器中。研究人員將這視為一種挑戰(zhàn),其含義是努力找出Java的漏洞,對(duì)applet安全模型的強(qiáng)度和復(fù)雜度發(fā)起挑戰(zhàn)。隨后,人們很快就解決了引發(fā)問(wèn)題的所有技術(shù)因素。據(jù)人們所知,

52、所有的實(shí)用系統(tǒng)都妥協(xié)過(guò)。想想看:毫不夸張地說(shuō),有數(shù)百萬(wàn)種病毒攻擊著Windows的可執(zhí)行文件和Word宏,這給系統(tǒng)造成了巨大的損害,但卻很少有人批評(píng)被攻擊平臺(tái)的脆弱。同樣,Internet Explorer中的ActiveX機(jī)制始終作為被攻擊的目標(biāo),但由于阻止這種攻擊非常簡(jiǎn)單,所以人們也就懶得將它們公布于眾了。</p><p>  有些系統(tǒng)管理員在公司的瀏覽器中禁用Java,卻允許其用戶下載可執(zhí)行文件、Activ

53、eX控件和Word文檔。這是多么荒唐可笑啊!通常,不友好的Java applet的襲擊的風(fēng)險(xiǎn)大約相當(dāng)于因飛機(jī)失事而遇難的風(fēng)險(xiǎn);而打開(kāi)Word文檔遭到襲擊的風(fēng)險(xiǎn)則相當(dāng)于步行橫穿繁忙的高速公路而遇難的風(fēng)險(xiǎn)。</p><p>  11) JavaScript是Java的簡(jiǎn)易版。</p><p>  JavaScript是一種在網(wǎng)頁(yè)中使用的腳本語(yǔ)言,它是由Netscape發(fā)明的,原來(lái)的名字叫做Li

54、veScripto JavaScript的語(yǔ)法類似Java,除此之外,兩者無(wú)任何關(guān)系(當(dāng)然,名字有些相像)。JavaScript的一個(gè)子集已經(jīng)被標(biāo)準(zhǔn)化為ECMA-262,但在實(shí)際工作中,使用的擴(kuò)展部分沒(méi)有被標(biāo)準(zhǔn)化,從而導(dǎo)致編寫出能夠同時(shí)運(yùn)行于Netscape和Internet Explorer的JavaScript代碼必定受挫。</p><p>  12)使用Java可以用價(jià)值500美元的Internet設(shè)備取代

55、電腦。</p><p>  當(dāng)Java剛剛剛發(fā)布的時(shí)候,一些人打賭:肯定會(huì)有這樣的好事情發(fā)生。家庭用戶將會(huì)放棄功能強(qiáng)大且便利的桌面系統(tǒng),而使用沒(méi)有本地存儲(chǔ)的網(wǎng)絡(luò)設(shè)備是一種荒謬的想法。我們發(fā)現(xiàn)基于Java的網(wǎng)絡(luò)計(jì)算機(jī)對(duì)于利用“零管理”來(lái)降低計(jì)算機(jī)所有者的商業(yè)成本來(lái)說(shuō)是一種很好的選擇。即便如此,這種好事也沒(méi)有發(fā)生。</p><p>  從另一個(gè)方面來(lái)說(shuō),Java已經(jīng)廣泛地用在手機(jī)上。我們必須承

56、認(rèn)還沒(méi)有看到一個(gè)運(yùn)行在手機(jī)上的Java應(yīng)用程序是必不可少的。但是,常見(jiàn)的游戲和屏幕保護(hù)程序在許多市場(chǎng)上銷售得很好。</p><p>  附件2:外文原文(復(fù)印件)</p><p>  Java Technical Description</p><p>  Java as a Programming Platform</p><p>  Ja

57、va is certainly a good programming language. There is no doubt that it is one of the better languages available to serious programmers. We think it could potentially have been a great programming language, but it is prob

58、ably too late for that. Once a language is out in the field, the ugly reality of compatibility with existing code sets in."</p><p>  Java was never just a language. There are lots of programming languag

59、es out there, and few of them make much of a splash. Java is a whole platform, with a huge library, containing lots of reusable code, and an execution environment that provides services such as security, portability acro

60、ss operating systems, and automatic garbage collection.</p><p>  As a programmer, you will want a language with a pleasant syntax and comprehensible semantics (i.e., not C++). Java fits the bill, as do dozen

61、s of other fine languages. Some languages give you portability, garbage collection, and the like, but they don't have much of a library, forcing you to roll your own if you want fancy graphics or networking or databa

62、se access. Well, Java has everything—a good language, a high-quality execution environment, and a vast library. That combination is what makes</p><p>  Features of Java</p><p><b>  1.Simpl

63、e</b></p><p>  We wanted to build a system that could be programmed easily without a lot of esoteric training and which leveraged today's standard practice. So even though we found that C++ was uns

64、uitable, we designed Java as closely to C++ as possible in order to make the system more comprehensible. Java omits many rarely used, poorly understood, confusing features of C++ that, in our experience, bring more grief

65、 than benefit.</p><p>  The syntax for Java is, indeed, a cleaned-up version of the syntax for C++. There is no need for header files, pointer arithmetic (or even a pointer syntax), structures, unions, opera

66、tor overloading, virtual base classes, and so on. (See the C++ notes interspersed throughout the text for more on the differences between Java and C++.) The designers did not, however, attempt to fix all of the clumsy fe

67、atures of C++. For example, the syntax of the switch statement is unchanged in Java. If you know </p><p>  If you are used to a visual programming environment (such as Visual Basic), you will not find Java s

68、imple. There is much strange syntax (though it does not take long to get the hang of it). More important, you must do a lot more programming in Java. The beauty of Visual Basic is that its visual design environment almos

69、t automatically provides a lot of the infrastructure for an application. The equivalent functionality must be programmed manually, usually with a fair bit of code, in Java. There a</p><p>  Another aspect of

70、 being simple is being small. One of the goals of Java is to enable the construction of software that can run stand-alone in small machines. The size of the basic interpreter and class support is about 40K bytes; adding

71、the basic standard libraries and thread support (essentially a self-contained microkernel) adds an additional 175K.</p><p>  2. Object Oriented</p><p>  Simply stated, object-oriented design is

72、a technique for programming that focuses on the data (= objects) and on the interfaces to that object. To make an analogy with carpentry, an "object-oriented" carpenter would be mostly concerned with the chair

73、he was building, and secondarily with the tools used to make it; a "non-object-oriented" carpenter would think primarily of his tools. The object-oriented facilities of Java are essentially those of C++.</p&

74、gt;<p>  Object orientation has proven its worth in the last 30 years, and it is inconceivable that a modern programming language would not use it. Indeed, the object-oriented features of Java are comparable to th

75、ose of C++. The major difference between Java and C++ lies in multiple inheritance, which Java has replaced with the simpler concept of interfaces, and in the Java metaclass model. The reflection mechanism and object ser

76、ialization feature make it much easier to implement persistent objects and </p><p>  3. Distributed</p><p>  Java has an extensive library of routines for coping with TCP/IP protocols like HTTP

77、 and FTP. Java applications can open and access objects across the Net via URLs with the same ease as when accessing a local file system.</p><p>  We have found the networking capabilities of Java to be both

78、 strong and easy to use. Anyone who has tried to do Internet programming using another language will revel in how simple Java makes onerous tasks like opening a socket connection. (We cover networking in Volume 2 of this

79、 book.) The remote method invocation mechanism enables communication between distributed objects (also covered in Volume 2).There is now a separate architecture, the Java 2 Enterprise Edition (J2EE), that supports very l

80、</p><p><b>  4. Robust</b></p><p>  Java is intended for writing programs that must be reliable in a variety of ways. Java puts a lot of emphasis on early checking for possible probl

81、ems, later dynamic (run-time) checking, and eliminating situations that are error-prone.… The single biggest difference between Java and C/C++ is that Java has a pointer model that eliminates the possibility of overwriti

82、ng memory and corrupting data.</p><p>  This feature is also very useful. The Java compiler detects many problems that, in other languages, would show up only at run time. As for the second point, anyone who

83、 has spent hours chasing memory corruption caused by a pointer bug will be very happy with this feature of Java.</p><p>  If you are coming from a language like Visual Basic that doesn't explicitly use p

84、ointers, you are probably wondering why this is so important. C programmers are not so lucky. They need pointers to access strings, arrays, objects, and even files. In Visual Basic, you do not use pointers for any of the

85、se entities, nor do you need to worry about memory allocation for them. On the other hand, many data structures are difficult to implement in a pointerless language. Java gives you the best of both w</p><p>

86、<b>  5. Secure</b></p><p>  Java is intended to be used in networked/distributed environments. Toward that end, a lot of emphasis has been placed on security. Java enables the construction of vir

87、us-free, tamper-free systems.</p><p>  In the first edition of Core Java we said: "Well, one should 'never say never again,'" and we turned out to be right. Not long after the first version

88、 of the Java Development Kit was shipped, a group of security experts at Princeton University found subtle bugs in the security features of Java 1.0. Sun Microsystems has encouraged research into Java security, making pu

89、blicly available the specification and implementation of the virtual machine and the security libraries. They have fixed all known</p><p>  From the beginning, Java was designed to make certain kinds of atta

90、cks impossible, among them:</p><p>  Overrunning the runtime stack—a common attack of worms and viruses</p><p>  Corrupting memory outside its own process space</p><p>  Reading or

91、writing files without permission</p><p>  A number of security features have been added to Java over time. Since version 1.1, Java has the notion of digitally signed classesWith a signed class, you can be su

92、re who wrote it. Any time you trust the author of the class, the class can be allowed more privileges on your machine.</p><p>  6. Architecture Neutral</p><p>  The compiler generates an archite

93、cture-neutral object file format—the compiled code is executable on many processors, given the presence of the Java runtime system. The Java compiler does this by generating bytecode instructions which have nothing to do

94、 with a particular computer architecture. Rather, they are designed to be both easy to interpret on any machine and easily translated into native machine code on the fly.This is not a new idea. More than 20 years ago, bo

95、th Niklaus Wirth's original</p><p>  Of course, interpreting bytecodes is necessarily slower than running machine instructions at full speed, so it isn't clear that this is even a good idea. However,

96、 virtual machines have the option of translating the most frequently executed bytecode sequences into machine code, a process called just-in-time compilation. This strategy has proven so effective that even Microsoft'

97、;s .NET platform relies on a virtual machine.</p><p>  The virtual machine has other advantages. It increases security because the virtual machine can check the behavior of instruction sequences. Some progra

98、ms even produce bytecodes on the fly, dynamically enhancing the capabilities of a running program.</p><p>  7. Portable</p><p>  Unlike C and C++, there are no "implementation-dependent&quo

99、t; aspects of the specification. The sizes of the primitive data types are specified, as is the behavior of arithmetic on them.</p><p>  For example, an int in Java is always a 32-bit integer. In C/C++, int

100、can mean a 16-bit integer, a 32-bit integer, or any other size that the compiler vendor likes. The only restriction is that the int type must have at least as many bytes as a short int and cannot have more bytes than a l

101、ong int. Having a fixed size for number types eliminates a major porting headache. Binary data is stored and transmitted in a fixed format, eliminating confusion about byte ordering. Strings are saved in a stan</p>

102、<p>  As anyone who has ever tried knows, it is an effort of heroic proportions to write a program that looks good on Windows, the Macintosh, and 10 flavors of UNIX. Java 1.0 made the heroic effort, delivering a s

103、imple toolkit that mapped common user interface elements to a number of platforms. Unfortunately, the result was a library that, with a lot of work, could give barely acceptable results on different systems. (And there w

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論