asdtiang的博客 感謝blogjava提供的博客交流平臺
          元數(shù)據(jù)是關(guān)于數(shù)據(jù)的數(shù)據(jù)。在編程語言上下文中,元數(shù)據(jù)是 添加到程序元素如方法、字段、類和包上的額外信息。
          元數(shù)據(jù)的作用
          •  一般來說,元數(shù)據(jù)可以用于創(chuàng)建文檔,跟蹤代碼中的依賴 性,執(zhí)行編譯時檢查,代碼分析。
          • 元數(shù)據(jù)還可用于協(xié)助程序元素與框架或者EJB、 EMF 和 TestNG這樣的工具之間的通信。EJB 3.0就廣泛地應(yīng)用了Java元數(shù)據(jù),通過元數(shù)據(jù)來實現(xiàn)聲明性請求企業(yè)服務(wù),依賴性以及資源注入,消除了嚴格的EJB組件模型約束,并且取代了復(fù)雜的 XML配置文件。
          • 元數(shù)據(jù)甚至使我們可以不用修改核心語言,就能夠在 Java 語言中添加新功能,使核心語言成為一種開放式語言。在純面向?qū)ο蟮恼Z言中實現(xiàn)AOP就是使用元數(shù)據(jù)進行語言擴展的一個很好的例子。 AspectWerkz、JBoss AOP以及AspectJ5 使用元數(shù)據(jù)將類的語義轉(zhuǎn)換為一個aspect、將數(shù)據(jù)字段轉(zhuǎn)換為一個pointcut、將方法轉(zhuǎn)換為一個advice,等等。
          Java平臺的元數(shù)據(jù)
          Java 元數(shù)據(jù)(Annotation)是 J2SE 5.0 (研發(fā)歷時近三年,于2004年9月30日正式發(fā)布,代號為“Tiger”)新增加的功能之一,它在JSR-175規(guī)范中有詳細定義。該機制允許在 Java 代碼中添加自定義注釋,并允許通過反射(reflection),以編程方式訪問元數(shù)據(jù)注釋。通過提供為程序元素附加額外數(shù)據(jù)的標準方法,元數(shù)據(jù)功能具有 簡化和改進許多應(yīng)用程序開發(fā)領(lǐng)域的潛在能力,其中包括配置管理、框架實現(xiàn)和代碼生成。
           
          Annotation不直接影響程序的語義。然而,開發(fā)和部署工具可以讀取這些注釋,并以某種形式處理這些注釋,可能生成其他 Java源程序、XML配置文件或者要與包含注釋的程序一起使用的其他組件,從而影響運行狀態(tài)的程序的語義。注釋可以從源代碼中讀取,從編譯后 的.class文件中讀取,也可以通過反射機制在運行時讀取。
           
          Annotation具有以下的一些特點:
          •  元數(shù)據(jù)以標簽的形式存在于Java代碼中。 
          •  元 數(shù)據(jù)描述的信息是類型安全的,即元數(shù)據(jù)內(nèi)部的字段都是有明確類型的。 
          •  元數(shù)據(jù)需要編譯器之外的工具額外的處理用來生成其它的程 序部件。 
          •  元數(shù)據(jù)可以只存在于Java源代碼級別,也可以存在于編譯之后的Class文件內(nèi)部。
          事實上,早在JDK5.0推出語言級的元數(shù)據(jù)機制Annotation以前,就一直存在對元數(shù)據(jù)的需求。但是由于沒有提供表達元數(shù)據(jù) 的標準機制,出現(xiàn)了各種解決方案。下面羅列了一些例子
          •  transient 關(guān)鍵字 
          •  Serializable 標記接口
          •  xml 部署描述文件 
          • manifest.mf 文件    
          • Javadoc 標記(將文檔直接寫在源程序里,極大的方便了文檔的編寫)
          •  XDoclet(使 用類似于JavaDoc的語法撰寫描述信息,并使用工具生成描述文件)
          這 些方法都存在一定的局限性,比如使用關(guān)鍵字不具有擴展性,用戶自定義新的關(guān)鍵字;標記接口沒有提供額外的信息,它們不能帶有參數(shù),并且只能處理類,而不能 處理字段或方法或包。Javadoc和XDoclet標記不會被編譯器檢查。
           
          最后,我們再詳細的對比一下Annotation和XML部署描述文件的優(yōu)劣
          • XML配置文件與代碼文件分離,不利于一致性維護,缺乏在運行時的反射機制。而Annotation與代碼一起被編譯器處理,并能夠 在運行時訪問。
          • 通常XML配置文件都很復(fù)雜而且冗長,為了配置代碼,XML文 件必須復(fù)制許多信息:比如代碼中類名字和方法名字。Java注釋則不同,它是代碼的一部分,不需要額外的引用就可以指明配置信息。
          • XML配置文件是文本文件,沒有顯式的類型支持,需要到運行時刻才能發(fā)現(xiàn)隱藏的錯誤。而 Annotation是類型安全的,它會被編譯器檢查。  
          • XML文件可以表達復(fù)雜的關(guān)系,但是在注釋中我們卻很難表達 復(fù)雜的或?qū)哟蔚慕Y(jié)構(gòu)。
          •  XML配置文件是在代碼之外被單獨處理的,也就是說基于XML的配置信息不是硬編碼的,可以部 署的時候進行修改。而修改Annotation則需要進行重新編譯,不過我們可以利用AOP提供的機制為已有的代碼添加Annotation。通過部署不 同的AOP模塊,就能使代碼具有不同的Annotation,但比起直接修改XML顯得復(fù)雜。
          總 而言之,注釋是簡單易用的,并且對大多數(shù)應(yīng)用來說已經(jīng)足夠了。而XML文件更復(fù)雜,但具有部署的靈活性,因而被用來處理與部署相關(guān)的決策。注釋與XML配 置文件可以一起使用。由于注釋只能保存相當少的配置信息,只有預(yù)先集成的框架組件(類似在框架組件中已經(jīng)完成了大多數(shù)預(yù)備工作)可以廣泛地把注釋作為配置 選項。而XML配置文件作為一個可選的重載機制,可以用于改變注釋的默認行為。

          天蒼蒼,野茫茫,風吹草底見牛羊

          posts - 80, comments - 24, trackbacks - 0, articles - 32

          Copyright © asdtiang

          asdtiang的博客 PaidMailz
          點擊廣告網(wǎng)賺A(每天4個廣告,每個0.0025美元,一個搜索廣告0.03美元)
          主站蜘蛛池模板: 贡嘎县| 舟山市| 安龙县| 云梦县| 教育| 阿克| 蛟河市| 禹城市| 望江县| 绥中县| 蕲春县| 木兰县| 宁夏| 建水县| 佳木斯市| 乌拉特前旗| 会东县| 陵川县| 英吉沙县| 九江县| 横山县| 柏乡县| 鱼台县| 尼木县| 石景山区| 昌乐县| 衡南县| 会理县| 雅江县| 峨边| 通道| 平罗县| 晴隆县| 公安县| 博白县| 乐平市| 镶黄旗| 龙里县| 菏泽市| 交城县| 达州市|