asdtiang的博客 感谢blogjava提供的博客交流平台

java 元数据学习笔记1----什么是元数据(转)

Posted on 2010-03-09 16:25 asdtiang 阅读(306) 评论(0)  编辑  收藏 所属分类: JAVA
元数据是关于数据的数据。在编程语言上下文中,元数据是 添加到程序元素如方法、字段、类和包上的额外信息。
元数据的作用
  •  一般来说,元数据可以用于创建文档,跟踪代码中的依赖 性,执行编译时检查,代码分析。
  • 元数据还可用于协助程序元素与框架或者EJB、 EMF 和 TestNG这样的工具之间的通信。EJB 3.0就广泛地应用了Java元数据,通过元数据来实现声明性请求企业服务,依赖性以及资源注入,消除了严格的EJB组件模型约束,并且取代了复杂的 XML配置文件。
  • 元数据甚至使我们可以不用修改核心语言,就能够在 Java 语言中添加新功能,使核心语言成为一种开放式语言。在纯面向对象的语言中实现AOP就是使用元数据进行语言扩展的一个很好的例子。 AspectWerkz、JBoss AOP以及AspectJ5 使用元数据将类的语义转换为一个aspect、将数据字段转换为一个pointcut、将方法转换为一个advice,等等。
Java平台的元数据
Java 元数据(Annotation)是 J2SE 5.0 (研发历时近三年,于2004年9月30日正式发布,代号为“Tiger”)新增加的功能之一,它在JSR-175规范中有详细定义。该机制允许在 Java 代码中添加自定义注释,并允许通过反射(reflection),以编程方式访问元数据注释。通过提供为程序元素附加额外数据的标准方法,元数据功能具有 简化和改进许多应用程序开发领域的潜在能力,其中包括配置管理、框架实现和代码生成。
 
Annotation不直接影响程序的语义。然而,开发和部署工具可以读取这些注释,并以某种形式处理这些注释,可能生成其他 Java源程序、XML配置文件或者要与包含注释的程序一起使用的其他组件,从而影响运行状态的程序的语义。注释可以从源代码中读取,从编译后 的.class文件中读取,也可以通过反射机制在运行时读取。
 
Annotation具有以下的一些特点:
  •  元数据以标签的形式存在于Java代码中。 
  •  元 数据描述的信息是类型安全的,即元数据内部的字段都是有明确类型的。 
  •  元数据需要编译器之外的工具额外的处理用来生成其它的程 序部件。 
  •  元数据可以只存在于Java源代码级别,也可以存在于编译之后的Class文件内部。
事实上,早在JDK5.0推出语言级的元数据机制Annotation以前,就一直存在对元数据的需求。但是由于没有提供表达元数据 的标准机制,出现了各种解决方案。下面罗列了一些例子
  •  transient 关键字 
  •  Serializable 标记接口
  •  xml 部署描述文件 
  • manifest.mf 文件    
  • Javadoc 标记(将文档直接写在源程序里,极大的方便了文档的编写)
  •  XDoclet(使 用类似于JavaDoc的语法撰写描述信息,并使用工具生成描述文件)
这 些方法都存在一定的局限性,比如使用关键字不具有扩展性,用户自定义新的关键字;标记接口没有提供额外的信息,它们不能带有参数,并且只能处理类,而不能 处理字段或方法或包。Javadoc和XDoclet标记不会被编译器检查。
 
最后,我们再详细的对比一下Annotation和XML部署描述文件的优劣
  • XML配置文件与代码文件分离,不利于一致性维护,缺乏在运行时的反射机制。而Annotation与代码一起被编译器处理,并能够 在运行时访问。
  • 通常XML配置文件都很复杂而且冗长,为了配置代码,XML文 件必须复制许多信息:比如代码中类名字和方法名字。Java注释则不同,它是代码的一部分,不需要额外的引用就可以指明配置信息。
  • XML配置文件是文本文件,没有显式的类型支持,需要到运行时刻才能发现隐藏的错误。而 Annotation是类型安全的,它会被编译器检查。  
  • XML文件可以表达复杂的关系,但是在注释中我们却很难表达 复杂的或层次的结构。
  •  XML配置文件是在代码之外被单独处理的,也就是说基于XML的配置信息不是硬编码的,可以部 署的时候进行修改。而修改Annotation则需要进行重新编译,不过我们可以利用AOP提供的机制为已有的代码添加Annotation。通过部署不 同的AOP模块,就能使代码具有不同的Annotation,但比起直接修改XML显得复杂。
总 而言之,注释是简单易用的,并且对大多数应用来说已经足够了。而XML文件更复杂,但具有部署的灵活性,因而被用来处理与部署相关的决策。注释与XML配 置文件可以一起使用。由于注释只能保存相当少的配置信息,只有预先集成的框架组件(类似在框架组件中已经完成了大多数预备工作)可以广泛地把注释作为配置 选项。而XML配置文件作为一个可选的重载机制,可以用于改变注释的默认行为。

天苍苍,野茫茫,风吹草底见牛羊

只有注册用户登录后才能发表评论。


网站导航:
 

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

Copyright © asdtiang

asdtiang的博客 PaidMailz
点击广告网赚A(每天4个广告,每个0.0025美元,一个搜索广告0.03美元)