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) is a common standard for data models, many technologies and frameworks are based on. This includes server solutions, persistence frameworks, UI frameworks and support for transformations. Please have a look at the modeling project for an overview of EMF technologies.
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
- 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 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.