HTML、Swing還是XML,Java客戶端工具選擇?(4) [轉(zhuǎn)]
發(fā)表時(shí)間:2024-06-02 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]基于XML/XSLT的客戶端應(yīng)用程序 在這里,我們假定你已經(jīng)對(duì)XML有了基本的理解,我將重點(diǎn)討論其前端應(yīng)用程序的開(kāi)發(fā)。與XML相關(guān)的用戶界面開(kāi)發(fā)的一個(gè)主要特征是內(nèi)容和表達(dá)方法之間互不干涉。簡(jiǎn)單地說(shuō),就是數(shù)據(jù)被保存為XML文檔,而不再負(fù)責(zé)數(shù)據(jù)的使用和顯示,根據(jù)決定數(shù)據(jù)格式和在網(wǎng)頁(yè)上輸出方式的樣式...
基于XML/XSLT的客戶端應(yīng)用程序
在這里,我們假定你已經(jīng)對(duì)XML有了基本的理解,我將重點(diǎn)討論其前端應(yīng)用程序的開(kāi)發(fā)。與XML相關(guān)的用戶界面開(kāi)發(fā)的一個(gè)主要特征是內(nèi)容和表達(dá)方法之間互不干涉。簡(jiǎn)單地說(shuō),就是數(shù)據(jù)被保存為XML文檔,而不再負(fù)責(zé)數(shù)據(jù)的使用和顯示,根據(jù)決定數(shù)據(jù)格式和在網(wǎng)頁(yè)上輸出方式的樣式表(XSLT)在HTML、WML、XHTML和其他表達(dá)形式中選擇一種數(shù)據(jù)表達(dá)形式。通過(guò)使各層之間保持相對(duì)的獨(dú)立,讓每個(gè)層處理各自的任務(wù),這種方法的優(yōu)點(diǎn)是非常明顯的。
盡管XML提供了很好的數(shù)據(jù)發(fā)布模式,可以生成不同的表達(dá)模式,它仍然不能解決所有的問(wèn)題。XML值得稱道的是讓開(kāi)發(fā)人員專注于數(shù)據(jù)的處理,而讓設(shè)計(jì)人員和藝術(shù)家來(lái)處理數(shù)據(jù)的表達(dá)形式。應(yīng)用程序則把生成的XML文件保存在內(nèi)存或存儲(chǔ)在磁盤上,為得到指定的表達(dá)類型,例如HTML,可以通過(guò)適當(dāng)?shù)腦SLT類型表對(duì)內(nèi)容進(jìn)行轉(zhuǎn)換,該類型表可以將XML文檔轉(zhuǎn)換為HTML文檔。類型表與判斷文檔中的內(nèi)容應(yīng)當(dāng)如何分布在網(wǎng)頁(yè)上的模板類似。它還可以轉(zhuǎn)換數(shù)據(jù),執(zhí)行傳統(tǒng)的命令和循環(huán)來(lái)處理數(shù)據(jù),進(jìn)行決策,因此它也可能變得非常復(fù)雜。
類型表的優(yōu)點(diǎn)之一是,如果要從一部移動(dòng)電話上訪問(wèn)同一個(gè)應(yīng)用程序,所需要作的全部工作就是再創(chuàng)建一個(gè)新的WML類型表。從理論上說(shuō),這個(gè)應(yīng)用程序的所有其他部分都無(wú)需作任何改變,這使得服務(wù)器端的編程工作變得非常高效。采用XML實(shí)現(xiàn)一個(gè)前端應(yīng)用程序?qū)⑹挂恍┤蝿?wù)變得簡(jiǎn)單,因?yàn)轱@示的數(shù)據(jù)和處理這些數(shù)據(jù)的代碼都無(wú)需改變。開(kāi)發(fā)應(yīng)用程序各部分的開(kāi)發(fā)小組可以獨(dú)立工作,從而加快開(kāi)發(fā)進(jìn)程。
然而,我曾經(jīng)在基于XML的前端應(yīng)用程序開(kāi)發(fā)中吃過(guò)苦頭,它的二個(gè)最主要的缺點(diǎn)是缺乏幫助生成XML以及類型表開(kāi)發(fā)方面的工具和處理速度,第一個(gè)因素對(duì)那些使用DreamWeaver和FrontPage等可視化HTML開(kāi)發(fā)工具創(chuàng)建HTML網(wǎng)頁(yè)的開(kāi)發(fā)人員的影響更大。就我本人而言,我還是喜歡使用DreamWeaver,但我實(shí)在不能從在文本編輯器中編寫HTML代碼中得到什么樂(lè)趣。畢竟,現(xiàn)在已經(jīng)是21世紀(jì)了,我們來(lái)看一個(gè)將XML文檔轉(zhuǎn)換為HTML的非常簡(jiǎn)單的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ù)脑挘厦娴拇a會(huì)生成如下所示的HTML代碼:
<html>
<head>
<title>My first page</title>
</head>
<body>
<h1>Hello, world</h1>
</body>
</html>
我們會(huì)發(fā)現(xiàn),上面的代碼與我們用HTML開(kāi)發(fā)工具得到的代碼不大相同。不幸地是,我們必須用手工的方式對(duì)它進(jìn)行編輯,在一個(gè)可以生成HTML文檔的工具中對(duì)它進(jìn)行處理后,然后在瀏覽器中打開(kāi)生成的文檔。如果僅僅是為了美觀而改變字體的大小,那么就無(wú)需這么作了。
第二個(gè)問(wèn)題是在運(yùn)行時(shí)完成所有的任務(wù)需要許多時(shí)間。如果數(shù)據(jù)格式不是XML,還需要生成XML文檔,在類型表對(duì)XML進(jìn)行轉(zhuǎn)換處理后,才能生成HTML代碼。與在Servlet或JSP應(yīng)用程序中向內(nèi)存緩存中寫文件相比,速度和簡(jiǎn)潔性實(shí)在不是基于XML的前端應(yīng)用程序的優(yōu)點(diǎn)。
總而言之,如果需要?jiǎng)討B(tài)地生成不同版面和窗體的表達(dá)形式時(shí),就需要使用XML。如果表達(dá)形式需要經(jīng)常變化或需要非常靈活,就應(yīng)該讓設(shè)計(jì)人員重新設(shè)計(jì)新的類型表。需要記信的是,設(shè)計(jì)人員只要掌握XML和XSLT就萬(wàn)事大吉了。
另一個(gè)需要使用基于XML的UI的場(chǎng)合是你需要處理的資料是XML文檔,而不是Java對(duì)象或關(guān)系數(shù)據(jù)庫(kù)。XML是一種在未來(lái)頗有前途的新技術(shù),然而,目前使用JSP開(kāi)發(fā)前端應(yīng)用不是比較方便的,尤其是HTML是唯一一種前端開(kāi)發(fā)工具時(shí)更是如此。使用JavaBeans和JSP標(biāo)識(shí)庫(kù)等一些著名的設(shè)計(jì)模式則能夠使數(shù)據(jù)的內(nèi)容和表達(dá)形式很好的分離。隨著自動(dòng)對(duì)XML/XSLT進(jìn)行編輯的工具的出現(xiàn),這些技術(shù)在使用方面將更加簡(jiǎn)單方便。
結(jié)論
具體到你自己的Java應(yīng)用程序,這三種前端技術(shù)各有利弊,任何一種技術(shù)都不能在所有方面超過(guò)其他二種。針對(duì)具體的應(yīng)用程序,我們必須對(duì)需求、用戶的期望進(jìn)行詳細(xì)分析,對(duì)這三種技術(shù)進(jìn)行評(píng)估。下面是一些基本的準(zhǔn)則:
使用HTML/JSP:
━━適合于由大量圖形和美術(shù)作品組成的靜態(tài)內(nèi)容。
━━前端應(yīng)用程序的界面面向使用所有平臺(tái)的用戶。
━━用戶所使用的互聯(lián)網(wǎng)連接較慢。
━━希望快速地構(gòu)建功能比較單一的應(yīng)用程序。
使用Java Swing:
━━適合創(chuàng)建具有內(nèi)置、與界面相關(guān)的邏輯的GUI。
━━可以減輕網(wǎng)絡(luò)流量,提供盡可能的即時(shí)響應(yīng)。
━━如果用戶對(duì)界面的質(zhì)量和功能有較高的期望。
━━如果UI的功能比其美感更重要時(shí)。
使用XML/XSLT
━━需要支持許多不同的而且經(jīng)常變化的窗體。
━━數(shù)據(jù)是XML格式。
━━需要個(gè)性化。
━━計(jì)劃提供無(wú)線訪問(wèn)等不同的訪問(wèn)方式。