XML 和 Java:一個強大的組合
來源:互聯網
上載者:User
xml XML當它在1996年11月首次由WWW小組( W3C)提出時就是一個能夠被很好接受的規範。現在,它與Java從本質上的結合--即把Java程式中的與XML相關的代碼部分和對Java語義(動作)編碼的部分轉換成XML的標記,承諾能夠向企業或更高層提供更簡單和更具創造力的應用計算。Larry Cable 和 Mark Reinhold 是Sun公司的兩名老資格的工程師,他們在最近召開的JavaOne開發人員大會的"Java平台上的XML"技術會議部分發言,根據他們的發言,關注這種技術聯姻的主要原因是基於XML的文法提供了一種靈活的、標準的、健壯的Java編程方案,同時,Java也將一種普遍的語義集合應用於XML資料。 為什麼用XML? 很多在電子世界裡可用的資訊都沒有被儲存成和表述成圖象、三維圖形、電影、聲音或其它易於接收的多媒體格式,相反,它以基於字元文本的形式存在於Web、資料庫和其它文本很可能存在的地方。XML允許開發人員在一個標準的結構中以上下文來考慮並且解釋他們的資料,以便於每一次添加和更新的時候,一個XML架構下的資料集可以與另一個XML架構下的資料集相結合而不用重建整個結構。 Java是如何適用於這個藍圖的? XML為Java的語義(行為)提供了一種普遍的文法,簡單的說就是,這意味著一個開發人員可以為不同的資料類型建立描述,使得這些資料在Java的程式碼中表現出不同的行為,並且以後可以重複使用和修改這些描述。既然Java和XML都是可移植的標準,這兩種技術結合的結果也是可移植的,可以重用資料和移植行為。單獨使用XML或Java所能獲得的所有的潛力還沒有被完全掌握,將它們結合就走進了一個巨大的新的國度。現在,將XML應用於Java的兩個主要的應用是面向表示的出版業和企業中面向訊息的中介軟體技術。特別是,XML可以和Java結合產生諸如複雜的Web文檔、動態出版、電子商務、公司專屬應用程式整合和結構資訊管理與檢索等應用。 XML標準擴充 XML標準擴充是一種基礎性的探索,用它來將XML文法翻譯成Java。這種探索的技術和結構細節還在剖制之中,1999年底Java開發人員就可以使用這個標準擴充來建造基於XML的應用了。這個標準擴充包括一些組件:一個解析器,解析器中的名字空間支援,XML的簡單API(SAX)和文件物件模型(DOM)。 解析器就是一個軟體模組用來解析或者是讀入一個XML文檔的資料並且檢查其合法性。名字空間,W3C的XML規範的一部分,指在一個文件類型定義(DTD)中定義了一組與其它不同的XML標記元素集。名字空間的主要益處是它允許多個變數(在不同的標記集合中並且行為也不一樣)能夠在一個單獨的文檔執行個體中混合。很顯然,為了獲得這種益處,解析器必須支援名字空間,Sun Microsystems還在為這種支援而作工作。 SAX,一個為基於事件XML解析器定義的可以免費獲得的,平台、語言無關的API,允許程式和指令碼動態訪問和更新內容、結構和文檔風格。所以,它作為一個中介軟體層用來把XML文檔中的資料解釋成相應的Java事件。 DOM為解析器提供一個基於樹型的資料結構介面,將XML資料構建成對象並且允許對象間相互結合、訪問、操縱,例如通過Java程式。 XML標準擴充規範的公用草稿和alpha發行版將在今年(1999)第三季度問世,Sun打算在第四季度發行最終版。 當所有這些問題被消除之後,Sun計劃考慮支援轉變語言(transformation language)和樣式頁(XSL)以及XML查詢語言,這個語言允許查詢XML文檔。 XML資料繫結標準擴充 Sun和其它XML-Java倡導者都認為XML標準擴充對於高效地使用XML和Java是不夠的,為什麼呢?儘管XML可以提供Java所使用的資料的文法並且按照這個文法行事,但是據說XML訊息的文法在本質上是沒有意義的,而且它缺乏對某一塊資料是什麼和如何使得這塊知識適合整個資訊系統這樣的特定的知識。資料繫結標準擴充使用了模式(schemas),是XML的子規範,它描述了XML文檔所使用的特定的機構和資料類型。Java程式員可以聯絡這種相似之處:一個XML訊息繼承於一個XML模式,跟Java對象是一個Java類的執行個體是同樣的。模式通過約束XML文檔和資料的結構與內容來給它們添加含義,並且通過描述概念上的意思使得一個人而不僅僅是機器只要簡單的瀏覽一下其結構就知道它是做什麼的。完整模式只是資料繫結的一個開端,據Cable和Reinhold說,為了從XML-java結構和編程混合體獲得更多,從對象映射到XML訊息組件(unmarshaling)和映射回對象(marshaling)是一樣重要的。對於映射和反映射Java代碼的XML訊息組件來說,對它們有用的是一些類,Cable和Reinhold感覺到SAX和DOM都不能解決這個問題。 但是綁定可以解決這個問題,至少在理論上是這樣的。使用綁定將XML模式編譯成Java的類,允許對象能和XML訊息任意地相互進行映射。綁定產生了類,這些類包涵了映射和反映射的代碼(允許完善的錯誤和合法性檢查)和訪問組件的方法(get和set),使得資料元素自動的和模式保持一致性。綁定XML到Java程式也消除了書寫反映射(unmarshal)的必要,減少了輸入錯誤資料的可能性。Sun公司的工程師們打算在Java平台上增加一個這樣的綁定工具,儘管他們還沒有公布具體日期。 現在就嘗試使用它 你現在就可以下載Java Project X Technology第二發行版的二進位代碼或原始碼,Java Project X Technology是一個基於Java-XML技術服務包的名字。這個服務包包括一個快速的XML解析器,這個解析器帶有可選的認證和一個支援W3C DOM Level 1 建議的記憶體內的物件模型樹。根據Sun的Java Project X FAQ,Project X 是一個"開發面向XML的應用與服務的高效能、模組化、可擴充的Java API",試用一下證明這是真的。 Sun和其它看好XML的行業 不僅僅是Sun公司,一些技術開發人員也正在為他們的夥伴和顧客架起XML和Java的橋樑。例如,Bluestone軟體公司,他們專註於企業的互動管理,在他們的Bluestone XML工具集中就支援XML的Java標準擴充。NetPost是一家使用Java組件模型來開發、提供跨媒體出版解決方案的公司,他們為所有在他們資訊系統中的資料使用XML,作為一個"綜合的標準資料表示"。Oracle也在這個領域開發了一些產品,包括Java的XML解析器,XML類產生器,和Java的XSL處理器。 對於一個Java開發人員學習XML或至少探索一下它的可能性還是很有益處的。Sun的工程師們已經在Java2平台中使用XML了。例如,XML已在JavaHelp API中使用,用來描述元資訊;它也被用來描述EJB1.1中的部署描述符;它通過解釋EJB到JSP(或相反)提供J2EE編程模型的文法基礎。Sun也積極地參與W3C和其它開放XML組織,諸如XML.org 和OASIS(the Organization forthe Advancement of Structured Information Standards)。