XDoclet 操作
圖 1 顯示了 XDoclet 要求的輸入和生成的輸出。
圖 1. XDoclet 黑盒子
您可以看到,包含嵌入式 XDoclet 標(biāo)簽的 Java 源代碼是系統(tǒng)的輸入。在 Apache Ant 的驅(qū)動(dòng)下,XDoclet 處理輸入的代碼,生成的輸出文本文件可以是 Java 源代碼、HTML 頁(yè)面、XML 文件等。為了處理輸入,XDoclet 需要使用模板(保存在 .xdt 文件中)和標(biāo)簽處理器(用 Java 編碼)。XDoclet 把模板和標(biāo)簽處理器打包成“模塊”,不同的“模塊”處理不同的問(wèn)題域。
XDoclet 生成的結(jié)構(gòu)模型
XDoclet 對(duì)包含嵌入式 XDoclet 標(biāo)簽的輸入 Java 源代碼進(jìn)行解析,并為代碼建立非常詳細(xì)的結(jié)構(gòu)模型。結(jié)構(gòu)模型中的每個(gè)元素都代表源代碼中的一個(gè) Java 結(jié)構(gòu)。圖 2 顯示的結(jié)構(gòu)模型,揭示了 XDoclet 跟蹤的代碼構(gòu)造和關(guān)系。
圖 2. XDoclet 的解析的 Java 源代碼的內(nèi)部結(jié)構(gòu)模型
圖 2 中的結(jié)構(gòu)模型跟蹤類、接口、方法之類的代碼構(gòu)造(模型元素)。該模型還跟蹤元素之間的關(guān)系,例如繼承和接口實(shí)現(xiàn)。以內(nèi)聯(lián)注釋的形式嵌入在源代碼中的 XDoclet 標(biāo)簽被解析為模型元素的屬性,并被跟蹤
深入 XDoclet
圖 3 顯示了 XDoclet 的內(nèi)部結(jié)構(gòu),揭示了使其運(yùn)行的功能塊。
圖 3. XDoclet 內(nèi)部的功能塊
如圖 3 所示,Apache Ant 在運(yùn)行的時(shí)候控制著 XDoclet 的配置和操作。XDoclet 解析輸入的 Java 源代碼,并在內(nèi)存中生成結(jié)構(gòu)模型。模板引擎通過(guò)處理一組模板和標(biāo)簽處理器,生成輸出文件。模板和標(biāo)簽處理器可以是內(nèi)置的,也可以是定制的。在代碼生成期間,模板和標(biāo)簽處理器擁有對(duì)結(jié)構(gòu)模型的完全訪問(wèn)。
XDoclet 虛假的復(fù)雜性
XDoclet 實(shí)質(zhì)上就是一個(gè)通用的 Javadoc 引擎(請(qǐng)參閱側(cè)欄,通用的 Javadoc 引擎)。那么,是什么讓它看起來(lái)這么復(fù)雜呢?答案在于:XDoclet 幾乎從未被單獨(dú)討論過(guò),而總是藏在其他許多復(fù)雜的技術(shù)中。圖 4 顯示了了圍繞在 XDoclet 周圍的復(fù)雜性迷霧(請(qǐng)參閱側(cè)欄為什么 XDoclet 看起來(lái)比實(shí)際的要復(fù)雜得多)。
為什么 XDoclet 看起來(lái)比實(shí)際的要復(fù)雜得多
Apache Ant 自動(dòng)進(jìn)行 Java 軟件的生成過(guò)程。構(gòu)建管理過(guò)程通常是生產(chǎn)項(xiàng)目中更復(fù)雜過(guò)程中的一部分。構(gòu)建管理的術(shù)語(yǔ)和概念被集成到 Apache Ant 中,而且是理解其操作的先決條件。成熟的 Ant 腳本可能會(huì)非常復(fù)雜。Ant 的每個(gè)新版本,都會(huì)引入一些新的特性集,從而進(jìn)一步增加了復(fù)雜性。這形成了 XDoclet 表面的復(fù)雜性,因?yàn)?XDoclet 需要 Ant 才能執(zhí)行。
XDoclet 處理的問(wèn)題領(lǐng)域是復(fù)雜性的另一個(gè)來(lái)源。在發(fā)布 XDoclet 的時(shí)候,XDoclet 已經(jīng)可以為 EJB 組件集成、J2EE Web 容器集成、Hibernate 持久性層、Struts 框架、Java 管理擴(kuò)展(JMX)等生成代碼。這些問(wèn)題領(lǐng)域中的每一個(gè)領(lǐng)域都有一大套該領(lǐng)域?qū)S玫男性捄透拍睢倪@些復(fù)雜的問(wèn)題領(lǐng)域出來(lái)的問(wèn)題,經(jīng)常主導(dǎo)著 XDoclet 的討論,這也提高了 XDoclet 表面的復(fù)雜性。可能是“只見森林,不見樹木”。
|
圖 4. XDoclet 的復(fù)雜耦合
在圖 4 中,您可以看到 XDoclet 與以下內(nèi)容是緊密相關(guān)的:
- Apache Ant,它控制著 XDoclet 的操作。XDoclet 是作為一組 Ant 任務(wù)存在的,沒有 Ant 則不能執(zhí)行。
- 與生成文件關(guān)聯(lián)的具體問(wèn)題領(lǐng)域的一些細(xì)節(jié)。
posted on 2006-11-05 08:29
xzc 閱讀(529)
評(píng)論(0) 編輯 收藏 所屬分類:
Xdoclet