Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

What every Eclipse developer should know about EMF

3,865 views

Published on

Published in: Software

What every Eclipse developer should know about EMF

  1. 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. 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. 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. 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. 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. 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
  7. 7. Enough theory… time for a demo © 2014 EclipseSource | http://www.eclipsesource.com
  8. 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. 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. 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
  11. 11. Please leave feedback © 2014 EclipseSource | http://www.eclipsesource.com

×