What every Eclipse developer should know about EMF

11
© 2014 EclipseSource | http://www.eclipsesource.com 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

Transcript of What every Eclipse developer should know about EMF

Page 1: What every Eclipse developer should know about EMF

© 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

Page 2: What every Eclipse developer should know about EMF

© 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, ...

Page 3: What every Eclipse developer should know about EMF

© 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

Page 4: What every Eclipse developer should know about EMF

© 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 ;-)

Page 5: What every Eclipse developer should know about 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

Page 6: What every Eclipse developer should know about EMF

© 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

Page 7: What every Eclipse developer should know about EMF

© 2014 EclipseSource | http://www.eclipsesource.com

Enough theory… time for a demo

Page 8: What every Eclipse developer should know about EMF

© 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

Page 9: What every Eclipse developer should know about EMF

© 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

Page 10: What every Eclipse developer should know about EMF

© 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

Page 11: What every Eclipse developer should know about EMF

© 2014 EclipseSource | http://www.eclipsesource.com

Please leave feedback