Contenu connexe
Similaire à What every Eclipse developer should know about EMF (20)
Plus de Philip Langer (6)
What every Eclipse developer should know about EMF
- 1. What every Eclipse developer
should 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
- 2. 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
- 3. 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
- 4. 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
- 5. 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
- 6. 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
- 8. 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
- 9. 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
- 10. 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