基于JavaWeb的在線圖書訂購(gòu)與打印管理系統(tǒng)外文翻譯_第1頁(yè)
基于JavaWeb的在線圖書訂購(gòu)與打印管理系統(tǒng)外文翻譯_第2頁(yè)
基于JavaWeb的在線圖書訂購(gòu)與打印管理系統(tǒng)外文翻譯_第3頁(yè)
基于JavaWeb的在線圖書訂購(gòu)與打印管理系統(tǒng)外文翻譯_第4頁(yè)
基于JavaWeb的在線圖書訂購(gòu)與打印管理系統(tǒng)外文翻譯_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

畢業(yè)設(shè)計(jì)(論文)外文資料翻譯學(xué)院:信息工程學(xué)院專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)姓名:XXXXXXXXX學(xué)號(hào):XXXXXXXXX外文出處:Cays.HorstmannCoreJava,VolumeII,AdvancedFeatures,EighthEdition附件:1.外文資料翻譯譯文;2.外文原文。指導(dǎo)教師評(píng)語(yǔ):指導(dǎo)教師評(píng)語(yǔ):2011年4月25日附件1:外文資料翻譯譯文Java技術(shù)介紹Java是一種程序設(shè)計(jì)平臺(tái)Java是一種優(yōu)秀的程序設(shè)計(jì)語(yǔ)言。對(duì)于一個(gè)名副其實(shí)的程序設(shè)計(jì)人員來(lái)說,使用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)存代碼的相容性問題就擺在了人們的面前?!盝ava并不只是一種語(yǔ)言。在此之前出現(xiàn)的那么多種語(yǔ)言也沒有能夠引起那么大的轟動(dòng)。Java是一個(gè)完整的平臺(tái),有一個(gè)龐大的庫(kù),其中包含很多可重用的代碼和一個(gè)提供諸如安全性、跨操作系統(tǒng)的可移植性以及自動(dòng)垃圾回收等服務(wù)的執(zhí)行環(huán)境。作為一名程序設(shè)計(jì)人員,常常希望能夠有一種語(yǔ)言,它具有令人賞心悅目的語(yǔ)法和易于理解的語(yǔ)義(C++不是這樣的)。與許多其他的優(yōu)秀語(yǔ)言一樣,Java恰恰滿足了這些要求。有些語(yǔ)言提供了可移植性、垃圾回收等等,但是,沒有提供一個(gè)大型的庫(kù),如果想要有奇特的繪圖功能、網(wǎng)絡(luò)連接功能和數(shù)據(jù)庫(kù)存取功能就必須自己動(dòng)手編寫代碼。Java這種功能齊全的出色語(yǔ)言,具有高質(zhì)量的執(zhí)行環(huán)境以及龐大的庫(kù)。正是因?yàn)樗喾N優(yōu)勢(shì)于一身,所以對(duì)于廣大的程序設(shè)計(jì)人員來(lái)說有著不可抗拒的吸引力。JAVA的特性1.簡(jiǎn)單性人們希望構(gòu)建一個(gè)無(wú)需深?yuàn)W的專業(yè)訓(xùn)練就可以進(jìn)行編程的系統(tǒng),并且要符合當(dāng)今的標(biāo)準(zhǔn)慣例。因此,盡管人們發(fā)現(xiàn)C++不太適用,但在設(shè)計(jì)Java的時(shí)候還是盡可能地接近C++,以便系統(tǒng)更易于理解。Java別除了C++中許多很少使用、難以理解、易混淆的特性。在目前看來(lái),這些特性帶來(lái)的麻煩遠(yuǎn)遠(yuǎn)大于帶來(lái)的好處。的確,Java語(yǔ)法是C++語(yǔ)法的一個(gè)“純凈”版本。這里沒有頭文件、指針運(yùn)算(甚至指針語(yǔ)法)、結(jié)構(gòu)、聯(lián)合、操作符重載、虛基類等等。(請(qǐng)參看本書各個(gè)章節(jié)給出的C++注釋,那里比較詳細(xì)地解釋了Java與C++之間的區(qū)別。)然而,設(shè)計(jì)者并沒有試圖清除C++中所有不適當(dāng)?shù)奶匦?。例如,switch語(yǔ)句的語(yǔ)法在Java中就沒有改變。如果熟悉C++就會(huì)發(fā)現(xiàn)可以輕而易舉地將它轉(zhuǎn)換成Java,如果已經(jīng)習(xí)慣于可視化的編程環(huán)境(例如VisualBasic),就不會(huì)覺得Java簡(jiǎn)單了。Java有許多奇怪的語(yǔ)法(盡管掌握其要領(lǐng)并不需要很長(zhǎng)時(shí)間),更重要的是,使用Java需要自己編寫大量的程序。VisualBasic的魅力在于它的可視化設(shè)計(jì)環(huán)境幾乎自動(dòng)地為應(yīng)用程序提供了大量的基礎(chǔ)結(jié)構(gòu)。而使用Java實(shí)現(xiàn)同樣的功能卻需要手工地編制代碼,通常代碼量還相當(dāng)大。然而,已經(jīng)有一些支持“拖放”風(fēng)格程序開發(fā)的第三方開發(fā)環(huán)境。簡(jiǎn)單性的另一個(gè)方面是小。Java的目標(biāo)之一是支持開發(fā)能夠在小型機(jī)器上獨(dú)立運(yùn)行的軟件。基本的解釋器以及類支持大約僅為40KB;再加上基礎(chǔ)的標(biāo)準(zhǔn)類庫(kù)和對(duì)線程的支持(基本上是一個(gè)自含的微內(nèi)核)大約需要增加175KB。這是一個(gè)了不起的成就。然而,需要注意的是支持圖形用戶界面(GUI)的類庫(kù)相當(dāng)大。2.面向?qū)ο蠛?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ū)ο蟮摹蹦窘硠t首先考慮的是所用的工具。在本質(zhì)上,Java的面向?qū)ο竽芰εcC++是一樣的。在過去的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)模型。反射機(jī)制以及對(duì)象序列化特性使得Java更加容易實(shí)現(xiàn)持久對(duì)象和GUI構(gòu)建器(可以整合外來(lái)組件)。3.分布式Java有一個(gè)擴(kuò)展的例程庫(kù),用于處理像HTTP和FTP這類的TCP/IP協(xié)議。Java應(yīng)用程序能夠通過URL打開和訪問網(wǎng)絡(luò)上的對(duì)象,其便利程度如同訪問本地文件系統(tǒng)一樣。人們已經(jīng)看到Java的網(wǎng)絡(luò)能力強(qiáng)大且易于使用。任何曾經(jīng)試圖使用其他語(yǔ)言進(jìn)行網(wǎng)絡(luò)編程的人都會(huì)驚呼Java竟然把類似打開socket連接這類繁重的任務(wù)都變得如此簡(jiǎn)單。另外,遠(yuǎn)程方法調(diào)用機(jī)制使得分布式對(duì)象之間可以進(jìn)行通信?,F(xiàn)在有一種獨(dú)立的體系結(jié)構(gòu),Java2企業(yè)版(J2EE),它支持大規(guī)模的分布式應(yīng)用。4.健壯性Java的設(shè)計(jì)目標(biāo)之一在于使用Java編寫的程序具有多方面的可靠性。Java投入了大量的精力進(jìn)行早期的問題檢測(cè)、后期動(dòng)態(tài)的(運(yùn)行時(shí))檢測(cè),并消除了有出錯(cuò)傾向的狀態(tài)……Java和C++最大的不同在于Java采用的指針模型可以消除重寫內(nèi)存和損壞數(shù)據(jù)的可能性。這個(gè)特性非常有用。Java編譯器能夠檢測(cè)許多在其他語(yǔ)言中僅在運(yùn)行時(shí)刻才能夠檢測(cè)出來(lái)的問題。至于第二點(diǎn),對(duì)于曾經(jīng)花費(fèi)幾個(gè)小時(shí)來(lái)檢查由于指針bug而引起內(nèi)存沖突的人來(lái)說,一定很喜歡Java的這一特性。如果曾經(jīng)只使用過VisualBasic這類沒有顯式指針的語(yǔ)言,就會(huì)感覺這么說似乎有些小題大做。然而,C程序員就沒有這樣幸運(yùn)了。他們需要利用指針來(lái)存取串、數(shù)組、對(duì)象,甚至文件。在VisualBasic中,根本不必使用指針來(lái)訪問這些實(shí)體,也不必關(guān)心有關(guān)內(nè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)存泄漏。5.安全性Java適用于網(wǎng)絡(luò)/分布式環(huán)境。為了達(dá)到這個(gè)目標(biāo),在安全方面投入了很大精力。使用Java可以構(gòu)建防病毒、防墓改的系統(tǒng)。事實(shí)證明這是正確的。在Java開發(fā)工具箱啟用后不久,普林斯頓大學(xué)的一些安全專家們發(fā)現(xiàn)了在Java1.0中的某些安全特性方面存在著一些非常隱蔽的bug,SunMicrosystems大力支持對(duì)Java的安全性的研究,制定了供人們使用的規(guī)范,實(shí)現(xiàn)了虛擬機(jī)和安全庫(kù),并迅速地處理了所有已知的安全bug。在任何情況下,蒙騙Java的安全機(jī)制都是十分困難的?,F(xiàn)在,發(fā)現(xiàn)bug所需的技術(shù)性越來(lái)越強(qiáng),數(shù)目越來(lái)越少。從一開始,Java就被設(shè)計(jì)成能夠防范各種襲擊,包括:·禁止運(yùn)行時(shí)堆棧溢出。例如,蠕蟲等病毒常用的襲擊手段?!そ乖谧约旱奶幚砜臻g之外破壞內(nèi)存?!の唇?jīng)授權(quán)禁止讀寫文件。許多安全特性相繼不斷地被加入Java中。自從Java1.1問世以來(lái),Java就有了數(shù)字簽名類(digitallysignedclass)的概念(請(qǐng)參看卷II)。通過數(shù)字簽名類,可以確定類的作者。如果信任這個(gè)類的作者,這個(gè)類就可以在你的機(jī)器上擁有更多的權(quán)限。來(lái)自微軟的基于ActiveX技術(shù)的競(jìng)爭(zhēng)代碼傳輸機(jī)制,其安全性完全依賴于數(shù)字簽名。這顯然是不夠的,因?yàn)槲④涀陨懋a(chǎn)品的任何用戶都可以證實(shí),來(lái)自知名提供商的程序會(huì)崩潰并對(duì)系統(tǒng)產(chǎn)生危害。Java的安全機(jī)制比ActiveX要強(qiáng)得多,因?yàn)樗窃趹?yīng)用程序運(yùn)行時(shí)加以拉制并制止惡意性破壞的。6.體系結(jié)構(gòu)中立編譯器生成一個(gè)體系結(jié)構(gòu)中立的目標(biāo)文件格式,這是一種編譯過場(chǎng)代碼,只要有Java運(yùn)行時(shí)系統(tǒng),就可以在許多處理器上運(yùn)行。Java編譯器通過生成與特定的計(jì)算機(jī)體系結(jié)構(gòu)無(wú)關(guān)的字節(jié)碼指令來(lái)實(shí)現(xiàn)這一特性。精心設(shè)計(jì)的字節(jié)碼不僅可以很容易地在任何機(jī)器上被解釋執(zhí)行,而且還可以迅速地翻譯成本地機(jī)器的代碼。這并不是什么新的思想。20多年以前,NiklausWirth最初實(shí)現(xiàn)的Pascal以及UCSDPascal系統(tǒng)都使用了這種技術(shù)。當(dāng)然,解釋字節(jié)碼肯定要比全速地運(yùn)行機(jī)器指令慢很多。所以說,這是不是一個(gè)好的思想還很難講!然而,虛擬機(jī)有一個(gè)選項(xiàng),它可以將執(zhí)行最頻繁的字韋碼序列翻譯成機(jī)器碼,這一過程被稱為即時(shí)編譯。這一策略已經(jīng)被證明十分有效,致使微軟的.NET平臺(tái)也依賴于虛擬機(jī)。虛擬機(jī)還有一些其他的優(yōu)點(diǎn)。虛擬機(jī)可以檢測(cè)指令序列的行為,以增強(qiáng)其安全性。有些程序甚至能夠快速地生成字節(jié)碼,并動(dòng)態(tài)地增強(qiáng)所運(yùn)行程序的處理能力。7.可移植性與C和C++不同,Java規(guī)范中沒有“依賴具體實(shí)現(xiàn)”的地方。塞本數(shù)據(jù)類型的大小以及有關(guān)算法都做了明確的說明。例如,Java中的int永遠(yuǎn)為32位的整數(shù),而在C/C++中,int可能是16位整數(shù)、32位整數(shù),也可能是編譯器提供商指定的其他大小。唯一的限制只是int類型的大小不能低于shortint,并且不能高于longint。在Java中,數(shù)據(jù)類型具有固足的大小,們除J代消移祖盯竿八大油a'i土女IWJ*I。-mlR77數(shù)據(jù)以固定的格式存儲(chǔ)和傳輸,消除了字節(jié)順序的困擾。字符串是用標(biāo)準(zhǔn)的Unicode格式存儲(chǔ)的。作為系統(tǒng)的組成部分的類庫(kù),定義了可移植的接口。例如,有一個(gè)抽象的Window類給出了在UNIX,Windows和Macintosh環(huán)境下的不同實(shí)現(xiàn)。凡是嘗試過的人都知道,要編寫一個(gè)在Windows,Macintosh和10種不同風(fēng)格的、在UNIX上看起來(lái)都不錯(cuò)的程序有多么困難。Java1.0就嘗試著做了這么一個(gè)壯舉,發(fā)布了一個(gè)將常用的用戶界面元素映射到不同平臺(tái)上的簡(jiǎn)單工具箱。遺憾的是,花費(fèi)了大量的心血,卻構(gòu)建了一個(gè)在各個(gè)系統(tǒng)上都難以讓人接受的庫(kù)(而且,在不同平臺(tái)的圖形實(shí)現(xiàn)中有不同的bug)。不過,這畢竟是個(gè)開端。對(duì)于許多應(yīng)用問題來(lái)說,可移植性比花枝招展的用戶界面更加重要。而且這些應(yīng)用程序從Java的早期版本中獲益匪淺?,F(xiàn)在,用戶界面工具箱已經(jīng)完全被重寫了,不再依賴于主機(jī)的用戶接口?,F(xiàn)在的Java版本比早期版本更加穩(wěn)定,更加吸引人。8.解釋型Java解釋器可以在任何移植了解釋器的機(jī)器上執(zhí)行Java字節(jié)碼。由于鏈接是一個(gè)更加增量且簡(jiǎn)便的過程,所以開發(fā)過程也變得更加快捷,更加具有探索性。增量鏈接有其優(yōu)勢(shì),但給開發(fā)過程帶來(lái)的好處顯然是言過其實(shí)了。在任何情況下,都會(huì)覺得Java開發(fā)工具的速度相當(dāng)慢。如果習(xí)慣于經(jīng)典的MicrosoftVisualC++環(huán)境的速度,就會(huì)對(duì)Java開發(fā)環(huán)境的性能感到失望。(但是,VisualStudio的當(dāng)前版本不像經(jīng)典的環(huán)境那樣快捷。無(wú)論用什么語(yǔ)言編寫程序,都需要向老板申請(qǐng)一臺(tái)速度更快的計(jì)算機(jī),以便運(yùn)行最新的開發(fā)環(huán)境。)9.高性能盡管對(duì)解釋后的字節(jié)碼性能已經(jīng)比較滿意,但在有些情況下卻需要更加高效的性能。字節(jié)碼可以(在運(yùn)行時(shí)刻)被快速地翻譯成運(yùn)行該應(yīng)用程序的特定CPU的機(jī)器碼。如果使用解釋器執(zhí)行字節(jié)碼,根本就不可能用術(shù)語(yǔ)“高性能”。然而,在許多平臺(tái)上,還有另一種編譯形式,這就是即時(shí)編譯器(JIT編譯器)。它的基本工作方式是一次把字節(jié)碼編譯為本地代碼,并將結(jié)果緩存起來(lái)。在需要的時(shí)候重新調(diào)用。由于這種方式只需要進(jìn)行一次解釋,從而極大地提高了常用代碼運(yùn)行速度。雖然,即時(shí)編譯器仍然比真正的本地代碼編譯器慢一些,但是對(duì)某些程序來(lái)說,能夠提高10倍乃至20倍的速度,而且?guī)缀踉谌魏吻闆r下,都比解釋器的速度快得多。這個(gè)技術(shù)始終在不斷完善著,或許有一天它能夠達(dá)到傳統(tǒng)編譯系統(tǒng)所無(wú)法匹敵的性能。例如,即時(shí)編譯器可以監(jiān)視哪些代碼被頻繁地執(zhí)行,并對(duì)其進(jìn)行優(yōu)化,以提高程序的運(yùn)行速度。10.多線程多線程可以帶來(lái)更好的交互響應(yīng)和實(shí)時(shí)行為。如果曾經(jīng)使用過其他語(yǔ)言編寫多線程的應(yīng)用程序,就會(huì)對(duì)Java多線程處理的便捷性驚嘆不已。只要操作系統(tǒng)支持,Java中的線程就可以利用多個(gè)處理器。在底層,主流平臺(tái)的線程實(shí)現(xiàn)機(jī)制各不相同,Java并沒有花費(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ù)器端開發(fā)語(yǔ)言的主要原因之一。11.動(dòng)態(tài)性從各種角度看,Java與C或C++相比更加具有動(dòng)態(tài)性。它能夠適應(yīng)不斷發(fā)展的環(huán)境。庫(kù)中可以自由地添加新方法和實(shí)例變童,而時(shí)客戶端卻沒有任何影響。在Java中找出運(yùn)行時(shí)刻類型信息十分直觀。當(dāng)需要將某些代碼添加到正在運(yùn)行的程序中時(shí),動(dòng)態(tài)性將是一個(gè)非常重要的特性。一個(gè)很好的例子是:從Internet上下載代碼,然后在瀏覽器上運(yùn)行。在Java1.0中,不能直接地獲取運(yùn)行時(shí)類型信息,而Java的當(dāng)前版本允許程序員知曉對(duì)象的結(jié)構(gòu)和行為。這對(duì)于必須在運(yùn)行時(shí)分析對(duì)象的系統(tǒng)來(lái)說非常有用。這些系統(tǒng)有:JavaGUI構(gòu)建器、智能調(diào)試器、可插入組件以及對(duì)象數(shù)據(jù)庫(kù)。微軟曾經(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ǔ)法與Java幾乎一樣。只是除了與WindowsAPI的接口之外,還增加了一些可能具有一定實(shí)用性的語(yǔ)言結(jié)構(gòu)。Java和J++不僅共享通用的語(yǔ)法,它們的塞本類庫(kù)(串、實(shí)用程序、聯(lián)網(wǎng)、多線程、數(shù)學(xué)函數(shù)等等)從本質(zhì)上說也是一致的。然而,圖形庫(kù)、用戶界面、遠(yuǎn)程對(duì)象存取的方式則完全不同。為此,微軟不再支持J++,取而代之的是另一種被稱為C#語(yǔ)言。C#與Java有很多相似之處,然而使用的卻是完全不同的虛擬機(jī)。甚至還有一種J#語(yǔ)言可將J++的應(yīng)用遷移到使用C#的虛擬機(jī)上。Java與Internet這里的思想很簡(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)做出任何修改,因此,Java的applet應(yīng)該可以運(yùn)行在任何啟用Java瀏覽器上。遺憾的是,實(shí)際情況并非如此。各個(gè)版本的Netscape(網(wǎng)景瀏覽器)和InternetExplorer(IE瀏覽器)運(yùn)行著不同版本的Java,其中有些早已過時(shí)。這種糟糕的情況導(dǎo)致更加難于利用Java最新版本來(lái)開發(fā)applet。為了擺脫這種局面,Sun開發(fā)了Java插件。這就使得Netscape和InternetExplorer都可以利用最新的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ì)算。在一個(gè)網(wǎng)頁(yè)中,可以利用鼠標(biāo)進(jìn)行旋轉(zhuǎn),調(diào)整焦距等操作,以便能夠更好地理解分子結(jié)構(gòu)。用靜態(tài)網(wǎng)頁(yè)將無(wú)法實(shí)現(xiàn)這種直接操作,而applet卻可以達(dá)到此目的。可以借助applet在網(wǎng)頁(yè)上增加按鈕和輸人框。但是,通過撥號(hào)連接下載這樣的applet速度相當(dāng)慢。除此之外,還可以使用DynamicHTML,HTML表單和某種腳本語(yǔ)言(如JavaScript)完成這類操作。當(dāng)然,早期的applet主要用于動(dòng)畫,如大家熟悉的旋轉(zhuǎn)球、跳動(dòng)的卡通字符、瘋狂。我們對(duì)JAVA的誤解下面是我們對(duì)java的一些誤解,這里將給出解釋:1)Java是HTML的擴(kuò)展。Java是一種程序設(shè)計(jì)語(yǔ)言;HTML是一種描述網(wǎng)頁(yè)結(jié)構(gòu)的方式。除了存在用于放置Javaapplet的HTML擴(kuò)展之外,兩者沒有任何共同之處。2)使用XML,就不需要Java。Java是一種程序設(shè)計(jì)語(yǔ)言;XML是一種描述數(shù)據(jù)的方式??梢允褂萌魏我环N程序設(shè)計(jì)語(yǔ)言來(lái)處理XML數(shù)據(jù),而JavaAPI對(duì)處理XML提供了很好的支持。此外,許多重要的第三方XML工具是采用Java編寫的.Java是一種非常容易學(xué)習(xí)的程序設(shè)計(jì)語(yǔ)言。Java這種功能強(qiáng)大的語(yǔ)言大都不太容易學(xué)習(xí)。首先,必須將編寫玩具式程序的輕松和開發(fā)實(shí)際項(xiàng)目的艱難區(qū)分開來(lái)。如何使用Java類庫(kù)將Java語(yǔ)言應(yīng)用到實(shí)際中去。Java類庫(kù)包含了數(shù)千種類和接口與幾萬(wàn)種方法。幸運(yùn)的是,并不需要知曉它們中的每一個(gè),但是要用Java解決實(shí)際問題,還是需要了解不少內(nèi)容的。Java將成為適用于所有平臺(tái)的通用性編程語(yǔ)言。從理論上講,這是完全有可能的。的確,除了微軟之外的每一個(gè)廠商都希望如此。然而有很多已經(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)什么特別的好處。Java只不過是另外一種程序設(shè)計(jì)語(yǔ)言。Java是一種很好的程序設(shè)計(jì)語(yǔ)言;很多程序設(shè)計(jì)人員喜歡Java勝過C,C+十或C#。有上百種好的程序設(shè)計(jì)語(yǔ)言沒有廣泛地流行,而帶有明顯缺陷的語(yǔ)言,如C十+和VisualBasic卻大行其道。這是為什么呢?程序設(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)境工具?語(yǔ)言和工具是否能夠與計(jì)算機(jī)的其他基礎(chǔ)結(jié)構(gòu)整合在一起.Java的成功就是來(lái)自于其類庫(kù)能夠讓你輕松地完成原本十分艱難的事情。例如,聯(lián)網(wǎng)、多線程。Java減少了指針錯(cuò)誤,因此使用Java編程的效率更高了。但這些并不是Java成功的全部原因。6)現(xiàn)在有了C#,Java過時(shí)了。C#借鑒了Java許多好的思想,例如,清晰的程序設(shè)計(jì)語(yǔ)言、虛擬機(jī)和垃圾回收。無(wú)論怎樣,C#還是保持了一些好的特性,其中最重要的是安全性和平臺(tái)無(wú)關(guān)性。人們普遍認(rèn)為,C#最大的優(yōu)勢(shì)是其優(yōu)良的開發(fā)環(huán)境。如果再能夠與Windows捆綁在一起,就更加具有現(xiàn)實(shí)意義了。但是,從廣義來(lái)判定,Java仍然是大多數(shù)開發(fā)者選擇的語(yǔ)言。7)Java有專利,應(yīng)該避免使用。每個(gè)人都需要為這個(gè)問題做出決定。有時(shí)候會(huì)因?yàn)镴ava的某些問題而感到沮喪,并希望能夠擁有一個(gè)完全開放的源代碼的團(tuán)隊(duì)給予救助方案。然而,情況沒有這么簡(jiǎn)單。盡管Sun公司最終控制著Java,但是他們通過“JavaCommunityProcess”已經(jīng)與許多其他的公司聯(lián)手進(jìn)行語(yǔ)言修訂版的開發(fā)及新類庫(kù)的設(shè)計(jì)。虛擬機(jī)和類庫(kù)的源代碼都可以免費(fèi)獲取,但Java程序設(shè)計(jì)描述是只能夠查閱,而不能修改,也不能再發(fā)布。想一想開放源代碼的那些語(yǔ)言,其實(shí)很難說清楚這樣做是否更好。最為流行的是“LAMP"(Linux,Apache,MySQL和Perl/PHP/Python)中的三個(gè)“P;。這些語(yǔ)言固然有它們的好處,但同時(shí)它們混亂的版本變化、有限的類庫(kù)和開發(fā)工具的匾乏也帶來(lái)了一定的困擾。另一方面,C++和C#已經(jīng)獨(dú)立于廠商的標(biāo)準(zhǔn)協(xié)會(huì)標(biāo)準(zhǔn)化。我們認(rèn)為這一過程比JavaCommunityProcess更加透明。然而,結(jié)果并不像想象的那樣有用。僅僅標(biāo)準(zhǔn)化語(yǔ)言和基類庫(kù)是不夠的。對(duì)于實(shí)際的程序設(shè)計(jì)來(lái)說,很快會(huì)超出字符串、集合和文件的處理范圍。對(duì)于C#,微軟一再重申:他們將保持大部分的類庫(kù)不做標(biāo)準(zhǔn)化處理或許未來(lái)的Java會(huì)采用開放源代碼方式。但是,就此而言,許多人都相信Sun公司是Java最可信賴的管理員。8)Java是解釋型的,因此對(duì)于正式的應(yīng)用程序而言太慢了。早期的Java是解釋型的?,F(xiàn)在除了像手機(jī)這樣的“微型”平臺(tái)之外,Java虛擬機(jī)使用了即時(shí)編譯器,因此采用Java編寫的“熱點(diǎn)”代碼其運(yùn)行速度與C++相當(dāng)。Java有一些C++沒有的且與虛擬機(jī)無(wú)關(guān)的額外開銷。垃圾回收會(huì)比手工內(nèi)存管理稍微慢一些,并且實(shí)現(xiàn)同樣的功能,Java程序需要的內(nèi)存量要比C++程序大。程序啟動(dòng)可能也會(huì)慢一些,特別是大型的程序。另外,JavaGUI要比本地的GUI慢一些,因?yàn)樗鼈儾捎门c平臺(tái)無(wú)關(guān)的方式繪制圖形。人們抱怨Java比C+十慢已經(jīng)有好多年了。但是,今天的計(jì)算機(jī)比人們發(fā)出抱怨的時(shí)候已經(jīng)快了很多很多。一個(gè)慢的Java程序與幾年前相當(dāng)快的C++程序相比還是要快一些的。就這一點(diǎn)來(lái)說,那些抱怨聽起來(lái)像狐貍抱怨葡萄酸,并且一些誹謗者已經(jīng)轉(zhuǎn)過來(lái)攻擊Java用戶界面不漂亮而不是攻擊速度慢了。9)所有的Java程序都是在網(wǎng)頁(yè)中運(yùn)行的。所有的Javaapplet都是在網(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)說,可謂一種上好的選擇。在使用JDBC這類的數(shù)據(jù)庫(kù)存取工具時(shí),Java語(yǔ)言就更是責(zé)無(wú)旁貸了。毫無(wú)疑問,Java是學(xué)習(xí)程序設(shè)計(jì)的首選語(yǔ)言。Java程序是主要的安全風(fēng)險(xiǎn)。早期的Java,有過關(guān)于安全系統(tǒng)失效的報(bào)道,曾經(jīng)引起過公眾的嘩然。大多數(shù)安全問題都存在于Java的特定瀏覽器中。研究人員將這視為一種挑戰(zhàn),其含義是努力找出Java的漏洞,對(duì)applet安全模型的強(qiáng)度和復(fù)雜度發(fā)起挑戰(zhàn)。隨后,人們很快就解決了引發(fā)問題的所有技術(shù)因素。據(jù)人們所知,所有的實(shí)用系統(tǒng)都妥協(xié)過。想想看:毫不夸張地說,有數(shù)百萬(wàn)種病毒攻擊著Windows的可執(zhí)行文件和Word宏,這給系統(tǒng)造成了巨大的損害,但卻很少有人批評(píng)被攻擊平臺(tái)的脆弱。同樣,InternetExplorer中的ActiveX機(jī)制始終作為被攻擊的目標(biāo),但由于阻止這種攻擊非常簡(jiǎn)單,所以人們也就懶得將它們公布于眾了。有些系統(tǒng)管理員在公司的瀏覽器中禁用Java,卻允許其用戶下載可執(zhí)行文件、ActiveX控件和Word文檔。這是多么荒唐可笑啊!通常,不友好的Javaapplet的襲擊的風(fēng)險(xiǎn)大約相當(dāng)于因飛機(jī)失事而遇難的風(fēng)險(xiǎn);而打開Word文檔遭到襲擊的風(fēng)險(xiǎn)則相當(dāng)于步行橫穿繁忙的高速公路而遇難的風(fēng)險(xiǎn)。JavaScript是Java的簡(jiǎn)易版。JavaScript是一種在網(wǎng)頁(yè)中使用的腳本語(yǔ)言,它是由Netscape發(fā)明的,原來(lái)的名字叫做LiveScriptoJavaScript的語(yǔ)法類似Java,除此之外,兩者無(wú)任何關(guān)系(當(dāng)然,名字有些相像)。JavaScript的一個(gè)子集已經(jīng)被標(biāo)準(zhǔn)化為ECMA-262,但在實(shí)際工作中,使用的擴(kuò)展部分沒有被標(biāo)準(zhǔn)化,從而導(dǎo)致編寫出能夠同時(shí)運(yùn)行于Netscape和InternetExplorer的JavaScript代碼必定受挫。12)使用Java可以用價(jià)值500美元的Internet設(shè)備取代電腦。當(dāng)Java剛剛剛發(fā)布的時(shí)候,一些人打賭:肯定會(huì)有這樣的好事情發(fā)生。家庭用戶將會(huì)放棄功能強(qiáng)大且便利的桌面系統(tǒng),而使用沒有本地存儲(chǔ)的網(wǎng)絡(luò)設(shè)備是一種荒謬的想法。我們發(fā)現(xiàn)基于Java的網(wǎng)絡(luò)計(jì)算機(jī)對(duì)于利用“零管理”來(lái)降低計(jì)算機(jī)所有者的商業(yè)成本來(lái)說是一種很好的選擇。即便如此,這種好事也沒有發(fā)生。從另一個(gè)方面來(lái)說,Java已經(jīng)廣泛地用在手機(jī)上。我們必須承認(rèn)還沒有看到一個(gè)運(yùn)行在手機(jī)上的Java應(yīng)用程序是必不可少的。但是,常見的游戲和屏幕保護(hù)程序在許多市場(chǎng)上銷售得很好。附件2:外文原文(復(fù)印件)JavaTechnicalDescriptionJavaasaProgrammingPlatformJavaiscertainlyagoodprogramminglanguage.Thereisnodoubtthatitisoneofthebetterlanguagesavailabletoseriousprogrammers.Wethinkitcouldpotentiallyhavebeenagreatprogramminglanguage,butitisprobablytoolateforthat.Oncealanguageisoutinthefield,theuglyrealityofcompatibilitywithexistingcodesetsin."Javawasneverjustalanguage.Therearelotsofprogramminglanguagesoutthere,andfewofthemmakemuchofasplash.Javaisawholeplatform,withahugelibrary,containinglotsofreusablecode,andanexecutionenvironmentthatprovidesservicessuchassecurity,portabilityacrossoperatingsystems,andautomaticgarbagecollection.Asaprogrammer,youwillwantalanguagewithapleasantsyntaxandcomprehensiblesemantics(i.e.,notC++).Javafitsthebill,asdodozensofotherfinelanguages.Somelanguagesgiveyouportability,garbagecollection,andthelike,buttheydon'thavemuchofalibrary,forcingyoutorollyourownifyouwantfancygraphicsornetworkingordatabaseaccess.Well,Javahaseverything—agoodlanguage,ahigh-qualityexecutionenvironment,andavastlibrary.ThatcombinationiswhatmakesJavaanirresistiblepropositiontosomanyprogrammers.FeaturesofJava1.SimpleWewantedtobuildasystemthatcouldbeprogrammedeasilywithoutalotofesoterictrainingandwhichleveragedtoday'sstandardpractice.SoeventhoughwefoundthatC++wasunsuitable,wedesignedJavaascloselytoC++aspossibleinordertomakethesystemmorecomprehensible.Javaomitsmanyrarelyused,poorlyunderstood,confusingfeaturesofC++that,inourexperience,bringmoregriefthanbenefit.ThesyntaxforJavais,indeed,acleaned-upversionofthesyntaxforC++.Thereisnoneedforheaderfiles,pointerarithmetic(orevenapointersyntax),structures,unions,operatoroverloading,virtualbaseclasses,andsoon.(SeetheC++notesinterspersedthroughoutthetextformoreonthedifferencesbetweenJavaandC++.)Thedesignersdidnot,however,attempttofixalloftheclumsyfeaturesofC++.Forexample,thesyntaxoftheswitchstatementisunchangedinJava.IfyouknowC++,youwillfindthetransitiontotheJavasyntaxeasy.Ifyouareusedtoavisualprogrammingenvironment(suchasVisualBasic),youwillnotfindJavasimple.Thereismuchstrangesyntax(thoughitdoesnottakelongtogetthehangofit).Moreimportant,youmustdoalotmoreprogramminginJava.ThebeautyofVisualBasicisthatitsvisualdesignenvironmentalmostautomaticallyprovidesalotoftheinfrastructureforanapplication.Theequivalentfunctionalitymustbeprogrammedmanually,usuallywithafairbitofcode,inJava.Thereare,however,third-partydevelopmentenvironmentsthatprovide"drag-and-drop"-styleprogramdevelopment.Anotheraspectofbeingsimpleisbeingsmall.OneofthegoalsofJavaistoenabletheconstructionofsoftwarethatcanrunstand-aloneinsmallmachines.Thesizeofthebasicinterpreterandclasssupportisabout40Kbytes;addingthebasicstandardlibrariesandthreadsupport(essentiallyaself-containedmicrokernel)addsanadditional175K.ObjectOrientedSimplystated,object-orienteddesignisatechniqueforprogrammingthatfocusesonthedata(=objects)andontheinterfacestothatobject.Tomakeananalogywithcarpentry,an"object-oriented"carpenterwouldbemostlyconcernedwiththechairhewasbuilding,andsecondarilywiththetoolsusedtomakeit;a"non-object-oriented"carpenterwouldthinkprimarilyofhistools.Theobject-orientedfacilitiesofJavaareessentiallythoseofC++.Objectorientationhasprovenitsworthinthelast30years,anditisinconceivablethatamodernprogramminglanguagewouldnotuseit.Indeed,theobject-orientedfeaturesofJavaarecomparabletothoseofC++.ThemajordifferencebetweenJavaandC++liesinmultipleinheritance,whichJavahasreplacedwiththesimplerconceptofinterfaces,andintheJavametaclassmodel.ThereflectionmechanismandobjectserializationfeaturemakeitmucheasiertoimplementpersistentobjectsandGUIbuildersthatcanintegrateoff-the-shelfcomponents.DistributedJavahasanextensivelibraryofroutinesforcopingwithTCP/IPprotocolslikeHTTPandFTP.JavaapplicationscanopenandaccessobjectsacrosstheNetviaURLswiththesameeaseaswhenaccessingalocalfilesystem.WehavefoundthenetworkingcapabilitiesofJavatobebothstrongandeasytouse.AnyonewhohastriedtodoInternetprogrammingusinganotherlanguagewillrevelinhowsimpleJavamakesoneroustaskslikeopeningasocketconnection.(WecovernetworkinginVolume2ofthisbook.)Theremotemethodinvocationmechanismenablescommunicationbetweendistributedobjects(alsocoveredinVolume2).Thereisnowaseparatearchitecture,theJava2EnterpriseEdition(J2EE),thatsupportsverylargescaledistributedapplications.RobustJavaisintendedforwritingprogramsthatmustbereliableinavarietyofways.Javaputsalotofemphasisonearlycheckingforpossibleproblems,laterdynamic(run-time)checking,andeliminatingsituationsthatareerror-prone.…ThesinglebiggestdifferencebetweenJavaandC/C++isthatJavahasapointermodelthateliminatesthepossibilityofoverwritingmemoryandcorruptingdata.Thisfeatureisalsoveryuseful.TheJavacompilerdetectsmanyproblemsthat,inotherlanguages,wouldshowuponlyatruntime.Asforthesecondpoint,anyonewhohasspenthourschasingmemorycorruptioncausedbyapointerbugwillbeveryhappywiththisfeatureofJava.IfyouarecomingfromalanguagelikeVisualBasicthatdoesn'texplicitlyusepointers,youareprobablywonderingwhythisissoimportant.Cprogrammersarenotsolucky.Theyneedpointerstoaccessstrings,arrays,objects,andevenfiles.InVisualBasic,youdonotusepointersforanyoftheseentities,nordoyouneedtoworryaboutmemoryallocationforthem.Ontheotherhand,manydatastructuresaredifficulttoimplementinapointerlesslanguage.Javagivesyouthebestofbothworlds.Youdonotneedpointersforeverydayconstructslikestringsandarrays.Youhavethepowerofpointersifyouneedit,forexample,forlinkedlists.Andyoualwayshavecompletesafety,becauseyoucanneveraccessabadpointer,makememoryallocationerrors,orhavetoprotectagainstmemoryleakingaway.5.SecureJavaisintendedtobeusedinnetworked/distributedenvironments.Towardthatend,alotofemphasishasbeenplacedonsecurity.Javaenablestheconstructionofvirus-free,tamper-freesystems.InthefirsteditionofCoreJavawesaid:"Well,oneshould'neversayneveragain,'"andweturnedouttoberight.NotlongafterthefirstversionoftheJavaDevelopmentKitwasshipped,agroupofsecurityexpertsatPrincetonUniversityfoundsubtlebugsinthesecurityfeaturesofJava1.0.SunMicrosystemshasencouragedresearchintoJavasecurity,makingpubliclyavailablethespecificationandimplementationofthevirtualmachineandthesecuritylibraries.Theyhavefixedallknownsecuritybugsquickly.Inanycase,Javamakesitextremelydifficulttooutwititssecuritymechanisms.Thebugsfoundsofarhavebeenverytechnicalandfewinnumber.Fromthebeginning,Javawasdesignedtomakecertainkindsofattacksimpossible,amongthem:Overrunningtheruntimestack—acommonattackofwormsandvirusesCorruptingmemoryoutsideitsownprocessspaceReadingorwritingfileswithoutpermissionAnumberofsecurityfeatureshavebeenaddedtoJavaovertime.Sinceversion1.1,JavahasthenotionofdigitallysignedclassesWithasignedclass,youcanbesurewhowroteit.Anytimeyoutrusttheauthoroftheclass,theclasscanbeallowedmoreprivilegesonyourmachine.ArchitectureNeutralThecompilergeneratesanarchitecture-neutralobjectfileformat—thecompiledcodeisexecutableonmanyprocessors,giventhepresenceoftheJavaruntimesystem.TheJavacompilerdoesthisbygeneratingbytecodeinstructionswhichhavenothingtodowithaparticularcomputerarchitecture.Rather,theyaredesignedtobebotheasytointerpretonanymachineandeasilytranslatedintonativemachinecodeonthefly.Thisisnotanewidea.Morethan20yearsago,bothNiklausWirth'soriginalimplementationofPascalandtheUCSDPascalsystemusedthesametechnique.Ofcourse,interpretingbytecodesisnecessarilyslowerthanrunningmachineinstructionsatfullspeed,soitisn'tclearthatthisisevenagoodidea.However,virtualmachineshavetheoptionoftranslatingthemostfrequentlyexecutedbytecodesequencesintomachinecode,aprocesscalledjust-in-timecompilation.ThisstrategyhasprovensoeffectivethatevenMicrosoft's.NETplatformreliesonavirtualmachine.Thevirtualmachinehasotheradvantages.Itincreasessecuritybecausethevirtualmachinecancheckthebehaviorofinstructionsequences.Someprogramsevenproducebytecodesonthefly,dynamicallyenhancingthecapabilitiesofarunningprogram.PortableUnlikeCandC++,thereareno"implementation-dependent"aspectsofthespecification.Thesizesoftheprimitivedatatypesarespecified,asisthebehaviorofarithmeticonthem.Forexample,anintinJavaisalwaysa32-bitinteger.InC/C++,intcanmeana16-bitinteger,a32-bitinteger,oranyothersizethatthecompilervendorlikes.Theonlyrestrictionisthattheinttypemusthaveatleastasmanybytesasashortintandcannothavemorebytesthanalongint.Havingafixedsizefornumbertypeseliminatesamajorportingheadache.Binarydataisstoredandtransmittedinafixedformat,eliminatingconfusionaboutbyteordering.StringsaresavedinastandardUnicodeformat.Thelibrariesthatareapartofthesystemdefineportableinterfaces.Forexample,thereisanabstractWindowclassandimplementationsofitforUNIX,Windows,andtheMacintosh.Asanyonewhohasevertriedknows,itisaneffortofheroicproportionstowriteaprogramthatlooksgoodonWindows,theMacintosh,and10flavorsofUNIX.Java1.0madetheheroiceffort,deliveringasimpletoolkitthatmappedcommonuserinterfaceelementstoanumberofplatforms.Unfortunately,theresultwasalibrarythat,withalotofwork,couldgivebarelyacceptableresultsondifferentsystems.(Andtherewereoftendifferentbugsonthedifferentplatformgraphicsimplementations.)Butitwasastart.Therearemanyapplicationsinwhichportabilityismoreimportantthanuserinterfaceslickness,andtheseapplicationsdidbenefitfromearlyversionsofJava.Bynow,theuserinterfacetoolkithasbeencompletelyrewrittensothatitnolongerreliesonthehostuserinterface.Theresultisfarmoreconsistentand,wethink,moreattractivethaninearlierversionsofJava.InterpretedTheJavainterpretercanexecuteJavabytecodesdirectlyonanymachinetowhichtheinterpreterhasbeenported.Sincelinkingisamoreincrementalandlightweightprocess,thedevelopmentprocesscanbemuchmorerapidandexploratory.Incrementallinkinghasadvantages,butitsbenefitforthedevelopmentprocessisclearlyoverstated.Inanycase,wehavefoundJavadevelopmenttoolstobequiteslow.IfyouareusedtothespeedoftheclassicMicrosoftVisualC++environment,youwilllikelybedisappointedwiththeperformanceofJavadevelopmentenvironments.(ThecurrentversionofVisualStudioisn'taszippyastheclassicenvironments,however.Nomatterwhatlanguageyouprogramin,youshoulddefinitelyaskyourbossforafastercomputertorunthelatestdevelopmentenvironments.)HighPerformanceWhiletheperformanceofinterpretedbytecodesisusuallymorethanadequate,therearesituationswherehigherperformanceisrequired.Thebytecodescanbetranslatedonthefly(atruntime)intomachinecodefortheparticularCPUtheapplicationisrunningon.Ifyouuseaninterpretertoexecutethebytecodes,"highperformance"isnotthetermthatwewoulduse.However,onmanyplatforms,thereisalsoanotherformofcompilation,thejust-in-time(JIT)compilers.Theseworkbycompilingthebytecodesintonativecodeonce,cachingtheresults,andthencallingthemagainifneeded.Thisapproachspeedsupcommonlyusedcodetremendouslybecauseonehastodotheinterpretationonlyonce.Althoughstillslightlyslowerthanatruenativecodecompiler,ajust-in-timecompilercangiveyoua10-oreven20-foldspeedupforsomeprogramsandwillalmostalwaysbesignificantlyfasterthananinterpreter.Thistechnologyisbeingimprovedcontinuouslyandmayeventuallyyieldresultsthatcannotbematchedbytraditionalcompilationsystems.Forexample,ajust-in-timecompilercanmonitorwhichcodeisexecutedfrequentlyandoptimizejustthatcodeforspeed.MultithreadedTheenefitsofmultithreadingarebetterinteractiveresponsivenessandreal-timebehavior.ifyouhaveevertriedtodomultithreadinginanotherlanguage,youwillbepleasantlysurprisedathoweasyitisinJava.ThreadsinJavaalsocantakeadvantageofmultiprocessorsystemsifthebaseoperatingsystemdoesso.Onthedownside,threadimplementationsonthemajorplatformsdifferwidely,andJavamakesnoefforttobeplatformindependentinthisregard.Onlythecodeforcallingmultithreadingremainsthesameacrossmachines;Javaoffloadstheimplementationofmultithreadingtotheunderlyingoperatingsystemorathreadlibrary.Nonetheless,theeaseofmultithreadingisoneofthemainreasonswhyJavaissuchanappealinglanguageforserver-sidedevelopment.DynamicInanumberofways,JavaisamoredynamiclanguagethanCorC++.Itwasdesignedtoadapttoanevolvingenvironment.Librariescanfreelyaddnewmethodsandinstancevariableswithoutanyeffectontheirclients.InJava,findingoutruntimetypeinformationisstraightforward.Thisisanimportantfeatureinthosesituationsinwhichcodeneedstobeaddedtoarunningprogram.AprimeexampleiscodethatisdownloadedfromtheInternettoruninabrowser.InJava1.0,findingoutruntimetypeinformationwasanythingbutstraightforward,butcurrentversionsofJavagivetheprogrammerfullinsightintoboththestructureandbehaviorofitsobjects.Thisisextremelyusefulforsystemsthatneedtoanalyzeobjectsatruntime,suchasJavaGUIbuilders,smartdebuggers,pluggablecomponents,andobjectdatabases.JavaandtheInternetTheideahereissimple:userswilldownloadJavabytecodesfromtheInternetandrunthemontheirownmachines.Javaprogramsthatworkonwebpagesarecalledapplets.Touseanapplet,youneedaJava-enabledwebbrowser,whichwillexecutethebytecodesforyou.BecauseSunislicensingtheJavasourcecodeandinsistingthattherebenochangesinthelanguageandbasiclibrarystructure,aJavaappletshouldrunonanybrowserthatisadvertisedasJava-enabled.Unfortunately,realityhasbeendifferent.VariousversionsofNetscapeandInternetExplorerrundifferentversionsofJava,someofwhichareseriouslyoutdated.ThissorrysituationmadeitincreasinglydifficulttodevelopappletsthattakeadvantageofthemostcurrentJavaversion.Toremedythisproblem,SunhasdevelopedtheJavaPlug-in,atoolthatmakesthenewestJavaruntimeenvironmentavailabletobothNetscapeandInternetExplorerWhentheuserdownloadsanapplet,itworksmuchlikeembeddinganimageinawebpage.Theappletbecomesapartofthepage,andthetextflowsaroundthespaceusedfortheapplet.Thepointis,theimageisalive.Itreactstousercommands,changesitsappearance,andsendsdatabetweenthecomputerpresentingtheappletandthecomputerservingit.agoodexampleofadynamicwebpage—anapplettoviewmolecules—thatcarriesoutsophisticatedcalculations.Byusingthemouse,youcanrotateandzoomeachmoleculetobetterunderstanditsstructure.Thiskindofdirectmanipulationisnotachievablewithstaticwebpages,butappletsmakeitpossible.CommonMisconceptionsAboutJavaThisisalistofsomecommonmisconceptionsaboutJava,alongwithcommentary.JavaisanextensionofHTML.Javaisaprogramminglanguage;HTMLisawaytodescribethestructureofawebpage.TheyhavenothingincommonexceptthatthereareHTMLextensionsforplacingJavaappletsonawebpage.IuseXML,soIdon'tneedJava.Javaisaprogramminglanguage;XMLisawaytodescribedata.YoucanprocessXMLdatawithanyprogramminglanguage,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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)論