前一陣子跟同事聊起了 EJB 3.0 開發簡化的事情。我們談到了 Java annotation,對於玩慣PL的設計師來說,應該
EJB 3.0 用了 Java annotation 機制,大幅簡化了 EJB 的開發步驟。以前由於 java 語言還不夠成熟,一堆 compiler directive 都還沒標準,所以只好繞個彎,利用一些空白(empty)或抽象(abstract)的 interface class 暫時解決,難怪 EJB 2.0 的開發真是囉唆到極點。
相較於C或C++這種歷史悠久的語言來說,Java annotation 算是遲來的機制,對於不玩 PL 的純JAVA工程師來說,會覺得這個機制很新奇。但片段對 java annotation 的了解,也容易因為他被用於 EJB3.0 的情境,而直接推論成: "annotation 就是會 code gen 一些東西到 java class 的機制"。也不能說這個觀念完全錯誤,不過,給 compiler 的 hint, option 在實務上不只可以指引 compiler 做 code generation, 還可以做更多更有意義的事情;或者,更精確地說: java annotation 可以指引 compiler 或者 application server 進行類似 code generation (以及其他分析) 的動作。
以下,是 override 的 annotation 範例。
public class Test_Override {
@Override
public String toString() {
return super.toString() +
" Testing annotation name: 'Override'";
}
}
--
另外,有一篇我覺得還不錯的 annotation 介紹文章,An Introduction to Java AnnotationsBy M. M. Islam Chisty,URL: http://www.developer.com/java/other/article.php/10936_3556176_1
當然,官方說法 http://java.sun.com/j2se/1.5.0/docs/guide/language/annotations.html 是一定要看的。而且 motivation 部分也帶到了,例如要避免 JavaBean 機制的 BeanInfo, 以及 EJB 2.x 的 deployment descriptor,這種麻煩而無謂的步驟可以省掉,真是一大福音。
EJB3.0 + annotation 詳細技術文章 Writing Performant EJB Beans in the Java EE 5 Platform (EJB 3.0) Using Annotations,在此http://java.sun.com/developer/technicalArticles/ebeans/ejb_30/index.html
沒有留言:
張貼留言