Eclipse Modeling Framework (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 (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

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.

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 getting started,
followed by more documentation,
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.