




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
中英文對(duì)照外文翻譯文獻(xiàn)(文檔含英文原文和中文翻譯)譯文:Java編程思想BruceEckelJava和因特網(wǎng)事實(shí)上Java不過另一種類型的程序設(shè)計(jì)語(yǔ)言,大家可能會(huì)問它為什么會(huì)如此重要,為什么還有這么多的人認(rèn)為它是計(jì)算機(jī)程序設(shè)計(jì)的一個(gè)里程碑呢?。Java除了可解決傳統(tǒng)的程序設(shè)計(jì)問題以外,還能解決WorldWideWeb(萬(wàn)維網(wǎng))上的編程問題。什么是wbe?Web這個(gè)詞剛開始顯得有些神秘,“沖浪”、“網(wǎng)上存在”以及“主頁(yè)”等都是與之相關(guān)的說法。這些對(duì)于回顧和看清它的本質(zhì)是有幫助的,但在這之前,必須理解客戶機(jī)/服務(wù)器系統(tǒng)的概念,這是充斥著許多令人迷惑的問題的另一方面??蛻魴C(jī)/服務(wù)器計(jì)算戶機(jī)/服務(wù)器系統(tǒng)的主要思想是,在一個(gè)中央信息存儲(chǔ)庫(kù)存放各種類型的數(shù)據(jù),一般情況下在這個(gè)數(shù)據(jù)庫(kù)中,你可以按照人或機(jī)器的需求進(jìn)行分配。由于客戶機(jī)/服務(wù)器的關(guān)鍵概念是信息集中的存儲(chǔ)庫(kù),以至于這些信息可以隨意更改并將其更改后的信息傳遞給客戶。綜上所述,信息存儲(chǔ)庫(kù),軟件分發(fā)信息,信息和軟件所在的機(jī)器(s)被稱為服務(wù)器。軟件安裝在遠(yuǎn)程機(jī)器上,與服務(wù)器通信,獲取信息,處理它,然后將其顯示在機(jī)器上被稱為客戶端。一個(gè)客戶機(jī)/服務(wù)器的關(guān)鍵概念是信息集中的存儲(chǔ)庫(kù),可以改變等,這些變化將傳播出去的信息消費(fèi)者。綜上所述,信息存儲(chǔ)庫(kù),軟件分發(fā)信息,信息和軟件所在的機(jī)器(s)被稱為服務(wù)器。駐留在消費(fèi)機(jī)的軟件,與服務(wù)器通信,獲取信息,處理它,然后將其顯示在消費(fèi)機(jī)器上被稱為客戶端。其實(shí)客戶機(jī)/服務(wù)器的基本概念不那么復(fù)雜。所面臨的問題是一個(gè)服務(wù)器試圖同時(shí)向多個(gè)用戶提供服務(wù)。通常,數(shù)據(jù)庫(kù)管理系統(tǒng)包含在其中,因此,設(shè)計(jì)師能平衡數(shù)據(jù)表的布局優(yōu)化使用。此外,系統(tǒng)通常允許客戶將新信息插入到一個(gè)服務(wù)器。這意味著您必須確??蛻粜聰?shù)據(jù)不侵犯另一個(gè)客戶的新數(shù)據(jù),或者添加新數(shù)據(jù)到數(shù)據(jù)庫(kù)時(shí)數(shù)據(jù)不會(huì)丟失的過程(這就是所謂的交易過程).客戶端軟件發(fā)生改變后,必須經(jīng)過創(chuàng)建,調(diào)試,并安裝在客戶端機(jī)器上,變得比你想象中的更加復(fù)雜和昂貴。存在一個(gè)特殊的問題是要支持多種類型的計(jì)算機(jī)和操作系統(tǒng)。最后,至關(guān)重要的是性能問題:在很多時(shí)候可能有數(shù)百個(gè)客戶同時(shí)向服務(wù)器發(fā)出請(qǐng)求,所以延遲請(qǐng)求是至關(guān)重要的。通常為了減少延遲,程序員將努力處理客戶端發(fā)出的任務(wù),但有時(shí)可以分配給其他機(jī)器的網(wǎng)站,那就是所謂的中間件。(中間件也用于提高可維護(hù)性。)分發(fā)信息的簡(jiǎn)單想法有很多層面上的復(fù)雜性,整個(gè)問題似乎無(wú)可救藥的神秘。然而它的關(guān)鍵之處在于:客戶機(jī)/服務(wù)器對(duì)處理結(jié)果做出粗略的解釋約占整個(gè)編程過程的一半。負(fù)責(zé)接受所有的訂單,信用卡交易數(shù)據(jù)分布stock市場(chǎng),科學(xué)、政府,你的名字。我們想出了在過去是個(gè)體解決個(gè)人問題,發(fā)明了一種新的解決方案。這些都是很難創(chuàng)建和難以使用,和用戶必須為每一個(gè)學(xué)習(xí)一個(gè)新的接口。整個(gè)客戶端/服務(wù)器的問題需要一個(gè)強(qiáng)大的辦法去解決。Web是一個(gè)巨大的服務(wù)器網(wǎng)絡(luò)實(shí)際上是一個(gè)巨大的客戶機(jī)/服務(wù)器系統(tǒng)。有點(diǎn)復(fù)雜的是,因?yàn)樗械姆?wù)器和客戶端存在單一網(wǎng)絡(luò)上。但是你不需要全都了解,因?yàn)槟阍撽P(guān)心的是一次建立與一個(gè)服務(wù)器的連接(即使你可能要在全世界范圍內(nèi)尋找正確的服務(wù)器)。最初它是一個(gè)簡(jiǎn)單的單向過程。你向服務(wù)器發(fā)出請(qǐng)求,然后它給你一個(gè)文件,本機(jī)機(jī)器的軟件(即瀏覽器,客戶端)將解釋和格式化并顯示到本地機(jī)器上。但在開始不久后人們想要做的就不僅僅是從服務(wù)器傳遞網(wǎng)頁(yè)。他們想要獲得完整的客戶機(jī)/服務(wù)器功能,這樣客戶可以將信息反饋給服務(wù)器,例如,在數(shù)據(jù)庫(kù)服務(wù)器上檢索,添加新信息到服務(wù)器,或下訂單(需要特殊安全措施)。我們已經(jīng)看到在網(wǎng)絡(luò)發(fā)展上的這些變化。Web瀏覽器的發(fā)展是一個(gè)巨大的進(jìn)步:它的概念是一條信息可以在任何類型的計(jì)算機(jī)上顯示。然而,原始的瀏覽器仍然相當(dāng)原始,在用戶要求迅速增多后陷入困境。他們的交互不是特別強(qiáng),而且會(huì)阻塞服務(wù)器和因特網(wǎng),因?yàn)槊慨?dāng)你發(fā)出需要編程的請(qǐng)求是,必須將要處理的信息發(fā)送回服務(wù)器??赡苄枰獛酌腌娀驇追昼姇r(shí)間才能找出在發(fā)出請(qǐng)求時(shí)的許多拼寫錯(cuò)誤的地方。因?yàn)闉g覽器只是一個(gè)查看程序所以無(wú)法執(zhí)行最簡(jiǎn)單的計(jì)算任務(wù)。(另一方面,它是安全的,因?yàn)樗鼰o(wú)法在本地機(jī)器上執(zhí)行任何程序,包括細(xì)菌或病毒)。為了解決這個(gè)問題,人們采取了不同的方法。首先,對(duì)圖形標(biāo)準(zhǔn)進(jìn)行改進(jìn),使得瀏覽器能顯示更好的動(dòng)畫和視頻。為解決剩下的問題可以通過在瀏覽器中運(yùn)行程序。這就是所謂的客戶端編程。客戶端編程Web最初的服務(wù)器--瀏覽器的設(shè)計(jì)是為了提供交互式內(nèi)容,但是,交互性是完全由服務(wù)器提供。服務(wù)器為客戶端瀏覽器生成靜態(tài)頁(yè)面,靜態(tài)網(wǎng)頁(yè)將簡(jiǎn)單地解釋并顯示出來(lái).基本超文本標(biāo)記語(yǔ)言(HTML)包含簡(jiǎn)單的數(shù)據(jù)收集機(jī)制:文字輸入框,復(fù)選框、單選框、列表和下拉列表,還有一個(gè)按鈕,只能用于重置表單上的數(shù)據(jù)以便回傳到服務(wù)器.提交的信息通過所有的Web服務(wù)器上通用網(wǎng)關(guān)接口(CGI)回傳。包含在提交中的文本會(huì)告訴CGI如何處理它。最常見的操作是位于服務(wù)器上運(yùn)行的一個(gè)程序,通常稱為“目錄?!?如果按下在地址窗口頂部的瀏覽器網(wǎng)頁(yè)上看到的按鈕時(shí),有時(shí)能看到“目錄”內(nèi)所有官樣文章。)大多數(shù)語(yǔ)言都可以用來(lái)編寫程序。通常會(huì)選擇Perl,因?yàn)樗菫槲谋咎幚砗徒忉尪O(shè)計(jì)的,所以它可以安裝在任何服務(wù)器上,無(wú)論是什么處理器和操作系統(tǒng)。今天許多強(qiáng)大的網(wǎng)站都是嚴(yán)格地建立在CGI的基礎(chǔ)上,事實(shí)上,你可以用CGI做任何事情。然而,Web站點(diǎn)建立在CGI程序上維護(hù)就突然變得過于復(fù)雜,還有響應(yīng)時(shí)間的問題。CGI程序的響應(yīng)取決于需要發(fā)送多少數(shù)據(jù),以及服務(wù)器和互聯(lián)網(wǎng)上的負(fù)擔(dān)有多重。(而且開始一個(gè)CGI程序往往是緩慢的。)網(wǎng)絡(luò)的最初設(shè)計(jì)者沒有預(yù)見這帶寬將會(huì)多么迅速地被人們開發(fā)出的各種應(yīng)用程序耗盡。例如,任何形式的動(dòng)態(tài)圖形幾乎是不可能連貫地顯示,因?yàn)楸仨殑?chuàng)建一個(gè)圖形交換格式(GIF)文件并從服務(wù)器轉(zhuǎn)移到客戶機(jī),再將圖形的變化從服務(wù)器傳遞給客戶。此外,毫無(wú)疑問,大家已經(jīng)經(jīng)歷過數(shù)據(jù)驗(yàn)證的過程,你按下頁(yè)面上的提交按鈕,數(shù)據(jù)被運(yùn)送回服務(wù)器;服務(wù)器啟動(dòng)一個(gè)CGI程序發(fā)現(xiàn)錯(cuò)誤,格式化HTML網(wǎng)頁(yè),反饋出現(xiàn)的錯(cuò)誤,然后將頁(yè)面發(fā)送回去;大家必須備份頁(yè)面,再試一次。這不僅緩慢而且繁瑣。解決的辦法就是客戶端的程序設(shè)計(jì)。本節(jié)的其余部分,將對(duì)這個(gè)問題進(jìn)行概述,介紹在客戶端編程的方法。插件朝客戶端編程邁進(jìn)的時(shí)候,最重要的一個(gè)問題就是插件的設(shè)計(jì)。這是一個(gè)為方便程序員將新功能添加到瀏覽器的方法,用戶只要下載一段代碼,插入到瀏覽器中適當(dāng)?shù)奈恢?。它告訴瀏覽器,“從現(xiàn)在開始你可以執(zhí)行這個(gè)新活動(dòng)。”(你只需要下載插件一次。)一些快速和強(qiáng)大的行為是通過插件添加到瀏覽器的,但是編寫一個(gè)插件并不是一件容易的事情,也不是我們建立一個(gè)特定網(wǎng)站的過程中想要做的事情。對(duì)與客戶端程序設(shè)計(jì)來(lái)說,插件的價(jià)值在于,它允許專業(yè)程序設(shè)計(jì)員開發(fā)擴(kuò)展并將這些擴(kuò)展添加到瀏覽器不必經(jīng)過瀏覽器制造商的許可。因此,插件提供了一個(gè)“后門”,允許創(chuàng)建新的客戶端設(shè)計(jì)語(yǔ)言(盡管不是所有的語(yǔ)言都能做為插件實(shí)現(xiàn))腳本語(yǔ)言插件導(dǎo)致了瀏覽器腳本語(yǔ)言的發(fā)展。通過腳本語(yǔ)言,可將客戶端程序的源代碼直接嵌入到HTML頁(yè)面,而對(duì)那種語(yǔ)言進(jìn)行解釋的插件會(huì)在HTML頁(yè)面顯示出來(lái)的時(shí)候被自動(dòng)激活。腳本語(yǔ)言往往是相當(dāng)容易理解的,因?yàn)樗麄冎皇俏谋?HTML頁(yè)面的一部分,只要向服務(wù)器發(fā)出對(duì)那個(gè)頁(yè)面的一次請(qǐng)求就可以非??斓妮d入.。代價(jià)是我們的代碼全都暴露出來(lái)被所有人都看到了。,然而,通常來(lái)說我們不會(huì)用腳本語(yǔ)言做非常復(fù)雜的事,所以這不是太大的阻礙。期待中可以支持沒有插件的Web瀏覽器一種腳本語(yǔ)言是JavaScript(這只有一個(gè)地方和java有相似之處,我們需要通過其他途徑學(xué)習(xí)使用它。被命名為Java只是一種營(yíng)銷策略)不幸的是,大多數(shù)Web瀏覽器一開始從另一個(gè)Web瀏覽器以不同的方式實(shí)現(xiàn)JavaScript,甚至是來(lái)自他們自己的其他版本的。ECMAScript有助于推進(jìn)JavaScript的標(biāo)準(zhǔn)化形式的形成,但已經(jīng)與各種瀏覽器脫軌很長(zhǎng)一段時(shí)間了(因?yàn)樗呀?jīng)沒有用了所以微軟推出自己的VBScript格式,也有與JavaScript的模糊相似之處)。一般來(lái)說,您必須在JavaScript的一種程序的最小公因子以便能夠在所有瀏覽器上運(yùn)行。處理錯(cuò)誤和調(diào)試JavaScript只能被描述為一片混亂。證明是困難的,最近才有人創(chuàng)建一塊真正復(fù)雜的JavaScript(谷歌GMail),需要強(qiáng)大的奉獻(xiàn)精神和專業(yè)知識(shí)。內(nèi)部Web瀏覽器使用的腳本語(yǔ)言是真真正面向解決特定類型問題的,其中主要是創(chuàng)造更加豐富和更具交互式圖形的用戶界面(gui)。然而,腳本語(yǔ)言可以解決80%在客戶端編程中所遇到的問題。你所遇到的問題完全可能在這80%里,而且腳本語(yǔ)言可以更簡(jiǎn)單和更快速地發(fā)展,所以在考慮其他更復(fù)雜的方案之前如Java編程,首先應(yīng)想一下腳本語(yǔ)言是否可行。Java如果一種腳本語(yǔ)言可以解決80%的客戶端編程的問題,那其他的20的“高難度的問題”又該怎么辦呢?流行的一種解決方案是java。它不僅是一個(gè)功能強(qiáng)大而且安全,而且是跨平臺(tái)的、與國(guó)際通用的的編程語(yǔ)言,但是java還在不斷地?cái)U(kuò)展,提供的語(yǔ)言特性和庫(kù)能夠很好地處理在傳統(tǒng)的編程語(yǔ)言中不能處理的問題,如多線程操作、數(shù)據(jù)庫(kù)訪問、網(wǎng)絡(luò)編程和分布式計(jì)算。Java允許通過applet和JavaWebStar進(jìn)行客戶端編程。applet是一種很小的程序,將只運(yùn)行在一個(gè)Web瀏覽器上。applet自動(dòng)下載網(wǎng)頁(yè)的一部分(例如,正如一個(gè)圖形自動(dòng)下載)。當(dāng)applet被激活時(shí),它執(zhí)行一個(gè)程序。它的優(yōu)點(diǎn)是,用戶需要客戶端軟件的時(shí)候,它就會(huì)很快為你提供一種自動(dòng)分發(fā)服務(wù)器的客戶端軟件。用戶能很方便獲得最新版本成功的重新安裝客戶端軟件。由于Java的設(shè)計(jì)原理,程序員只需要?jiǎng)?chuàng)建一個(gè)項(xiàng)目,那個(gè)程序能在所有計(jì)算機(jī)瀏覽器以及安裝Java解釋器的瀏覽器中運(yùn)行。(這包括絕大多數(shù)機(jī)器的安全。)由于Java是一種成熟的編程語(yǔ)言,你可以盡可能多的在客戶端工作之前和服務(wù)器發(fā)出請(qǐng)求之后工作。例如,您不需要通過互聯(lián)網(wǎng)發(fā)送一個(gè)請(qǐng)求形式由服務(wù)器發(fā)現(xiàn)你一個(gè)日期或其他參數(shù)的錯(cuò)誤。而且計(jì)算機(jī)的客戶端可以快速的做校驗(yàn)工作替代你在計(jì)算機(jī)前等待服務(wù)器的響應(yīng)。不僅直接提高了速度和響應(yīng)能力,而且一般可以減少網(wǎng)絡(luò)流量和服務(wù)器負(fù)擔(dān),防止整個(gè)互聯(lián)網(wǎng)運(yùn)行速度變慢。注:本文摘自《JAVA編程思想》一書中的第一章原文:ThinkinginJavaJavaandtheInternetIfJavais,infact,yetanothercomputerprogramminglanguage,youmayquestionwhyitissoimportantandwhyitisbeingpromotedasarevolutionarystepincomputerprogramming.Theanswerisn’timmediatelyobviousifyou’recomingfromatraditionalprogrammingperspective.AlthoughJavaisveryusefulforsolvingtraditionalstandaloneprogrammingproblems,itisalsoimportantbecauseitsolvesprogrammingproblemsfortheWorldWideWeb.WhatistheWeb?TheWebcanseemabitofamysteryatfirst,withallthistalkof“surfing,”“presence,”and“homepages.”It’shelpfultostepbackandseewhatitreallyis,buttodothisyoumustunderstandclient/serversystems,anotheraspectofcomputingthat’sfullofconfusingissues.Client/servercomputingTheprimaryideaofaclient/serversystemisthatyouhaveacentralrepositoryofinformation—somekindofdata,usuallyinadatabase—thatyouwanttodistributeondemandtosomesetofpeopleormachines.Akeytotheclient/serverconceptisthattherepositoryofinformationiscentrallylocatedsothatitcanbechangedandsothatthosechangeswillpropagateouttotheinformationconsumers.Takentogether,theinformationrepository,thesoftwarethatdistributestheinformation,andthemachine(s)wheretheinformationandsoftwareresidearecalled“theserver.”Thesoftwarethatresidesontheconsumermachine,communicateswiththeserver,fetchestheinformation,processesit,andthendisplaysitontheconsumermachineiscalledtheclient.Thebasicconceptofclient/servercomputing,then,isnotsocomplicated.Theproblemsarisebecauseyouhaveasingleservertryingtoservemanyclientsatonce.Generally,adatabasemanagementsystemisinvolved,sothedesigner“balances”thelayoutofdataintotablesforoptimaluse.Inaddition,systemsoftenallowaclienttoinsertnewinformationintoaserver.Thismeansyoumustensurethatoneclient’snewdatadoesn’twalkoveranotherclient’snewdata,orthatdataisn’tlostintheprocessofaddingittothedatabase(thisiscalledtransactionprocessing).Asclientsoftwarechanges,itmustbebuilt,debugged,andinstalledontheclientmachines,whichturnsouttobemorecomplicatedandexpensivethanyoumightthink.It’sespeciallyproblematictosupportmultipletypesofcomputersandoperatingsystems.Finally,there’stheall-importantperformanceissue:Youmighthavehundredsofclientsmakingrequestsofyourserveratanymoment,soasmalldelaycanbecritical.Tominimizelatency,programmersworkhardtooffloadprocessingtasks,oftentotheclientmachine,butsometimestoothermachinesattheserversite,usingso-calledmiddleware.(Middlewareisalsousedtoimprovemaintainability.)Thesimpleideaofdistributinginformationhassomanylayersofcomplexitythatthewholeproblemcanseemhopelesslyenigmatic.Andyetit’scrucial:Client/servercomputingaccountsforroughlyhalfofallprogrammingactivities.It’sresponsibleforeverythingfromtakingordersandcredit-cardtransactionstothedistributionofanykindofdata—stockmarket,scientific,government,younameit.Whatwe’vecomeupwithinthepastisindividualsolutionstoindividualproblems,inventinganewsolutioneachtime.Thesewerehardtocreateandhardtouse,andtheuserhadtolearnanewinterfaceforeachone.Theentireclient/serverproblemneededtobesolvedinabigway.TheWebasagiantserverTheWebisactuallyonegiantclient/serversystem.It’sabitworsethanthat,sinceyouhavealltheserversandclientscoexistingonasinglenetworkatonce.Youdon’tneedtoknowthat,becauseallyoucareaboutisconnectingtoandinteractingwithoneserveratatime(eventhoughyoumightbehoppingaroundtheworldinyoursearchforthecorrectserver).Initiallyitwasasimpleone-wayprocess.Youmadearequestofaserverandithandedyouafile,whichyourmachine’sbrowsersoftware(i.e.,theclient)wouldinterpretbyformattingontoyourlocalmachine.Butinshortorderpeoplebeganwantingtodomorethanjustdeliverpagesfromaserver.Theywantedfullclient/servercapabilitysothattheclientcouldfeedinformationbacktotheserver,forexample,tododatabaselookupsontheserver,toaddnewinformationtotheserver,ortoplaceanorder(whichrequiresspecialsecuritymeasures).Thesearethechangeswe’vebeenseeinginthedevelopmentoftheWeb.TheWebbrowserwasabigstepforward:theconceptthatonepieceofinformationcanbedisplayedonanytypeofcomputerwithoutchange.However,theoriginalbrowserswerestillratherprimitiveandrapidlyboggeddownbythedemandsplacedonthem.Theyweren’tparticularlyinteractive,andtendedtoclogupboththeserverandtheInternetbecausewheneveryouneededtodosomethingthatrequiredprogrammingyouhadtosendinformationbacktotheservertobeprocessed.Itcouldtakemanysecondsorminutestofindoutyouhadmisspelledsomethinginyourrequest.Sincethebrowserwasjustavieweritcouldn’tperformeventhesimplestcomputingtasks.(Ontheotherhand,itwassafe,becauseitcouldn’texecuteanyprogramsonyourlocalmachinethatmightcontainbugsorviruses.)Tosolvethisproblem,differentapproacheshavebeentaken.Tobeginwith,graphicsstandardshavebeenenhancedtoallowbetteranimationandvideowithinbrowsers.Theremainderoftheproblemcanbesolvedonlybyincorporatingtheabilitytorunprogramsontheclientend,underthebrowser.Thisiscalledclient-sideprogramming.Client-sideprogrammingTheWeb’sinitialserver-browserdesignprovidedforinteractivecontent,buttheinteractivitywascompletelyprovidedbytheserver.Theserverproducedstaticpagesfortheclientbrowser,whichwouldsimplyinterpretanddisplaythem.BasicHyperTextMarkupLanguage(HTML)containssimplemechanismsfordatagathering:text-entryboxes,checkboxes,radioboxes,listsanddropdownlists,aswellasabuttonthatcouldonlybeprogrammedtoresetthedataontheformor“submit”thedataontheformbacktotheserver.ThissubmissionpassesthroughtheCommonGatewayInterface(CGI)providedonallWebservers.ThetextwithinthesubmissiontellsCGIwhattodowithit.Themostcommonactionistorunaprogramlocatedontheserverinadirectorythat’stypicallycalled“cgi-bin.”(IfyouwatchtheaddresswindowatthetopofyourbrowserwhenyoupushabuttononaWebpage,youcansometimessee“cgi-bin”withinallthegobbledygookthere.)Theseprogramscanbewritteninmostlanguages.Perlhasbeenacommonchoicebecauseitisdesignedfortextmanipulationandisinterpreted,soitcanbeinstalledonanyserverregardlessofprocessororoperatingsystem.However,Python(www.P)hasbeenmakinginroadsbecauseofitsgreaterpowerandsimplicity.ManypowerfulWebsitestodayarebuiltstrictlyonCGI,andyoucaninfactdonearlyanythingwithCGI.However,WebsitesbuiltonCGIprogramscanrapidlybecomeoverlycomplicatedtomaintain,andthereisalsotheproblemofresponsetime.TheresponseofaCGIprogramdependsonhowmuchdatamustbesent,aswellastheloadonboththeserverandtheInternet.(Ontopofthis,startingaCGIprogramtendstobeslow.)TheinitialdesignersoftheWebdidnotforeseehowrapidlythisbandwidthwouldbeexhaustedforthekindsofapplicationspeopledeveloped.Forexample,anysortofdynamicgraphingisnearlyimpossibletoperformwithconsistencybecauseaGraphicsInterchangeFormat(GIF)filemustbecreatedandmovedfromtheservertotheclientforeachversionofthegraph.Inaddition,you’venodoubtexperiencedtheprocessofdatavalidationforaWebinputform.Youpressthesubmitbuttononapage;thedataisshippedbacktotheserver;theserverstartsaCGIprogramthatdiscoversanerror,formatsanHTMLpageinformingyouoftheerror,andthensendsthepagebacktoyou;youmustthenbackupapageandtryagain.Notonlyisthisslow,it’sinelegant.Thesolutionisclient-sideprogramming.MostdesktopcomputersthatrunWebbrowsersarepowerfulenginescapableofdoingvastwork,andwiththeoriginalstaticHTMLapproachtheyaresittingthere,justidlywaitingfortheservertodishupthenextpage.Client-sideprogrammingmeansthattheWebbrowserisharnessedtodowhateverworkitcan,andtheresultfortheuserisamuchspeedierandmoreinteractiveexperienceatyourWebsite.Theproblemwithdiscussionsofclient-sideprogrammingisthattheyaren’tverydifferentfromdiscussionsofprogrammingingeneral.Theparametersarealmostthesame,buttheplatformisdifferent;aWebbrowserislikealimitedoperatingsystem.Intheend,youmuststillprogram,andthisaccountsforthedizzyingarrayofproblemsandsolutionsproducedbyclient-sideprogramming.Therestofthissectionprovidesanoverviewoftheissuesandapproachesinclient-sideprogramming.Plug-insOneofthemostsignificantstepsforwardinclient-sideprogrammingisthedevelopmentoftheplug-in.Thisisawayforaprogrammertoaddnewfunctionalitytothebrowserbydownloadingapieceofcodethatplugsitselfintotheappropriatespotinthebrowser.Ittellsthebrowser,“Fromnowonyoucanperformthisnewactivity.”(Youneedtodownloadtheplug-inonlyonce.)Somefastandpowerfulbehaviorisaddedtobrowsersviaplug-ins,butwritingaplug-inisnotatrivialtask,andisn’tsomethingyou’dwanttodoaspartoftheprocessofbuildingaparticularsite.Thevalueoftheplug-inforclient-sideprogrammingisthatitallowsanexpertprogrammertodevelopextensionsandaddthoseextensionstoabrowserwithoutthepermissionofthebrowsermanufacturer.Thus,plug-insprovidea“backdoor”thatallowsthecreationofnewclient-sideprogramminglanguages(althoughnotalllanguagesareimplementedasplug-ins).ScriptinglanguagesPlug-insresultedinthedevelopmentofbrowserscriptinglanguages.Withascriptinglanguage,youembedthesourcecodeforyourclient-sideprogramdirectlyintotheHTMLpage,andtheplug-inthatinterpretsthatlanguageisautomaticallyactivatedwhiletheHTMLpageisbeingdisplayed.Scriptinglanguagestendtobereasonablyeasytounderstandand,becausetheyaresimplytextthatispartofanHTMLpage,theyloadveryquicklyaspartofthesingleserverhitrequiredtoprocurethatpage.Thetrade-offisthatyourcodeisexposedforeveryonetosee(andsteal).Generally,however,youaren’tdoingamazinglysophisticatedthingswithscriptinglanguages,sothisisnottoomuchofahardship.OnescriptinglanguagethatyoucanexpectaWebbrowsertosupportwithoutaplug-inisJavaScript(thishasonlyapassingresemblancetoJavaandyou’llhavetoclimbanadditionallearningcurvetouseit.ItwasnamedthatwayjusttograbsomeofJava’smarketingmomentum).Unfortunately,mostWebbrowsersoriginallyimplementedJavaScriptinadifferentwayfromtheotherWebbrowsers,andevenfromotherversionsofthemselves.ThestandardizationofJavaScriptintheformofECMAScripthashelped,butithastakenalongtimeforthevariousbrowserstocatchup(anditdidn’thelpthatMicrosoftwaspushingitsownagendaintheformofVBScript,whichalsohadvaguesimilaritiestoJavaScript).Ingeneral,youmustprograminakindofleast-common-denominatorformofJavaScriptinordertobeabletorunonallbrowsers.DealingwitherrorsanddebuggingJavaScriptcanonlybedescribedasamess.Asproofofitsdifficulty,onlyrecentlyhasanyonecreatedatrulycomplexpieceofJavaScript(Google,inGMail),andthatrequiredexcessivededicationandexpertise.ThispointsoutthatthescriptinglanguagesusedinsideWebbrowsersarereallyintendedtosolvespecifictypesofproblems,primarilythecreationofricherandmoreinteractivegraphicaluserinterfaces(GUIs).However,ascriptinglanguagemightsolve80percentoftheproblemsencounteredinclient-sideprogramming.Yourproblemsmightverywellfitcompletelywithinthat80percent,andsincescriptinglanguagescanalloweasierandfasterdevelopment,youshouldprobablyconsiderascriptinglanguagebeforelookingatamoreinvolvedsolutionsuchasJavaprogramming.JavaIfascriptinglanguagecansolve80percentoftheclient-sideprogrammingproblems,whatabouttheother20percent—the“reallyhardstuff”?Java
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 自建樓房買賣合同
- 房產(chǎn)抵押反擔(dān)保合同
- 企業(yè)信息化管理系統(tǒng)建設(shè)與維護(hù)合同
- 體育賽事活動(dòng)策劃與執(zhí)行合同
- 養(yǎng)豬場(chǎng)生產(chǎn)經(jīng)營(yíng)合同
- 重慶護(hù)理職業(yè)學(xué)院《化工儀表自動(dòng)化》2023-2024學(xué)年第二學(xué)期期末試卷
- Unit 2 Topic 1 Section C 教學(xué)設(shè)計(jì) 2024-2025學(xué)年仁愛科普版八年級(jí)英語(yǔ)上冊(cè)
- 沈陽(yáng)科技學(xué)院《漆畫創(chuàng)作》2023-2024學(xué)年第二學(xué)期期末試卷
- 《人的正確的思想從哪里來(lái)》教學(xué)設(shè)計(jì)
- 哈爾濱學(xué)院《文化創(chuàng)意理論與實(shí)踐》2023-2024學(xué)年第二學(xué)期期末試卷
- 北師大版數(shù)學(xué)八年級(jí)上冊(cè)1.1探索勾股定理 同步練習(xí)【基礎(chǔ)版】(附答案解析)
- 《會(huì)計(jì)信息系統(tǒng)應(yīng)用》-課件 王新惠 模塊二 供應(yīng)鏈管理系統(tǒng)
- 美容院會(huì)員積分營(yíng)銷方案
- 水利水電工程金屬結(jié)構(gòu)制作與安裝安全技術(shù)規(guī)程
- DL5000-火力發(fā)電廠設(shè)計(jì)技術(shù)規(guī)程
- 第一節(jié)-原核生物與真核生物DNA的復(fù)制課件
- 2024年4月自考03708中國(guó)近現(xiàn)代史綱要試題
- 深部熱療與免疫治療聯(lián)合治療腫瘤
- 2024年貴銀金融租賃公司招聘筆試參考題庫(kù)附帶答案詳解
- 眼電生理在視網(wǎng)膜疾病診斷中的應(yīng)用
- 《汽車電氣設(shè)備構(gòu)造與維修》 (第4版) 課件 第四章 發(fā)動(dòng)機(jī)電器
評(píng)論
0/150
提交評(píng)論