What is EMF?
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.
I think EMF is pretty cool. I draw a simple class diagram in Omondo (www.omondo.org) and it generates code that handles get/set, change notification, object persistance in XML via SDOs (you can change this to an RDB without messing with your model), and an editing framework with undo/redo. Or generate your model from a set of get functions, and it will code gen from that too. Or import rational rose models. Or write the XML yourself if you're a masochist. As used in IBM's WebSphere. Goes great with GEF (graphical editing framework) as detailed for 2.1 Eclipse at http://publib-b.boulder.ibm.com/Redbooks.nsf/RedbookAbstracts/sg246302.html?Open