EMF:Eclipse Modeling Framework
在基于结构化数据模型(structured data model)构建工具和应用程序时,EMF可以充当模型框架 (modeling framework)和代码生成工具 (两种角色)。
从以XMI(XML Meta Interchange 、基于XML的元数据交换)描述的model中,EMF能够生成model对应的类和一些适配类(adapter class)。model类用于代表模型本身;适配类能够查看和以命令的方式编辑model,并提供了一个基本的editor。
EMF构建包里面包括XML Schema Infoset Model(XSD)和一个基于EMF的Service Data Objects(SDO)实现。XSD现在已经是另外一个Eclipse项目Model Development Tools(MDT)的组成部分。XSD提供了处理XML Schema的模型和API。
EMF的子项目还包括:
Model Query: 查询Model的元素和内容
Model Transaction: 构建于EMF之上,为管理EMF资源提供管理层模型
Validation Framework: 保证model的完整性
EMF有三个组成部分:
EMF:
核心的EMF框架,meta model(Ecore).
提供对model的支持,包括变化通知、持久化支持(默认的XMI方式)、处理EMF对象的API等
EMF.Edit :
包括为EMF model创建editor所需要的可重用类
a)content provier and label provider、property source support、其它显示EMF model在桌面上的工具类
b)command framework。包括完全支持redo undo操作的command实现类。
EMF.Codegen:
能生成构建一个完全的EMF Model Editor所需的一切资源。
含有一个可指定生成命令和选择生成器的图形界面。
代码生成利用了Eclipse JDT(Java Development Tooling)
代码生成包括三个级别:
1. Model
提供model中所有class和interface的实现类,加上factory和package(meta data)实现类
2. Adapters
生成用于编辑和显示model class的实现类,这些实现类成为ItemProviders
3. Editors
生成正确的结构化的Editor