Eclipse is probably best known as a first class Java IDE, but it is so much more than that.
In this talk, I will present the different tools that makes up the Eclipse Modeling Project from the simple (EMF) to the very complex (QVT/O). The emphasis will be on the immediately useful techniques with plenty of demonstrations.
Presentation made for notesnet.dk 2010-10-26
1. PR0029 - 2010-05-31
Redistribution and other use of this material requires written permission from The RCP Company.
Eclipse Modeling Tools - 2010-10-26
Eclipse is probably best known as a first class Java IDE, but it is so much more than
that.
In this talk, I will present the different tools that makes up the Eclipse Modeling
Project from the simple (EMF) to the very complex (QVT/O). The emphasis will be on
the immediately useful techniques with plenty of demonstrations.
2. PR0029 - 2010-05-31
2
Agenda
Eclipse is… what exactly?
The Eclipse Architecture
The Eclipse Modeling Project and sub-projects
EMF, EMFT, GMP, GMT, MDT, M2M, M2T, and TMF
The Eclipse Modeling Tools
EMF
OCL
CDO
XText
GMF
Jet
Xpand
QVT/O
12. PR0029 - 2010-05-31
12
Eclipse Modeling Project
“The Eclipse Modeling Project focuses on the evolution and promotion of model-based
development technologies within the Eclipse community by providing a unified set of
modeling frameworks, tooling, and standards implementations.”
13. PR0029 - 2010-05-31
13
Relevant Modeling Sub-Projects
Administrative Projects
EMF, EMFT, GMP, GMT, MDT, M2M, M2T, and TMF
Some Relevant Technical Projects
EMF – Eclipse Modeling Framework – is the base technology used to represent
models
OCL – Object Constraint Language – allows you to specify advanced constraints
and invariants
CDO – Connected Data Objects – is a distributed shared model framework for EMF
models and meta models
XText – is a text based editor framework for EMF models based on EBNF grammars
GMF – Graphical Modeling Framwork – is a graphics based editor framework for
EMF models
JET – Java Emitter Templates – is a JSP like language for generating Java code from
a model
Xpand – is a high-level template language used to translate models to text
QVT/O – Operational QVT (Query/View/Transformation) – is a very, very high-level
language for model to model transformations
Teneo – is a database persistency solution for EMF using Hibernate or EclipseLink
14. PR0029 - 2010-05-31
14
EMF
Eclipse Modeling Framework – is the base technology used to represent models
Logical models based on ER diagrams
16. L0087 - 2010-09-19
16
Logical Model for EMF
~ Named Element
Model Element
0..1
Typed ElementClassifier
Structural Feature
Attribute
Reference
Class
Data Type
0..*
0..*
0..*
type
opposite
superTypes
0..*
17. PR0029 - 2010-05-31
17
OCL
Object Constraint Language – allows you to specify advanced constraints and
invariants
E.g.
Item price is positive:
Context Item: inv self.price > 0
It has exactly one Saddle:
Context Bike: inv self.items->select(i : Item | i.oclIsKindOf(Saddle))->size() == 1
Can be tested using the interactive console
Can be embedded directly in Ecore
18. PR0029 - 2010-05-31
18
CDO
Connected Data Objects – is a distributed shared model framework for EMF models
and meta models
19. PR0029 - 2010-05-31
19
XText
XText – is a text based editor framework for EMF models based on EBNF grammars
events
doorClosed D1CL
drawOpened D2OP
…
end
resetEvents
doorOpened
end
commands
unlockPanel PNUL
lockPanel PNLK
…
end
state idle
actions {unlockDoor lockPanel}
doorClosed => active
end
state active
drawOpened => waitingForLight
lightOn => waitingForDraw
end
…
grammar my.pack.SecretCompartments
with org.eclipse.xtext.common.Terminals
generate secretcompartment "http://www.eclipse.org/secretcompartment"
Statemachine :
'events'
(events+=Event)+
'end'
('resetEvents'
(resetEvents+=[Event])+
'end')?
'commands'
(commands+=Command)+
'end'
(states+=State)+;
Event : name=ID code=ID;
Command : name=ID code=ID;
State :
'state' name=ID
('actions' '{' (actions+=[Command])+ '}')?
(transitions+=Transition)*
'end';
Transition :
event=[Event] '=>' state=[State];
20. PR0029 - 2010-05-31
20
GMF
Graphical Modeling Framwork – is a graphics based editor framework for EMF models
In itself also a number of models that describe how objects and graphical items and
tools maps
21. PR0029 - 2010-05-31
21
JET
Java Emitter Templates – is a JSP like language for generating Java code from a model
public <%if (isEnum) {%>enum<%} else {%>final class<%}%> <%=genEnum.getName()%> <%if (isEnum) {%>implements<%}
else {%>extends<%}%> <%=genModel.isSuppressEMFMetaData() && !genModel.isSuppressInterfaces() ? "Internal" +
genEnum.getName() : genModel.getImportedName(isEnum ? "org.eclipse.emf.common.util.Enumerator" :
"org.eclipse.emf.common.util.AbstractEnumerator")%>
{
<%if (isEnum) {%>
<%if (genEnum.getGenEnumLiterals().isEmpty()) {%>
;
<%}else {%>
<%for (Iterator<GenEnumLiteral> l = genEnum.getGenEnumLiterals().iterator(); l.hasNext(); )
{ GenEnumLiteral genEnumLiteral = l.next(); %>
/**
* The '<em><b><%=genEnumLiteral.getFormattedName()%></b></em>' literal object.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #<%=genEnumLiteral.getEnumLiteralValueConstantName()%>
* @generated
* @ordered
*/
<%=genEnumLiteral.getEnumLiteralInstanceConstantName()%>(<%=genEnumLiteral.getValue()%>, "<
%=genEnumLiteral.getName()%>", <%=Literals.toStringLiteral(genEnumLiteral.getLiteral(), genModel)%>)<%if
(l.hasNext()) {%>,<%} else {%>;<%}%><%=genModel.getNonNLS()%><%=genModel.getNonNLS(2)%>
<%}%>
<%}%>
<%}%>
22. PR0029 - 2010-05-31
22
Xpand
Xpand – is a high-level template language used to translate models to text
Expandable and type-safe
Has an aspect-based extension system to allow users to extend current templates
«DEFINE Root FOR data::DataModel»
«EXPAND Entity FOREACH entity»
«ENDDEFINE»
«DEFINE Entity FOR data::Entity»
«FILE name + ".java"»
public class «name» {
«FOREACH attribute AS a»
// bad practice
private «a.type» «a.name»;
«ENDFOREACH»
}
«ENDFILE»
«ENDDEFINE»
23. PR0029 - 2010-05-31
23
Eclipse.dk – The Danish Eclipse Society
Eclipse.dk was created in Marts 2007 as a meeting place for everyone interested in the
Eclipse (www.eclipse.org) platform.
The purpose of Eclipse.dk is as follows:
To promote the knowledge of Eclipse in Denmark.
To create networks amongst danish Eclipse-users and developers.
To build knowledge on Eclipse in Denmark, especially
In danish institutes of higher education.
Between danish companies developing applications based on Eclipse.
Create and maintain a web site on Eclipse for danish users – eclipse.dk.
Strengthen the relations between danish and international Eclipse-users and
organizations.
The eclipse.dk society has members representing not only vendors of Eclipse-based
products and services, but also users of the platform and representatives from
institutions of higher education.
25. PR0029 - 2010-05-31
25
About Me
Tonny Madsen, Founder and Owner of The RCP Company
20 years of experience in system development in major companies
9 years experience as the Systems Architect of an 20+ MLoC project
8 years of experience with Eclipse and Eclipse RCP
Solutions Member of the Eclipse Foundation
Chairman of Eclipse.dk
Extern Lecturer at IT-University on Model Driven Development and
Domain Specific Languages
Regular speaker at EclipseCon, Eclipse Summit, etc
26. PR0029 - 2010-05-31
26
If You Want to Know More about Eclipse
The Foundation:
http://eclipse.org
The Danish User Group:
http://eclipse.dk
The training:
http://www.eclipse.org/community/training/classes.php
Resources on Eclipse:
http://www.eclipse.org/resources/
Consolidated Blog:
http://planeteclipse.org/
27. PR0029 - 2010-05-31
27
If You Want to Know More about Modeling
The Project:
http://eclipse.org/modeling/
Downloading Eclipse for Modeling:
http://www.eclipse.org/downloads/packages/eclipse-modeling-tools-includes-
incubating-components/heliossr1
The training:
Not yet, but coming after the Summer
ITU have a 14 weeks class on “Model Driven Development” -
https://mit.itu.dk/ucs/cb_www/course.sml?
course_id=913525&semester_id=912846
Tutorials on modeling
Notes de l'éditeur
Just to make everybody aware that they actually know about Eclipse already. It is known technology – not new technology. ESB, web services and BPM are all considered new technology…
The current view of Eclipse according to the Eclipse Foundation. Really, the same view as when Eclipse was first conceived.
This is the prototype of the banking desktop. It looks and feels like an Eclipse application. Just see the L&F. No serious presentation branding has been performed… yet…
One area where e4 would have helped – the look could be Nordea look instead of Eclipse look.
Is this Eclipse RCP?
The perspective switcher is different!
Views in the “same position” of the perspective – a so-called folder – are shown differently.
The “Launch” button
Based on Eclipse RCP!
Early demo based on Eclipse RCP 3.1
Look of some native widgets has been changed!
UI is a mix of SWT and Native Notes® windows
The workbench is recognizable yet different
Domino, IBM, Lotus, Notes and Workplace Client Technology are trademarks or registered trademark of International Business Machines Corp. in the United States, other countries, or both.
IBM Lotus Notes look&feel was designed by Mary Beth Raven.
Would have been easier with e4, as this would have eased the structural changes as well.