EMF简介
What is EMF?
EMF的全称是Eclipse Modeling Framework. 它是Eclipse MDA(Model Driven Architecture)的一个重要组成部分,是Eclipse中许多项目的基础( e.g, GEF), EMF可以将模型转换成高效的,正确的,和易于定制的Java代码。EMF项目的最初目标是要实现OMG(Object
Management Group)的MOF规范(Meta Object
Facility)。在项目的进行中EMF的开发人员根据大量的实践经验对MOF规范进行了再加工,提取出了一些核心的元素集(MOF
2.0 中称为EMOF(Essential MOF))。可以说EMF 是MOF核心子集的java高效实现,在EMF 中MOF核心子集的实现称为Ecore。
EMF的组成
当前EMF由三个部分组成:
1.EMF.Core(EMF的核心或基础),包括一个用于描述模型的meta model,称为Ecore,它实现了MOF的核心元素集。还包括一些runtime
support,如:模型改变通知(org.eclipse.emf.common.notify
包中定义了一些接口用于实现这个机制),模型持久化(默认是XMI
serialization),高效的Reflective
API for manipulating EMF objects generically.
2.EMF.Edit:include generic reusable classes for building
editors for EMF models. It provides:
(1).Content
and label provider classes, property source support, and other convenience
classes that allow EMF models to be displayed using standard desktop (JFace)
viewers and property sheets.
(2).
A commond framework, including a set of generic commond implementation classes
for building editors that support fully automatic undo and redo.
3.EMF.Codegen:用于产生EMF模型的java代码。
What is EMF
model?
我们知道model是通过它的meta model来描述的,那么EMF model的meta model 是什么呢?在Eclipse中EMF model 的meta model称为Ecore, Ecore model是自描述的(self-description),所以Ecore model本身也是一个EMF model.
How to get an EMF
model?
有几种方式可以得到一个EMF
model:
1.
通过文本编辑器直接编辑一个model文件(XMI格式)。
2.
通过Annotated Java code。
3.
XML schema
4.
Rose class model.