明輝手游網(wǎng)中心:是一個免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

HTML、Swing還是XML,Java客戶端工具選擇?(4) [轉(zhuǎn)]

[摘要]基于XML/XSLT的客戶端應(yīng)用程序   在這里,我們假定你已經(jīng)對XML有了基本的理解,我將重點(diǎn)討論其前端應(yīng)用程序的開發(fā)。與XML相關(guān)的用戶界面開發(fā)的一個主要特征是內(nèi)容和表達(dá)方法之間互不干涉。簡單地說,就是數(shù)據(jù)被保存為XML文檔,而不再負(fù)責(zé)數(shù)據(jù)的使用和顯示,根據(jù)決定數(shù)據(jù)格式和在網(wǎng)頁上輸出方式的樣式...
基于XML/XSLT的客戶端應(yīng)用程序

   在這里,我們假定你已經(jīng)對XML有了基本的理解,我將重點(diǎn)討論其前端應(yīng)用程序的開發(fā)。與XML相關(guān)的用戶界面開發(fā)的一個主要特征是內(nèi)容和表達(dá)方法之間互不干涉。簡單地說,就是數(shù)據(jù)被保存為XML文檔,而不再負(fù)責(zé)數(shù)據(jù)的使用和顯示,根據(jù)決定數(shù)據(jù)格式和在網(wǎng)頁上輸出方式的樣式表(XSLT)在HTML、WML、XHTML和其他表達(dá)形式中選擇一種數(shù)據(jù)表達(dá)形式。通過使各層之間保持相對的獨(dú)立,讓每個層處理各自的任務(wù),這種方法的優(yōu)點(diǎn)是非常明顯的。

  盡管XML提供了很好的數(shù)據(jù)發(fā)布模式,可以生成不同的表達(dá)模式,它仍然不能解決所有的問題。XML值得稱道的是讓開發(fā)人員專注于數(shù)據(jù)的處理,而讓設(shè)計(jì)人員和藝術(shù)家來處理數(shù)據(jù)的表達(dá)形式。應(yīng)用程序則把生成的XML文件保存在內(nèi)存或存儲在磁盤上,為得到指定的表達(dá)類型,例如HTML,可以通過適當(dāng)?shù)腦SLT類型表對內(nèi)容進(jìn)行轉(zhuǎn)換,該類型表可以將XML文檔轉(zhuǎn)換為HTML文檔。類型表與判斷文檔中的內(nèi)容應(yīng)當(dāng)如何分布在網(wǎng)頁上的模板類似。它還可以轉(zhuǎn)換數(shù)據(jù),執(zhí)行傳統(tǒng)的命令和循環(huán)來處理數(shù)據(jù),進(jìn)行決策,因此它也可能變得非常復(fù)雜。

  類型表的優(yōu)點(diǎn)之一是,如果要從一部移動電話上訪問同一個應(yīng)用程序,所需要作的全部工作就是再創(chuàng)建一個新的WML類型表。從理論上說,這個應(yīng)用程序的所有其他部分都無需作任何改變,這使得服務(wù)器端的編程工作變得非常高效。采用XML實(shí)現(xiàn)一個前端應(yīng)用程序?qū)⑹挂恍┤蝿?wù)變得簡單,因?yàn)轱@示的數(shù)據(jù)和處理這些數(shù)據(jù)的代碼都無需改變。開發(fā)應(yīng)用程序各部分的開發(fā)小組可以獨(dú)立工作,從而加快開發(fā)進(jìn)程。

  然而,我曾經(jīng)在基于XML的前端應(yīng)用程序開發(fā)中吃過苦頭,它的二個最主要的缺點(diǎn)是缺乏幫助生成XML以及類型表開發(fā)方面的工具和處理速度,第一個因素對那些使用DreamWeaver和FrontPage等可視化HTML開發(fā)工具創(chuàng)建HTML網(wǎng)頁的開發(fā)人員的影響更大。就我本人而言,我還是喜歡使用DreamWeaver,但我實(shí)在不能從在文本編輯器中編寫HTML代碼中得到什么樂趣。畢竟,現(xiàn)在已經(jīng)是21世紀(jì)了,我們來看一個將XML文檔轉(zhuǎn)換為HTML的非常簡單的XSLT類型表:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="page">
<html>

<head>
<title><xsl:value-of select="title"/></title>
</head>

<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>

<xsl:template match="title">
<h1><xsl:apply-templates/></h1>
</xsl:template>

</xsl:stylesheet>




  如果所選的XSL類型表適當(dāng)?shù)脑,上面的代碼會生成如下所示的HTML代碼:

<html>
<head>
<title>My first page</title>
</head>

<body>
<h1>Hello, world</h1>
</body>
</html>


  我們會發(fā)現(xiàn),上面的代碼與我們用HTML開發(fā)工具得到的代碼不大相同。不幸地是,我們必須用手工的方式對它進(jìn)行編輯,在一個可以生成HTML文檔的工具中對它進(jìn)行處理后,然后在瀏覽器中打開生成的文檔。如果僅僅是為了美觀而改變字體的大小,那么就無需這么作了。

  第二個問題是在運(yùn)行時完成所有的任務(wù)需要許多時間。如果數(shù)據(jù)格式不是XML,還需要生成XML文檔,在類型表對XML進(jìn)行轉(zhuǎn)換處理后,才能生成HTML代碼。與在Servlet或JSP應(yīng)用程序中向內(nèi)存緩存中寫文件相比,速度和簡潔性實(shí)在不是基于XML的前端應(yīng)用程序的優(yōu)點(diǎn)。

  總而言之,如果需要動態(tài)地生成不同版面和窗體的表達(dá)形式時,就需要使用XML。如果表達(dá)形式需要經(jīng)常變化或需要非常靈活,就應(yīng)該讓設(shè)計(jì)人員重新設(shè)計(jì)新的類型表。需要記信的是,設(shè)計(jì)人員只要掌握XML和XSLT就萬事大吉了。

  另一個需要使用基于XML的UI的場合是你需要處理的資料是XML文檔,而不是Java對象或關(guān)系數(shù)據(jù)庫。XML是一種在未來頗有前途的新技術(shù),然而,目前使用JSP開發(fā)前端應(yīng)用不是比較方便的,尤其是HTML是唯一一種前端開發(fā)工具時更是如此。使用JavaBeans和JSP標(biāo)識庫等一些著名的設(shè)計(jì)模式則能夠使數(shù)據(jù)的內(nèi)容和表達(dá)形式很好的分離。隨著自動對XML/XSLT進(jìn)行編輯的工具的出現(xiàn),這些技術(shù)在使用方面將更加簡單方便。

  結(jié)論

  具體到你自己的Java應(yīng)用程序,這三種前端技術(shù)各有利弊,任何一種技術(shù)都不能在所有方面超過其他二種。針對具體的應(yīng)用程序,我們必須對需求、用戶的期望進(jìn)行詳細(xì)分析,對這三種技術(shù)進(jìn)行評估。下面是一些基本的準(zhǔn)則:

  使用HTML/JSP:

   ━━適合于由大量圖形和美術(shù)作品組成的靜態(tài)內(nèi)容。

   ━━前端應(yīng)用程序的界面面向使用所有平臺的用戶。

   ━━用戶所使用的互聯(lián)網(wǎng)連接較慢。

   ━━希望快速地構(gòu)建功能比較單一的應(yīng)用程序。

  使用Java Swing:

   ━━適合創(chuàng)建具有內(nèi)置、與界面相關(guān)的邏輯的GUI。

   ━━可以減輕網(wǎng)絡(luò)流量,提供盡可能的即時響應(yīng)。

   ━━如果用戶對界面的質(zhì)量和功能有較高的期望。

   ━━如果UI的功能比其美感更重要時。

  使用XML/XSLT

   ━━需要支持許多不同的而且經(jīng)常變化的窗體。

   ━━數(shù)據(jù)是XML格式。

   ━━需要個性化。

   ━━計(jì)劃提供無線訪問等不同的訪問方式。