Eclipse Modeling Framework Project (EMF)

The EMF project is a modeling framework and code generation facility for building tools and other applications based on a structured data model. From a model specification described in XMI, EMF provides tools and runtime support to produce a set of Java classes for the model, along with a set of adapter classes that enable viewing and command-based editing of the model, and a basic editor.

EMF builds include XML Schema Definition (XSD), now a component of the Model Development Tools (MDT) project, and an EMF-based implementation of Service Data Objects (SDO). XSD provides a model and API for manipulating components of an XML Schema, with access to the underlying DOM representation of the schema document.

Other subprojects, such as Model Query, Model Transaction, and Validation Framework, are available separately.

The next release of EMF is scheduled for the end of June 2010, along with the rest of the Helios projects.

EMF (Core)

EMF consists of three fundamental pieces:

  • EMF - The core EMF framework includes a meta model (Ecore) for describing models and runtime support for the models including change notification, persistence support with default XMI serialization, and a very efficient reflective API for manipulating EMF objects generically.
  • EMF.Edit - The EMF.Edit framework includes generic reusable classes for building editors for 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.
    • A command framework, including a set of generic command implementation classes for building editors that support fully automatic undo and redo.
  • EMF.Codegen - The EMF code generation facility is capable of generating everything needed to build a complete editor for an 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.

Three levels of code generation are supported:

  • Model - provides Java interfaces and implementation classes for all the classes in the model, plus a factory and package (meta data) implementation class.
  • Adapters - generates implementation classes (called ItemProviders) that adapt the model classes for editing and display.
  • Editor - produces a properly structured editor that conforms to the recommended style for Eclipse EMF model editors and serves as a starting point from which to start customizing.

All generators support regeneration of code while preserving user modifications. The generators can be invoked either through the GUI or headless from a command line.

Want to learn more about how easy it is to use this exciting new technology to help you boost your Java programming productivity, application compatibility and integration? Start by reading the overview documents and the tutorial, followed by downloading the driver, and then sit back and watch your applications write themselves! Well, not completely, but this wouldn't be a sales pitch if there weren't a little bit of exaggeration.


The CDO (Connected Data Objects) Model Repository is a distributed shared model framework for EMF models and meta models. CDO is also a model runtime environment with a focus on orthogonal aspects like model scalability, transactionality, persistence, distribution, queries and more.

CDO has a 3-tier architecture supporting EMF-based client applications, featuring a central model repository server and leveraging different types of pluggable data storage back-ends like relational databases, object databases and file systems. The default client/server communication protocol is implemented with the Net4j Signalling Platform.


EMF Compare brings model comparison to the EMF framework, this tool provides generic support for any kind of metamodel in order to compare and merge models. The objectives of this component are to provide a stable and efficient generic implementation of model comparison and to provide an extensible framework for specific needs.

Model Query

The query component provides capabilities to specify and execute queries against EMF model elements and their contents.

Validation (Incubation) PhaseModel Query 2

The Query2 component facilitates the process of search and retrieval of emf model elements in a structured format with an additional advantage that resource loading is minimized during execution.

Model Transaction

The transaction component provides a model management layer built on top of EMF for managing EMF resources. It provides API that include extensions to the EditingDomain and related APIs of the EMF.Edit framework, and an internal model of transactions. It consists of two layers: a non-Eclipse core, providing primarily the "transaction model", and an Eclipse workspace integration layer.


Net4j is an extensible client-server system based on the Eclipse Runtime and the Spring Framework.


Service Data Objects (SDO) is a framework that simplifies and unifies data application development in a service oriented architecture (SOA). It supports and integrates XML and incorporates J2EE patterns and best practices. EMF includes an EMF-based implementation of Service Data Objects.


Teneo is a database persistency solution for EMF using Hibernate or EclipseLink. It supports automatic creation of EMF to Relational Mappings. EMF Objects can be stored and retrieved using advanced queries (HQL or EJB-QL).

Validation Framework

The validation component provides capabilities used to ensure model integrity.

News on Twitter
Build Feeds Build News

Sorry, can't access database.

Modeling Corner

Want to contribute models, projects, files, ideas, utilities, or code to EMF or any other part of the Modeling Project? Now you can!

Have a look, post your comments, submit a link, or just read what others have written. Details here.