﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-ansen-文章分类-EMF</title><link>http://www.blogjava.net/ansen/category/2533.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 10 Mar 2007 10:06:28 GMT</lastBuildDate><pubDate>Sat, 10 Mar 2007 10:06:28 GMT</pubDate><ttl>60</ttl><item><title>EMF简介</title><link>http://www.blogjava.net/ansen/articles/9248.html</link><dc:creator>ansen</dc:creator><author>ansen</author><pubDate>Thu, 04 Aug 2005 07:58:00 GMT</pubDate><guid>http://www.blogjava.net/ansen/articles/9248.html</guid><wfw:comment>http://www.blogjava.net/ansen/comments/9248.html</wfw:comment><comments>http://www.blogjava.net/ansen/articles/9248.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/ansen/comments/commentRss/9248.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ansen/services/trackbacks/9248.html</trackback:ping><description><![CDATA[<h1 style="text-align: center;">EMF简介</h1>
<h3>What is EMF?</h3>


<p class="MsoNormal"><span style="" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EMF</span><span style="font-family: SimSun;" lang="ZH-CN">的全称是</span><span style="" lang="EN-US">Eclipse Modeling Framework. </span><span style="font-family: SimSun;" lang="ZH-CN">它是</span><span style="" lang="EN-US">Eclipse MDA</span><span style="font-family: SimSun;" lang="ZH-CN">（</span><span style="" lang="EN-US">Model Driven Architecture</span><span style="font-family: SimSun;" lang="ZH-CN">）的一个重要组成部分，是</span><span style="" lang="EN-US">Eclipse</span><span style="font-family: SimSun;" lang="ZH-CN">中许多项目的基础</span><span style="" lang="EN-US">( e.g, GEF)</span><span style="font-family: SimSun;" lang="ZH-CN">，</span><span style="" lang="EN-US"> EMF</span><span style="font-family: SimSun;" lang="ZH-CN">可以将模型转换成高效的，正确的，和易于定制的</span><span style="" lang="EN-US">Java</span><span style="font-family: SimSun;" lang="ZH-CN">代码。</span><span style="" lang="EN-US">EMF</span><span style="font-family: SimSun;" lang="ZH-CN">项目的最初目标是要实现</span><span style="" lang="EN-US">OMG(Object
Management Group)</span><span style="font-family: SimSun;" lang="ZH-CN">的</span><span style="" lang="EN-US">MOF</span><span style="font-family: SimSun;" lang="ZH-CN">规范（</span><span style="" lang="EN-US">Meta Object
Facility</span><span style="font-family: SimSun;" lang="ZH-CN">）。在项目的进行中</span><span style="" lang="EN-US">EMF</span><span style="font-family: SimSun;" lang="ZH-CN">的开发人员根据大量的实践经验对</span><span style="" lang="EN-US">MOF</span><span style="font-family: SimSun;" lang="ZH-CN">规范进行了再加工，提取出了一些核心的元素集（</span><span style="" lang="EN-US">MOF
2.0 </span><span style="font-family: SimSun;" lang="ZH-CN">中称为</span><span style="" lang="EN-US">EMOF</span><span style="font-family: SimSun;" lang="ZH-CN">（</span><span style="" lang="EN-US">Essential MOF</span><span style="font-family: SimSun;" lang="ZH-CN">））。可以说</span><span style="" lang="EN-US">EMF </span><span style="font-family: SimSun;" lang="ZH-CN">是</span><span style="" lang="EN-US">MOF</span><span style="font-family: SimSun;" lang="ZH-CN">核心子集的</span><span style="" lang="EN-US">java</span><span style="font-family: SimSun;" lang="ZH-CN">高效实现，在</span><span style="" lang="EN-US">EMF </span><span style="font-family: SimSun;" lang="ZH-CN">中</span><span style="" lang="EN-US">MOF</span><span style="font-family: SimSun;" lang="ZH-CN">核心子集的实现称为</span><span style="" lang="EN-US">Ecore</span><span style="font-family: SimSun;" lang="ZH-CN">。<br>
</span></p>
<p class="MsoNormal">

</p>
<h3><span style="" lang="EN-US">EMF</span><span style="font-family: SimSun;" lang="ZH-CN">的组成</span><span style="" lang="EN-US"><o:p></o:p></span></h3>


<p class="MsoNormal"><span style="font-family: SimSun;" lang="ZH-CN">当前</span><span style="" lang="EN-US">EMF</span><span style="font-family: SimSun;" lang="ZH-CN">由三个部分组成：</span><span style="" lang="EN-US"><o:p></o:p></span></p>


<p class="MsoNormal"><span style="" lang="EN-US">1</span><span style="font-family: SimSun;" lang="ZH-CN">．</span><span style="" lang="EN-US">EMF.Core(EMF</span><span style="font-family: SimSun;" lang="ZH-CN">的核心或基础</span><span style="" lang="EN-US">)</span><span style="font-family: SimSun;" lang="ZH-CN">，包括一个用于描述模型的</span><span style="" lang="EN-US">meta model,</span><span style="font-family: SimSun;" lang="ZH-CN">称为</span><span style="" lang="EN-US">Ecore</span><span style="font-family: SimSun;" lang="ZH-CN">，它实现了</span><span style="" lang="EN-US">MOF</span><span style="font-family: SimSun;" lang="ZH-CN">的核心元素集。还包括一些</span><span style="" lang="EN-US">runtime
support,</span><span style="font-family: SimSun;" lang="ZH-CN">如：模型改变通知（</span><span style="" lang="EN-US">org.eclipse.emf.common.notify
</span><span style="font-family: SimSun;" lang="ZH-CN">包中定义了一些接口用于实现这个机制），模型持久化（默认是</span><span style="" lang="EN-US">XMI
serialization</span><span style="font-family: SimSun;" lang="ZH-CN">），高效的</span><span style="" lang="EN-US">Reflective
API for manipulating EMF objects generically.<o:p></o:p></span></p>


<p class="MsoNormal"><span style="" lang="EN-US">2</span><span style="font-family: SimSun;" lang="ZH-CN">．</span><span style="" lang="EN-US">EMF.Edit</span><span style="font-family: SimSun;" lang="ZH-CN">：</span><span style="" lang="EN-US">include generic reusable classes for building
editors for EMF models. It provides:<o:p></o:p></span></p>


<p style="margin-left: 40px;" class="MsoNormal"><span style="" lang="EN-US"><span style=""></span>(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.<o:p></o:p></span></p>


<p style="margin-left: 40px;" class="MsoNormal"><span style="" lang="EN-US"><span style="">&nbsp;</span>(2).
A commond framework, including a set of generic commond implementation classes
for building editors that support fully automatic undo and redo.<o:p></o:p></span></p>


<p class="MsoNormal"><span style="" lang="EN-US">3</span><span style="font-family: SimSun;" lang="ZH-CN">．</span><span style="" lang="EN-US">EMF.Codegen</span><span style="font-family: SimSun;" lang="ZH-CN">：用于产生</span><span style="" lang="EN-US">EMF</span><span style="font-family: SimSun;" lang="ZH-CN">模型的</span><span style="" lang="EN-US">java</span><span style="font-family: SimSun;" lang="ZH-CN">代码。<br>
</span></p>
<p class="MsoNormal"><br>


</p>
<h3><span style="font-family: SimSun;" lang="ZH-CN">What is </span><span style="" lang="EN-US">EMF
model?<o:p></o:p></span></h3>






<p class="MsoNormal"><span style="font-family: SimSun;" lang="ZH-CN">我们知道</span><span style="" lang="EN-US">model</span><span style="font-family: SimSun;" lang="ZH-CN">是通过它的</span><span style="" lang="EN-US">meta model</span><span style="font-family: SimSun;" lang="ZH-CN">来描述的，那么</span><span style="" lang="EN-US">EMF model</span><span style="font-family: SimSun;" lang="ZH-CN">的</span><span style="" lang="EN-US">meta model </span><span style="font-family: SimSun;" lang="ZH-CN">是什么呢？在</span><span style="" lang="EN-US">Eclipse</span><span style="font-family: SimSun;" lang="ZH-CN">中</span><span style="" lang="EN-US">EMF model </span><span style="font-family: SimSun;" lang="ZH-CN">的</span><span style="" lang="EN-US">meta model</span><span style="font-family: SimSun;" lang="ZH-CN">称为</span><span style="" lang="EN-US">Ecore, Ecore model</span><span style="font-family: SimSun;" lang="ZH-CN">是自描述的（</span><span style="" lang="EN-US">self-description</span><span style="font-family: SimSun;" lang="ZH-CN">），所以</span><span style="" lang="EN-US">Ecore model</span><span style="font-family: SimSun;" lang="ZH-CN">本身也是一个</span><span style="" lang="EN-US">EMF model.<o:p></o:p></span></p>


<h3><span style="" lang="EN-US"><o:p></o:p></span><span style="font-family: SimSun;" lang="ZH-CN">How to get an </span><span style="" lang="EN-US">EMF
model?<o:p></o:p></span></h3>
<p class="MsoNormal"><span style="font-family: SimSun;" lang="ZH-CN">有几种方式可以得到一个</span><span style="" lang="EN-US">EMF
model:<o:p></o:p></span></p>




<p class="MsoNormal" style="margin-left: 18pt; text-indent: -18pt;"><!--[if !supportLists]--><span style="" lang="EN-US"><span style="">1.<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><!--[endif]--><span style="font-family: SimSun;" lang="ZH-CN">通过文本编辑器直接编辑一个</span><span style="" lang="EN-US">model</span><span style="font-family: SimSun;" lang="ZH-CN">文件（</span><span style="" lang="EN-US">XMI</span><span style="font-family: SimSun;" lang="ZH-CN">格式）。</span><span style="" lang="EN-US"><o:p></o:p><span style=""><br>
</span></span></p>
<p class="MsoNormal" style="margin-left: 18pt; text-indent: -18pt;"><span style="" lang="EN-US"><span style="">2.<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><!--[endif]--><span style="font-family: SimSun;" lang="ZH-CN">通过</span><span style="" lang="EN-US">Annotated Java code</span><span style="font-family: SimSun;" lang="ZH-CN">。</span><span style="" lang="EN-US"><o:p></o:p></span></p>


<p class="MsoNormal" style="margin-left: 18pt; text-indent: -18pt;"><!--[if !supportLists]--><span style="" lang="EN-US"><span style="">3.<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><!--[endif]--><span style="" lang="EN-US">XML schema<o:p></o:p></span></p>


<p class="MsoNormal" style="margin-left: 18pt; text-indent: -18pt;"><!--[if !supportLists]--><span style="" lang="EN-US"><span style="">4.<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><!--[endif]--><span style="" lang="EN-US">Rose class model.<o:p></o:p></span></p>

<p class="MsoNormal"><br>
<span style="font-family: SimSun;" lang="ZH-CN"></span><span style="" lang="EN-US"><o:p></o:p></span></p>


<p class="MsoNormal"><br>
<span style="font-family: SimSun;" lang="ZH-CN"></span><span style="" lang="EN-US"><o:p></o:p></span></p>

<br>
<br>
<img src ="http://www.blogjava.net/ansen/aggbug/9248.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ansen/" target="_blank">ansen</a> 2005-08-04 15:58 <a href="http://www.blogjava.net/ansen/articles/9248.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>