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

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

利用 Java 平臺的特性建造一個令人矚目的系統(tǒng)

2019-11-18 15:00:14
字體:
供稿:網(wǎng)友

  選擇自 chensheng913 的 Blog

在過去的幾年中,java 平臺技術(shù)取得了一些驚人進展。但這項技術(shù)在某些方面的廣泛應(yīng)用和它最初的設(shè)計目標(biāo)完全不同。Java 平臺技術(shù)最初是希望通過客戶端運行 Applet 和 application,來給網(wǎng)頁增加交互性。而現(xiàn)在該技術(shù)最常見的用途卻是基于服務(wù)器的 J2EE 系統(tǒng)。為了讓 Java 平臺在客戶端發(fā)揮它的最大潛力,人們開發(fā)了許多新技術(shù)。由于企業(yè)系統(tǒng)逐漸被互聯(lián)網(wǎng)應(yīng)用程序所取代,把握這些新技術(shù)也就非常必要。在這篇文章中,你可以看到如何利用新舊技術(shù)來達(dá)到此目的。
Applet 碰到什么問題?
當(dāng) Java 平臺首次發(fā)布的時候,就預(yù)示著一種新方法,能夠?qū)⒒ヂ?lián)網(wǎng)從靜態(tài)的簡單網(wǎng)頁集合,提升到具有交互性的高級層次。Java 創(chuàng)始者的最初目的是為開發(fā)者們提供一些方法,創(chuàng)建可以在任何客戶端機器上運行的小程序。這些程序還能夠?qū)⒖蛻舳诉M程與服務(wù)端數(shù)據(jù)相結(jié)合,給客戶提供高度的交互體驗。

然而在某些地方,Java 為客戶端所承諾的許多特性得不到實現(xiàn)。導(dǎo)致這個不幸的可能原因包括以下幾種:

公司防火墻通常阻止 Java Applet 的通過。


許多客戶端沒有提供完全兼容的 Java 虛擬機。


安全設(shè)置不答應(yīng)使用 Applet 來執(zhí)行很多有用的規(guī)則。


瀏覽頁面時,下載一個完整用戶界面所需的開銷,經(jīng)常令許多用戶對 Java Applet 望而卻步。


必須為不同系統(tǒng)以及不同的平臺,重新實現(xiàn)許多用戶界面函數(shù)(打印,文件治理和其他一些類似任務(wù))。這也是許多開發(fā)人員避免使用 Java Applet 的原因。
隨著互聯(lián)網(wǎng)上電子商務(wù)的成長,終端用戶的處理能力有所增加,對通訊帶寬的需求更是迅猛增長。在客戶端組件中使用 Java 技術(shù)再度成為一件很有誘惑力的事情。然而,我們需要研究一種新方法,既能夠利用客戶端的程序,又不必碰到類似于使用 Java Applet 制作 ad-ware 和滾動新聞欄時所面臨的障礙。通過新舊技術(shù)的結(jié)合使用,甚至融合某些幾乎被快速奔跑的“互聯(lián)網(wǎng)時代”所淡忘的舊技術(shù),就能夠減輕這些問題。

人們?yōu)槭裁捶Q之為javascript
在客戶端使用 Java 技術(shù)時,最為忽略的一點便是 Java Applet 和 Javascript 之間的結(jié)合。JavaScript 標(biāo)準(zhǔn)早就為腳本提供了調(diào)用 Applet 類的方法,而 Applet 也能夠調(diào)用腳本的函數(shù)。這種結(jié)合讓我們能夠發(fā)揮這兩種技術(shù)的最大優(yōu)點。我們開發(fā)并保持所需要的功能性,而將用戶界面的設(shè)計交給網(wǎng)頁開發(fā)人員來處理。此外,利用這種結(jié)合,還能夠增加用戶與服務(wù)器的交互程度卻留下很少客戶端參與的痕跡。

JavaScript 標(biāo)準(zhǔn)中的 LiveConnect 技術(shù)(參看資料部分),答應(yīng)在網(wǎng)頁中使用腳本來調(diào)用 Applet 方法。只要簡單地創(chuàng)建所需要的 Java 類,并答應(yīng) JavaScript 腳本的開發(fā)者訪問這個類中的方法便可。而 com.netscape.JSObject 類則使我們能夠訪問 JavaScript 函數(shù)和對象。這就提供了一種在 Java 代碼中調(diào)用 JavaScript 函數(shù)的方式,直接令網(wǎng)頁發(fā)生相當(dāng)有趣和重要的變化。有了 JavaScript 和 Java Applet 之間的聯(lián)系,那些 JavaScript 或 Java Applet 無法單獨執(zhí)行,但結(jié)合這二種方法卻能完成的任務(wù)就能夠被解決。而且,此二者的結(jié)合通常還能夠減少網(wǎng)頁提交到服務(wù)器的時間,從而減少了用戶等待時間,服務(wù)器處理時間以及服務(wù)端的會話狀態(tài)維護開銷。考慮下列例子:

在用戶填表的同時,后臺線程使用 Java Applet 來在服務(wù)端數(shù)據(jù)庫中尋找地址或電話號碼信息。


當(dāng) SSL 不適合使用時,利用 PKI 技術(shù)來為系統(tǒng)間的通訊加密。


使用 DSA 標(biāo)準(zhǔn)來對請求簽名,為消息內(nèi)容和發(fā)送者提供強大的確認(rèn)功能。


使用 Java Applet 向服務(wù)器數(shù)據(jù)庫提交日程改變,并在客戶端的背景上更新本地日程顯示。不需要不斷對所有日程做更新,并且最大程度地縮短這個改動生效所需的時間。


結(jié)合使用 Java Applet 和 JavaScript 代碼進行動態(tài)顯示,不斷更新瀏覽器文檔中的內(nèi)容;這種結(jié)合答應(yīng)我們不必為每個所想象得到的客戶端平臺都寫一段打印例程,也能夠?qū)?nèi)容打印出來。
清單 1 闡述如何使用 JSObject 和 LiveConnect 來驗證一個電話號碼,同時將該號碼轉(zhuǎn)化成標(biāo)準(zhǔn)格式。注重到這只是一個例子代碼,所以我在服務(wù)器連接方法中略去若干必須的函數(shù)調(diào)用,以便簡化這個清單。這個例子是當(dāng)電話號碼輸入框內(nèi)容發(fā)生變化時,在 JavaScript 中調(diào)用 Java Applet 函數(shù)。于是 Java Applet 就訪問服務(wù)器,獲得這個電話號碼的標(biāo)準(zhǔn)格式字符串,并將該字符串返回到隱藏框(hidden field)里。真正實現(xiàn)此任務(wù)的代碼,應(yīng)該用后臺線程來實現(xiàn)服務(wù)器連接和電話號碼驗證,以便讓驗證過程對用戶而言是透明的。這個例子還使用了另一項使客戶端 Java 編程更為有趣的技術(shù):HTTP 連接以及與服務(wù)器代碼(非凡是 servlet 和 jsp 網(wǎng)頁)的結(jié)合。

基于服務(wù)器的資源
那些必須存放在服務(wù)器上的資源會怎樣呢?這類基于服務(wù)器的資源包括地址驗證,運輸費用計算,以及信用卡驗證等。支持?jǐn)?shù)據(jù)以及要求高安全度的處理必須放在服務(wù)端,但大部分的驗證處理,數(shù)據(jù)轉(zhuǎn)換以及費用計算過程可以遷移到客戶端系統(tǒng)上。支持這一想法的幾個 Java 語言特點包括:

Java 語言通過 HttpURLConnection 對象來為 HTTP 連接提供內(nèi)在支持。同時利用 java.net 包的其他部分,為服務(wù)端代碼與客戶端代碼之間的通訊提供一種方法,簡單有效地生成數(shù)據(jù)或打包數(shù)據(jù)。


許多客戶端的 Java Applet 代碼實際上與那些在服務(wù)器上運行的代碼是一樣的。
現(xiàn)在我們可以將多種任務(wù)分配給服務(wù)器和客戶機,從而減少服務(wù)器負(fù)載,甚至可能減少網(wǎng)絡(luò)連接。具體如何分配這些任務(wù)將取決于系統(tǒng)的類型以及用戶團體,但幾乎所有的系統(tǒng)都會因為增加一些客戶端處理而受益,例如:

Applet 類能夠?qū)?shù)據(jù)從一系列格式轉(zhuǎn)化到單一的 xml 字符串格式,這使得服務(wù)器更輕易處理數(shù)據(jù)。


Applet 類可以進行數(shù)據(jù)壓縮,即把那些將要上載到服務(wù)器的數(shù)據(jù)壓縮,同時將這些數(shù)據(jù)分割成較小的數(shù)據(jù)包,從而進一步提高了可靠性。


當(dāng)用戶填寫結(jié)帳表單時,Applet 類能夠進行地址和運輸費用的計算(在更大的基于服務(wù)器數(shù)據(jù)庫中這類計算經(jīng)常需要進行交互)。此方法能夠減少最后結(jié)算所需要的時間,同時令用戶在提交定單之前就能夠看到正確的運輸費用以及相應(yīng)稅金等信息。
為了發(fā)揮這個技術(shù)的最大優(yōu)勢,需要一些方法向那些返回指定數(shù)據(jù)的服務(wù)器發(fā)送請求。 Java servlet 恰好具有這種能力。許多開發(fā)者并未完全意識到 servlet 能夠?qū)⑷魏我环N數(shù)據(jù)作為響應(yīng)并返回,而不僅僅限于 Html 或是 XML。通過返回一系列連續(xù)的對象或一個壓縮的數(shù)據(jù)包,servlet 能夠執(zhí)行例如地址確認(rèn)或運輸費用和稅金計算等任務(wù)。同時,進行這些計算的客戶端代碼可以通過后臺線程的運行來掩蓋用戶等待時間。清單 2 中顯示了一個servlet,該 servlet 接收 HTTP 的帶有 Zip 代碼的 GET 請求,并返回運輸費用的計算結(jié)果。同樣出于令清單清楚明了的目的,在這里省略了若干非常重要的實際代碼。

注重到我使用 ObjectOutputStream 對象來將整個目標(biāo)圖表寫入待返回的響應(yīng)中。content 類型需要設(shè)置成某些合適的值,同時將 content 處理句柄分配到客戶端。這種方法能夠返回一個 Java 對象,里面包含顧客運輸、處理費用以及應(yīng)繳稅金的計算結(jié)果。假如這個對象只是與客戶端后臺線程進行通訊,用戶就根本不會意識到他已經(jīng)和服務(wù)器進行了一輪通訊。

節(jié)約時間的新技術(shù)
上述技術(shù)都已實現(xiàn)若干時間了,且大多數(shù)正在全世界各種不同的系統(tǒng)上應(yīng)用著。前面我曾經(jīng)許諾過要介紹一些新技術(shù),現(xiàn)在是具體闡述它們的時候了。客戶端上最有趣的 Java 新技術(shù)當(dāng)屬 weblet。IBM alphaWorks 的 DirectDOM 就是該技術(shù)的一個具體實現(xiàn)(參看資料部分)。DirectDOM 答應(yīng)從 Java 代碼中訪問整個瀏覽器 DOM tree (2000年11月13日 W3C 建議為 DOM Level 2)。weblet 沒有用戶界面,必須通過操縱瀏覽器中的活動 DOM 文檔來完成它的工作。許多原先需要復(fù)雜 JavaScript 代碼才能實現(xiàn)的技術(shù),通過這種方法都能夠?qū)崿F(xiàn)。必須注重到盡管 DirectDOM 是一項很有吸引力的技術(shù),它仍處在 alpha 階段,是不完善的,并且需要 Internet EXPlorer 或 Mozilla (M18) 的最新版本才能夠運行。然而,此技術(shù)足以使你猜測到不遠(yuǎn)的將來將會如何令人激動。一些可能實現(xiàn)的例子如下:

在布滿了大量圖形和視覺刺激的結(jié)算網(wǎng)頁上,加入 weblet。那么在用戶處理結(jié)算表格的多個步驟時,不需要每步都在表單與網(wǎng)頁間切換,也能夠與服務(wù)器通訊交換數(shù)據(jù)并完成結(jié)算。當(dāng)結(jié)算完畢需要確認(rèn)時,weblet 會將整個包提交到服務(wù)器,服務(wù)器就可以按照通常的結(jié)算處理步驟進行處理。


一個顯示屬性消息的網(wǎng)頁。weblet 通過令頁面空白來標(biāo)記對應(yīng)于打印或保存請求的響應(yīng),從而防止數(shù)據(jù)被不加區(qū)別地共享。


用戶可以向互聯(lián)網(wǎng)上的應(yīng)用程序請求獲得某些報告。報告的摘要信息會馬上傳送到,而 weblet 則使用后臺線程下載該報告的具體信息。當(dāng)用戶對摘要中某行條目感愛好時,只要用鼠標(biāo)點擊該條目,weblet 就能夠立即響應(yīng)鼠標(biāo)動作,在這個條目的下方顯示具體信息。這些具體信息是在摘要頁面下載后,才被后臺線程下載的。但是用戶并不會注重到這一點。
另一個長些的例子,更清楚地展示了 weblet 如何工作。在 清單 3,發(fā)送給客戶端的 HTML 頁面和 清單 4,weblet 類的 Java 代碼中,可以看到這個例子。盡管它不適合于生產(chǎn)環(huán)境也未完善,但依然很有用。這個例子下載一個很長的示范網(wǎng)頁,其中含有兩個表單和一個 weblet 標(biāo)記。weblet 用一些介紹性的文本來替代這些表單,或在演示過程中切換這兩個表單。

為什么要做這些?
為什么我們會關(guān)注客戶端的 Java 技術(shù)發(fā)展呢?為什么不建立那些只為網(wǎng)絡(luò)上計算機工作的系統(tǒng),或是瘦客戶系統(tǒng),而在服務(wù)器上執(zhí)行絕大部分的復(fù)雜計算工作?簡單的說,是因為我們無法提供這樣的服務(wù)器服務(wù)。倘若要在單獨一個服務(wù)器空間中安裝足夠的處理程序,來支持大量客戶端所請求的巨大處理負(fù)載,開銷將是極其昂貴的,因此才開發(fā)了分布式系統(tǒng)模型 (n-tier 結(jié)構(gòu))。客戶端的 Java 技術(shù)答應(yīng)我們減少大型系統(tǒng)中的操作開銷的同時,大幅度提高客戶端的參與??減少用戶與服務(wù)器之間通訊的回合數(shù),提高交互層次,改善數(shù)據(jù)的確認(rèn)速度。客戶端的 Java 技術(shù)還可以幫助我們實現(xiàn)一些服務(wù)器難以單獨完成的任務(wù),比如基于標(biāo)記 (token-based) 的數(shù)字簽名等。即便是單一的開發(fā)平臺,企業(yè)版的 Java 2 也提供了強大的體系結(jié)構(gòu)。可以將客戶端 Java 技術(shù)與支持 Java 2 平臺的服務(wù)器相結(jié)合,不能充分利用這個優(yōu)勢將非常遺憾。


作者Blog:http://blog.csdn.net/chensheng913/

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 陇川县| 晋城| 苗栗县| 城口县| 东平县| 天柱县| 灯塔市| 新乡市| 镇巴县| 洛浦县| 永济市| 绥化市| 三江| 大埔区| 徐水县| 乌鲁木齐县| 苍溪县| 星子县| 平山县| 丁青县| 建宁县| 德钦县| 隆德县| 五常市| 襄城县| 正阳县| 赫章县| 鹤壁市| 嘉黎县| 巧家县| 武宣县| 梓潼县| 湄潭县| 霍州市| 东源县| 安庆市| 鄱阳县| 靖安县| 民县| 浦城县| 靖西县|