快速业务通道

浅析Eclipse建模框架(EMF)及其动态能力 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18

浅析Eclipse建模框架(EMF)及其动态能力

时间:2011-03-07

如果给定一个模型,那么EMF能够自动生成Java源代码-该源码允许你创建、查询、更新、串行化、反串行化、检验和追踪你的模型实例的变化。EMF提供了一组有效的反射API并且允许你用动态的(非生成的)模型进行工作。

一、引言

Eclipse建模框架(EMF)是一个Java开源框架与代码生成工具-用于基于结构化的模型来构建工具和其它应用程序。在Eclipse平台在用户界面和文件级上提供一个强有力的集成框架的同时,EMF加强了这种能力来实现工具和应用程序之间良好粒度的数据分享。

类似于其它的Java绑定框架,例如JAXB或XMLBeans,给定一个模型后,EMF就能够生成Java源代码-它允许你创建、查询、更新、反串行化以及串行化你的模型的实例。尽管多数Java绑定框架仅支持一个模型类,例如XML模式,而EMF支持从XML模式,UML类图(Rational Rose或UML2)以及被注解的Java接口中生成代码。除了模型代码,EMF还能生成一个完整的应用程序-它包括一个可定制的编辑器。

EMF生成的代码有一个内建的改变通知机制并且支持跨文档参考。EMF提供一个反射API以存取你的模型实例并且允许你动态地创建模型。EMF支持模型约束校验。EMF提供强有力的代码生成工具来支持模型的重新生成和使用用户书写的代码进行合并。

在本文中,我们将解释什么是EMF,并分析其基本框架。

EMF最开始是一个对象管理组的(OMG)元对象设备(MOF)说明书的实现-它为面向对象的分析和设计提供一个标准化的元模型。在很长一段时间以来,EMF被用于实现大量的工具并且因此演变为一个有效的MOF API的一个核心子集的Java实现。

在EMF中的类MOF核心元模型(一个模型的模型)被称作Ecore。在对当前的MOF 2.0的实现中,有一个类似的MOF模型的子集,称作Essential MOF(EMOF),它现在已经被独立出来。在Ecore和EMOF之间主要存在上些小的特别是命名上的区别,因此EMF能透明地读和写串行化的EMOF,从而允许工具间数据的标准交换。

今天EMF已被广泛应用。例如,EMF被用于实现开源XML模式Infoset模型(XSD),服务数据对象(SDO),UML2以及Eclipse上的Web工具平台(WTP)工程。另外,EMF也被使用在商业化的产品中,例如Omondo EclipseUML以及IBM Rational和WebSphere产品等。

二、Ecore和反射API

EMF中的一个关键接口是Eobject,它在概念上等价于java.lang.Object。所有的建模对象,无论是生成的与否,为了提供以下几个重要特征,都要实现这个接口:

·类似Java的Object.getClass(),通过使用eClass()方法,你能检索实例的元数据,也就是它的Eclass。

·在任何EMF建模的对象上,你都能使用反射API(eGet(),eSet())来存取它的数据。这在概念上等同于Java的java.lang.reflect.Method.invoke()方法,尽管效率更高些。

·从任何实例对象,你都可以通过使用eContainer()方法得到它的容器(parent)。

·EObject也扩展了Notifier,这允许你监视对象的数据的所有变化。

为找到更多关于EMF和Ecore,请读在线概述或购买Eclipse建模框架(EMF)。EMF网站提供了若干文件来描述怎么使用EMF来从一个XML模式或UML图表生成Java代码。

下面我将描述一个示例,它使用Ecore来创建一个简单公司模型,然后使用动态的EMF来创建,串行化和反串行化这个模型的实例。如果你想继续读下去并且你已经是一个Eclipse用户,请下载和安装EMF 2.1 SDK或任何可用的更新的版本,在EMF下载站点。如果不那样,你还可以下载独立包,它包括EMF jar文件,它没有任何对Eclipse的依赖性并且能被使用于一个独立的应用程序。

浅析Eclipse建模框架(EMF)及其动态能力(2)

时间:2011-03-07

三、使用动态EMF能力

一般地,如果你在开发期间创建了模型,那么典型情况下,你最好生成Java

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号