EclipseCon 2007 March 5-8, Santa Clara California

(3619) Effective use of the Eclipse Modeling Framework

Ed Merks (IBM), Dave Steinberg (IBM), Kenn Hussey (IBM Rational Software), Christian W. Damus (IBM Rational Software)

· Long Tutorial

Monday, 08:00, 10 hours | Grand Ballroom F


Kenn Hussey

Christian W. Damus

The Eclipse Modeling Framework (EMF) is the foundation for model-based development and data integration at Eclipse. It provides a Java framework and code generation facility for building tools and other applications based on structured models. Given a model, e.g., an XML Schema or a UML class diagram, EMF can generate a corresponding set of Java interfaces and implementation classes. You can edit these generated classes to add methods and instance variables and still regenerate from the model as needed: your additions will be preserved during the regeneration. EMF also provides a capability to work with dynamic models (which do not require generating Java classes) via an efficient reflective API for manipulating any EMF object generically.

EMF consists of three fundamental aspects:

  1. The core framework includes a meta-model (Ecore) for describing models and runtime to support models, including change notification, persistence support with default XMI serialization, a reflective API for manipulating EMF objects generically, recording changes to your instances, and a validation framework. This core functionality does not have hard dependencies on Eclipse, and hence can be used in stand-alone applications. The core framework can be used as a Java XML binding framework similar to JAXB and XMLBeans.
  2. The edit framework includes generic reusable classes for building views of EMF models. It provides 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. It also provides a command framework, including a set of generic command implementation classes for making changes in a way that supports fully automatic undo and redo. It too can be used stand-alone or within an integrated Eclipse editor.
  3. The extensible code generation framework is capable of generating everything up to and including a complete editor for the EMF model. It includes a GUI from which generation options can be specified and generators can be invoked. The generation facility leverages the JDT (Java Development Tooling) component of Eclipse.

The Eclipse Modeling Framework Technology project (EMFT) extends these basic facilities to support a flexible validation framework for expressing constraints, including OCL as a constraint language, as well as transactional APIs for fine grained control of model changes, including roll back support when important model validity constraints are violated.

This tutorial will provide an introduction into EMF, describing EMF's components, EMF's meta-model (Ecore), as well as some of the newer and advanced capabilities available in EMF and EMFT today. Concrete examples and demos will motivate the use of EMF to help you understand how to carry out your day to day tasks using EMF most effectively. It will include the following:


This tutorial will include several hands-on exercises to reinforce and build on the presented material. In order to work on these exercises, you will need to bring a laptop with the latest milestones of the Eclipse SDK, EMF, EMFT Query/Transaction/Validation, and MDT OCL.

The easiest way to get everything you'll need is to download and install the Eclipse SDK 3.3M5eh and then install all of the features from the following Update Manager site:

Note that a Java 5.0 or later virtual machine is required to run these features. Please keep watching the site, as it will be updated in the days leading up to EclipseCon.

Ed Merks is the project lead of the Eclipse Modeling Framework project and a co-lead of the top-level Modeling project. He has many years of in-depth experience in the design and implementation of languages, frameworks, and application development environments. He holds a Ph.D. in computing science and is a co-author of the authoritative "Eclipse Modeling Framework, A Developer's Guide" (Addison-Wesley 2003). He works for IBM Rational Software at the Toronto Lab.

Dave Steinberg is a software developer at the IBM Toronto Lab. He has worked with Eclipse and modeling technologies since joining the company in 2001, and has been a committer on the EMF project since its debut at in 2002. He has designed and implemented numerous pieces of the framework, with a particular focus on the code generation tools and EMF.Edit, and is a co-author of the authoritative EMF book, "Eclipse Modeling Framework, A Developer's Guide" (Addison-Wesley 2003).

Kenn Hussey is a senior software developer for Rational Software, IBM Software Group in Ottawa, Canada. He is a Project Management Committee (PMC) member of the top-level Modeling project, lead of the Model Development Tools (MDT) project, and a committer on the Eclipse Modeling Framework (EMF) project at Eclipse.

Christian's professional experience consists almost entirely of building modeling software with Java and related technologies, from spatial data modeling with RDBMS for web-based GIS applications to software modeling with UML at IBM Rational Software. His last 3+ years have been spent in building modeling frameworks on EMF, lately as component lead for OCL and a subset of EMFT in the Eclipse Modeling Project. Other activities that he enjoys in and around his Ottawa, Canada home are woodworking, canoe-camping, and music.

Floor Plan

Gold sponsors

Ingres logo

BEA logo

IBM logo

Business Objects logo

Klocwork logo

Windriver logo

Red Hat logo

Actuate logo

Silver sponsors

Compuware logo

Sybase logo

Google logo






Code Gear




Innoopract logo

Lynux Works

Media sponsors

Eclipse Magazine logo logo

Methods and Tools logo

Eclipsezone logo

Addison-Wesley logo

Eclipse Magazin logo

Embedded Computing logo

SD Times logo

Enterprise Open Source logo

ACM Queue logo

TheServerSide Java Symposium

Eclipse Review logo

Software Test & Performance logo

Eclipse Developers Journal logo

Eclipse Source logo