EMF 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, a set of adapter classes that enable viewing and command-based editing of the model, and a basic editor. Models can be specified using annotated Java, XML documents, or modeling tools like Rational Rose, then imported into EMF. Most important of all, EMF provides the foundation for interoperability with other EMF-based tools and applications.

The following packages contain the classes that implement the several features provided by EMF, including:

- an API for the Ecore Model;
- an API for modeling abstract persistent resources; and
- an API for modeling changes to instances of EMF models.