© 2014 EclipseSource | http://www.eclipsesource.com
What every Eclipse developershould know about the
Eclipse Modeling Framework (EMF)EclipseCon Europe 2014, 2014-10-29, Ludwigsburg
Philip Langer and Maximilian Koegel{planger|mkoegel}@eclipsesource.com
© 2014 EclipseSource | http://www.eclipsesource.com
Why should you consider using the EMF?
● Every program is build around a (data) model○ Implicit in the developer’s mind○ Sometimes, it’s defined in UML, XSD, JSON Schema, ...
© 2014 EclipseSource | http://www.eclipsesource.com
Why should you consider using the EMF?
● Goal of EMF○ Extract the intrinsic “model”○ Generate model-dependent artifacts automatically
© 2014 EclipseSource | http://www.eclipsesource.com
What is EMF?
● EMF is ...○ A simple, pragmatic approach to (meta-)modeling○ Mature and proven modeling framework (since 2002)○ Supported by a large and very active open source community○ Surrounded by a huge ecosystem of tools and frameworks○ Used as the basis for tens of thousands of applications and DSLs
● EMF is not ...○ UML○ A modeling tool
… but both can be (and have been) built using EMF ;-)
© 2014 EclipseSource | http://www.eclipsesource.com
Building blocks of EMF
● Modeling language and environment○ Develop your data/domain model○ Import from existing specifications
(UML, XSD, annotated Java interfaces)
● Code generator○ Generation of high-quality Java API○ Solving complex issues,
such as bidirectional references, containments, ...
● Frameworks for working/processing models○ Change notifications○ Command-based manipulation○ Validation and model persistence○ Generic API and reflection mechanisms
© 2014 EclipseSource | http://www.eclipsesource.com
Key Characteristics of EMF
● Modeling language and environment○ Focusing on the essentials○ Pragmatic and small modeling language
● Extensible and high-quality APIs○ Generated code is build to be extended○ Separation of interfaces and implementation○ Uses several proven design patterns
■ Observer, adapter, abstract factories, etc.
● Domain independent and generic○ Applicable to any domain○ Support to process instances generically
© 2014 EclipseSource | http://www.eclipsesource.com
Enough theory… time for a demo
© 2014 EclipseSource | http://www.eclipsesource.com
Huge Ecosystem on top of EMF (1)
● Storing models○ Default serialization with XMI○ EMFStore, CDO, Teneo
● Editing of instances○ Default editor○ EEF: Editor with improved usability○ Grammar-driven approach: e.g., Xtext○ Graphical modeling frameworks: e.g., Sirius, GMF, Graphiti○ Form-based UIs: EMFForms (brief demo)
EEF Xtext Sirius
© 2014 EclipseSource | http://www.eclipsesource.com
Huge Ecosystem on top of EMF (2)
● Collaboration and versioning○ Live collaboration: CDO○ Versioning support: EMF Compare, CDO, and EMFStore○ Demo: EMF Compare
● Model-to-model and model-to-text generation○ Model-to-model: ATL, QVT, Xtend○ Model-to-text: Acceleo, Xtend
● Data/model migration○ Change your data model: Ecore Editor with Edapt Tooling○ Migrate your data conforming to the data model: Edapt Runtime
© 2014 EclipseSource | http://www.eclipsesource.com
Key Take-Aways & Getting Started
● EMF is a framework for the data model of any application:○ High-quality implementation for common functionality
● EMF has a large ecosystem of frameworks for data○ CRUD Editing○ Graphical Editing○ Serialization: XML, JSON, Database, Model Repository○ Versioning and Comparison○ Many more…
● Get started with EMF○ Getting started with EMF Tutorial: http://eclipsesource.com/blogs/tutorials/emf-tutorial/ ○ EMF Training○ EMF Book and EMF Newsgroup
© 2014 EclipseSource | http://www.eclipsesource.com
Please leave feedback