国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Java和因特網(wǎng)

2019-11-18 13:22:58
字體:
供稿:網(wǎng)友

  既然java不過另一種類型的程序設(shè)計(jì)語(yǔ)言,大家可能會(huì)希奇它為什么值得如此重視,為什么還有這么多的人認(rèn)為它是計(jì)算機(jī)程序設(shè)計(jì)的一個(gè)里程碑呢?假如您來自一個(gè)傳統(tǒng)的程序設(shè)計(jì)背景,那么答案在剛開始的時(shí)候并不是很明顯。Java除了可解決傳統(tǒng)的程序設(shè)計(jì)問題以外,還能解決World Wide Web(萬維網(wǎng))上的編程問題。
  1 什么是Web?
  Web這個(gè)詞剛開始顯得有些泛泛,似乎“沖浪”、“網(wǎng)上存在”以及“主頁(yè)”等等都和它拉上了一些關(guān)系。甚至還有一種“Internet綜合癥”的說法,對(duì)許多人狂熱的上網(wǎng)行為提出了質(zhì)疑。我們?cè)谶@里有必要作一些深入的探討,但在這之前,必須理解客戶機(jī)/服務(wù)器系統(tǒng)的概念,這是充斥著許多令人迷惑的問題的又一個(gè)計(jì)算領(lǐng)域。
  1). 客戶機(jī)/服務(wù)器計(jì)算
  客戶機(jī)/服務(wù)器系統(tǒng)的基本思想是我們能在一個(gè)統(tǒng)一的地方集中存放信息資源。一般將數(shù)據(jù)集中保存在某個(gè)數(shù)據(jù)庫(kù)中,根據(jù)其他人或者機(jī)器的請(qǐng)求將信息投遞給對(duì)方。客戶機(jī)/服務(wù)器概述的一個(gè)要害在于信息是“集中存放”的。所以我們能方便地更改信息,然后將修改過的信息發(fā)放給信息的消費(fèi)者。將各種元素集中到一起,信息倉(cāng)庫(kù)、用于投遞信息的軟件以及信息及軟件所在的那臺(tái)機(jī)器,它們聯(lián)合起來便叫作“服務(wù)器”(Server)。而對(duì)那些駐留在遠(yuǎn)程機(jī)器上的軟件,它們需要與服務(wù)器通信,取回信息,進(jìn)行適當(dāng)?shù)奶幚恚缓笤谶h(yuǎn)程機(jī)器上顯示出來,這些就叫作“客戶”(Client)。
  這樣看來,客戶機(jī)/服務(wù)器的基本概念并不復(fù)雜。這里要注重的一個(gè)主要問題是單個(gè)服務(wù)器需要同時(shí)向多個(gè)客戶提供服務(wù)。在這一機(jī)制中,通常少不了一套數(shù)據(jù)庫(kù)治理系統(tǒng),使設(shè)計(jì)人員能將數(shù)據(jù)布局封裝到表格中,以獲得最優(yōu)的使用。除此以外,系統(tǒng)經(jīng)常答應(yīng)客戶將新信息插入一個(gè)服務(wù)器。這意味著必須確保客戶的新數(shù)據(jù)不會(huì)與其他客戶的新數(shù)據(jù)沖突,或者說需要保證那些數(shù)據(jù)在加入數(shù)據(jù)庫(kù)的時(shí)候不會(huì)丟失(用數(shù)據(jù)庫(kù)的術(shù)語(yǔ)來說,這叫作“事務(wù)處理”)。客戶軟件發(fā)生了改變之后,它們必須在客戶機(jī)器上構(gòu)建、調(diào)試以及安裝。所有這些會(huì)使問題變得比我們一般想象的復(fù)雜得多。另外,對(duì)多種類型的計(jì)算機(jī)和操作系統(tǒng)的支持也是一個(gè)大問題。最后,性能的問題顯得尤為重要:可能會(huì)有數(shù)百個(gè)客戶同時(shí)向服務(wù)器發(fā)出請(qǐng)求。所以任何微小的延誤都是不能忽視的。為盡可能緩解潛伏的問題,程序員需要謹(jǐn)慎地分散任務(wù)的處理負(fù)擔(dān)。一般可以考慮讓客戶機(jī)負(fù)擔(dān)部分處理任務(wù),但有時(shí)亦可分派給服務(wù)器所在地的其他機(jī)器,那些機(jī)器亦叫作“中間件”(中間件也用于改進(jìn)對(duì)系統(tǒng)的維護(hù))。
  所以在具體實(shí)現(xiàn)的時(shí)候,其他人發(fā)布信息這樣一個(gè)簡(jiǎn)單的概念可能變得異常復(fù)雜。有時(shí)甚至?xí)谷水a(chǎn)生完全無從著手的感覺。客戶機(jī)/服務(wù)器的概念在這時(shí)就可以大顯身手了。事實(shí)上,大約有一半的程序設(shè)計(jì)活動(dòng)都可以采用客戶機(jī)/服務(wù)器的結(jié)構(gòu)。這種系統(tǒng)可負(fù)責(zé)從處理訂單及信用卡交易,一直到發(fā)布各類數(shù)據(jù)的方方面面的任務(wù)——股票市場(chǎng)、科學(xué)研究、政府運(yùn)作等等。在過去,我們一般為單獨(dú)的問題采取單獨(dú)的解決方案;每次都要設(shè)計(jì)一套新方案。這些方案無論創(chuàng)建還是使用都比較困難,用戶每次都要學(xué)習(xí)和適應(yīng)新界面。客戶機(jī)/服務(wù)器問題需要從根本上加以變革!
  2). Web是一個(gè)巨大的服務(wù)器
  Web實(shí)際就是一套規(guī)模巨大的客戶機(jī)/服務(wù)器系統(tǒng)。但它的情況要復(fù)雜一些,因?yàn)樗蟹?wù)器和客戶都同時(shí)存在于單個(gè)網(wǎng)絡(luò)上面。但我們沒必要了解更進(jìn)一步的細(xì)節(jié),因?yàn)槲ㄒ灰P(guān)心的就是一次建立同一個(gè)服務(wù)器的連接,并同它打交道(即使可能要在全世界的范圍內(nèi)搜索正確的服務(wù)器)。
  最開始的時(shí)候,這是一個(gè)簡(jiǎn)單的單向操作過程。我們向一個(gè)服務(wù)器發(fā)出請(qǐng)求,它向我們回傳一個(gè)文件,由于本機(jī)的瀏覽器軟件(亦即“客戶”或“客戶程序”)負(fù)責(zé)解釋和格式化,并在我們面前的屏幕上正確地顯示出來。但人們不久就不滿足于只從一個(gè)服務(wù)器傳遞網(wǎng)頁(yè)。他們希望獲得完全的客戶機(jī)/服務(wù)器能力,使客戶(程序)也能反饋一些信息到服務(wù)器。比如希望對(duì)服務(wù)器上的數(shù)據(jù)庫(kù)進(jìn)行檢索,向服務(wù)器添加新信息,或者下一份訂單等等(這也提供了比以前的系統(tǒng)更高的安全要求)。在Web的發(fā)展過程中,我們可以很清楚地看出這些令人心喜的變化。
  Web瀏覽器的發(fā)展終于邁出了重要的一步:某個(gè)信息可在任何類型的計(jì)算機(jī)上顯示出來,毋需任何改動(dòng)。然而,瀏覽器仍然顯得很原始,在用戶迅速增多的要求面前顯得有些力不從心。它們的交互能力不夠強(qiáng),而且對(duì)服務(wù)器和因特網(wǎng)都造成了一定程度的干擾。這是由于每次采取一些要求編程的操作時(shí),必須將信息反饋回服務(wù)器,在服務(wù)器那一端進(jìn)行處理。所以完全可能需要等待數(shù)秒乃至數(shù)分鐘的時(shí)間才會(huì)發(fā)現(xiàn)自己剛才拼錯(cuò)了一個(gè)單詞。由于瀏覽器只是一個(gè)純粹的查看程序,所以連最簡(jiǎn)單的計(jì)算任務(wù)都不能進(jìn)行(當(dāng)然在另一方面,它也顯得非常安全,因?yàn)椴荒茉诒緳C(jī)上面執(zhí)行任何程序,避開了程序錯(cuò)誤或者病毒的騷擾)。
  為解決這個(gè)問題,人們采取了許多不同的方法。最開始的時(shí)候,人們對(duì)圖形標(biāo)準(zhǔn)進(jìn)行了改進(jìn),使瀏覽器能顯示更好的動(dòng)畫和視頻。為解決剩下的問題,唯一的辦法就是在客戶端(瀏覽器)內(nèi)運(yùn)行程序。這就叫作“客戶端編程”,它是對(duì)傳統(tǒng)的“服務(wù)器端編程”的一個(gè)非常重要的拓展。
  2 客戶端編程(見注釋)
  Web最初采用的“服務(wù)器-瀏覽器”方案可提供交互式內(nèi)容,但這種交互能力完全由服務(wù)器提供,為服務(wù)器和因特網(wǎng)帶來了不小的負(fù)擔(dān)。服務(wù)器一般為客戶瀏覽器產(chǎn)生靜態(tài)網(wǎng)頁(yè),由后者簡(jiǎn)單地解釋并顯示出來。基本Html語(yǔ)言提供了簡(jiǎn)單的數(shù)據(jù)收集機(jī)制:文字輸入框、復(fù)選框、單選鈕、列表以及下拉列表等,另外還有一個(gè)按鈕,只能由程序規(guī)定重新設(shè)置表單中的數(shù)據(jù),以便回傳給服務(wù)器。用戶提交的信息通過所有Web服務(wù)器均能支持的“通用網(wǎng)關(guān)接口”(CGI)回傳到服務(wù)器。包含在提交數(shù)據(jù)中的文字指示CGI該如何操作。最常見的行動(dòng)是運(yùn)行位于服務(wù)器的一個(gè)程序。那個(gè)程序一般保存在一個(gè)名為“cgi-bin”的目錄中(按下Web頁(yè)內(nèi)的一個(gè)按鈕時(shí),請(qǐng)注重一下瀏覽器頂部的地址窗,經(jīng)常都能發(fā)現(xiàn)“cgi-bin”的字樣)。大多數(shù)語(yǔ)言都可用來編制這些程序,但其中最常見的是Perl。這是由于Perl是專為文字的處理及解釋而設(shè)計(jì)的,所以能在任何服務(wù)器上安裝和使用,無論采用的處理器或操作系統(tǒng)是什么。
  [注釋]:本節(jié)內(nèi)容改編自某位作者的一篇文章。那篇文章最早出現(xiàn)在位于www.mainsPRing.com的Mainspring上。本節(jié)的采用已征得了對(duì)方的同意。
  今天的許多Web站點(diǎn)都嚴(yán)格地建立在CGI的基礎(chǔ)上,事實(shí)上幾乎所有事情都可用CGI做到。唯一的問題就是響應(yīng)時(shí)間。CGI程序的響應(yīng)取決于需要傳送多少數(shù)據(jù),以及服務(wù)器和因特網(wǎng)兩方面的負(fù)擔(dān)有多重(而且CGI程序的啟動(dòng)比較慢)。Web的早期設(shè)計(jì)者并未預(yù)料到當(dāng)初綽綽有余的帶寬很快就變得不夠用,這正是大量應(yīng)用充斥網(wǎng)上造成的結(jié)果。例如,此時(shí)任何形式的動(dòng)態(tài)圖形顯示都幾乎不能連貫地顯示,因?yàn)榇藭r(shí)必須創(chuàng)建一個(gè)GIF文件,再將圖形的每種變化從服務(wù)器傳遞給客戶。而且大家應(yīng)該對(duì)輸入表單上的數(shù)據(jù)校驗(yàn)有著深刻的體會(huì)。原來的方法是我們按下網(wǎng)頁(yè)上的提交按鈕(Submit);數(shù)據(jù)回傳給服務(wù)器;服務(wù)器啟動(dòng)一個(gè)CGI程序,檢查用戶輸入是否有錯(cuò);格式化一個(gè)HTML頁(yè),通知可能碰到的錯(cuò)誤,并將這個(gè)頁(yè)回傳給我們;隨后必須回到原先那個(gè)表單頁(yè),再輸入一遍。這種方法不僅速度非常慢,也顯得非常繁瑣。
  解決的辦法就是客戶端的程序設(shè)計(jì)。運(yùn)行Web瀏覽器的大多數(shù)機(jī)器都擁有足夠強(qiáng)的能力,可進(jìn)行其他大量工作。與此同時(shí),原始的靜態(tài)HTML方法仍然可以采用,它會(huì)一直等到服務(wù)器送回下一個(gè)頁(yè)。客戶端編程意味著Web瀏覽器可獲得更充分的利用,并可有效改善Web服務(wù)器的交互(互動(dòng))能力。
  對(duì)客戶端編程的討論與常規(guī)編程問題的討論并沒有太大的區(qū)別。采用的參數(shù)肯定是相同的,只是運(yùn)行的平臺(tái)不同:Web瀏覽器就象一個(gè)有限的操作系統(tǒng)。無論如何,我們?nèi)匀恍枰幊蹋匀粫?huì)在客戶端編程中碰到大量問題,同時(shí)也有很多解決的方案。在本節(jié)剩下的部分里,我們將對(duì)這些問題進(jìn)行一番概括,并介紹在客戶端編程中采取的對(duì)策。
  1). 插件
  朝客戶端編程邁進(jìn)的時(shí)候,最重要的一個(gè)問題就是插件的設(shè)計(jì)。利用插件,程序員可以方便地為瀏覽器添加新功能,用戶只需下載一些代碼,把它們“插入”瀏覽器的適當(dāng)位置即可。這些代碼的作用是告訴瀏覽器“從現(xiàn)在開始,你可以進(jìn)行這些新活動(dòng)了”(僅需下載這些插入一次)。有些快速和功能強(qiáng)大的行為是通過插件添加到瀏覽器的。但插件的編寫并不是一件簡(jiǎn)單的任務(wù)。在我們構(gòu)建一個(gè)特定的站點(diǎn)時(shí),可能并不希望涉及這方面的工作。對(duì)客戶端程序設(shè)計(jì)來說,插件的價(jià)值在于它答應(yīng)專業(yè)程序員設(shè)計(jì)出一種新的語(yǔ)言,并將那種語(yǔ)言添加到瀏覽器,同時(shí)不必經(jīng)過瀏覽器原創(chuàng)者的許可。由此可以看出,插件實(shí)際是瀏覽器的一個(gè)“后門”,答應(yīng)創(chuàng)建新的客戶端程序設(shè)計(jì)語(yǔ)言(盡管并非所有語(yǔ)言都是作為插件實(shí)現(xiàn)的)。
  2). 腳本編制語(yǔ)言
  插件造成了腳本編制語(yǔ)言的爆炸性增長(zhǎng)。通過這種腳本語(yǔ)言,可將用于自己客戶端程序的源碼直接插入HTML頁(yè),而對(duì)那種語(yǔ)言進(jìn)行解釋的插件會(huì)在HTML頁(yè)顯示的時(shí)候自動(dòng)激活。腳本語(yǔ)言一般都傾向于盡量簡(jiǎn)化,易于理解。而且由于它們是從屬于HTML頁(yè)的一些簡(jiǎn)單正文,所以只需向服務(wù)器發(fā)出對(duì)那個(gè)頁(yè)的一次請(qǐng)求,即可非常快地載入。缺點(diǎn)是我們的代碼全部暴露在人們面前。另一方面,由于通常不用腳本編制語(yǔ)言做過份復(fù)雜的事情,所以這個(gè)問題暫且可以放在一邊。
  腳本語(yǔ)言真正面向的是特定類型問題的解決,其中主要涉及如何創(chuàng)建更豐富、更具有互動(dòng)能力的圖形用戶界面(GUI)。然而,腳本語(yǔ)言也許能解決客戶端編程中80%的問題。你碰到的問題可能完全就在那80%里面。而且由于腳本編制語(yǔ)言的宗旨是盡可能地簡(jiǎn)化與快速,所以在考慮其他更復(fù)雜的方案之前(如Java及ActiveX),首先應(yīng)想一下腳本語(yǔ)言是否可行。
  目前討論得最多的腳本編制語(yǔ)言包括javascript(它與Java沒有任何關(guān)系;之所以叫

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 安远县| 三台县| 常德市| 天等县| 桐柏县| 张掖市| 乾安县| 泸定县| 化隆| 汨罗市| 凤冈县| 嘉荫县| 滁州市| 宁城县| 卢龙县| 额尔古纳市| 凌云县| 蒙山县| 安阳县| 大姚县| 新巴尔虎左旗| 大方县| 定州市| 鄱阳县| 延安市| 原平市| 岢岚县| 禄劝| 连南| 凯里市| 昆明市| 始兴县| 岑巩县| 桂平市| 固安县| 都匀市| 赤壁市| 曲松县| 娄底市| 京山县| 乐业县|