SlideShare a Scribd company logo
1 of 41
Eclipse Modeling Framework ajaykemparaj@gmail.com http://www.theenmusketeers.com EMF
What is Eclipse ? Eclipse is a Java IDE Eclipse is an IDE Framework Eclipse + JDT = Java IDE First class framework for Java Language aware editor Incremental build Integrated debugging Eclipse + CDT = C/C++ IDE First class framework for C/C++ Language aware editor Refactoring, search Eclipse + PHP = PHP IDE Eclipse + JDT + CDT + PHP = Java, C/C++, PHP IDE ………….
Plug-in Plug-in Plug-in Eclipse is a Tools Framework Tools extend the Eclipse platform using plug-ins Business Intelligence and Reporting Tools (BIRT) Eclipse Communications Framework (ECF) Web Tools Project (WTP) Eclipse Modelling Framework (EMF) Graphical Editing Framework (GEF) Test and Performance Tooling Project (TPTP
Eclipse is a Application Framework Remove the IDE elements, Java language support, team development support, … and you’re left with a pretty comprehensive general application framework Support for multiple platforms Linux, Windows, Mac OSX, UNIX, embedded Rich widget set, graphics Native-OS integration (drag and drop, OLE/XPCOM integration) A platform for rich clients
Eclipse is all these things A Java IDE An IDE Framework A Tools Framework An Application Framework An Open Source Enabler A community An eco-system A foundation
Model Driven Architecture (MDA) • A software architecture proposed by the OMG (Object Management Group) • Application specified in high-level, Platform Independent Model (PIM) • Transformation technologies used to convert PIM to Platform Specific Model (PSM), implementation code • Includes several open modeling standards:  UML™ (Unified Modeling Language)  MOF (Meta-Object Facility)  XMI (XML Metadata Interchange)  CWM (Common Warehouse Model)
What is EMF ? EMF is a simple, pragmatic approach to modeling:  Allows us to generate some of the code that we write over and over, paving the way for more complex systems  Models are simple, but meant to be mixed with hand-written code  It’s real, proven technology (since 2002)
What EMF is ? ,[object Object]
Runtime Emulator for  your model
generator for Java Implementation of your ModelEMF is a  framework converting various forms of model into core model description called Ecore
Why EMF ? EMF is middle ground in the modeling vs. programming worlds Focus is on class diagram subset of UML modeling (object model) Transforms models into Java code Provides the infrastructure to use models effectively in your application Very low cost of entry  EMF is free and open source Full scale graphical modeling tool not required Reuses your knowledge of UML, XML Schema, or Java It’s real, proven technology (since 2002)
Some of Eclipse projects which are using EMF ,[object Object]
Web Tools Platform (WTP) Project
Test and Performance Tools Platform (TPTP) Project
Business Intelligence and Reporting Tools (BIRT) Project
Data Tools Platform (DTP) Project
Modeling : Graphical Modeling Framework (GMF),[object Object]
EMF Architecture
EMF Components • Core Runtime  	Notification framework 	 Ecore meta model  	Persistence (XML/XMI), validation, change model • EMF.Edit  	Support for model-based editors and viewers  	Default reflective editor • Codegen  	Code generator for application models and editors  	Extensible model importer/exporter framework
The Ecore(Meta) Model • EMF’s metamodel (model of a model)
Model Sources • EMF models can be defined in (at least) three ways: 1. Java Interfaces 2. UML Class Diagram 3. XML Schema
Java Interfaces public interface Item {   String getProductName();   void setProductName(String value); intgetQuantity();   void setQuantity(int value)   float getPrice();   void setPrice(float value); } public interface PurchaseOrder {   String getShipTo();   void setShipTo(String value);   String getBillTo();   void setBillTo(String value);   List getItems(); // List of Item } • Classes can be defined completely by a subset of members, supplemented by annotations
UML Class Diagram • Built-in support for Rational Rose® • UML2 support available with UML2 (from MDT)
XML Schema <?xml version="1.0" encoding="UTF-8"?> <xsd:schemaxmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/SimplePO" xmlns:po="http://www.example.com/SimplePO"> <xsd:complexType name="PurchaseOrder"> <xsd:sequence> <xsd:element name="shipTo" type="xsd:string"/> <xsd:element name="billTo" type="xsd:string"/> <xsd:element name="items" type=“po:Item" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="Item"> <xsd:sequence> <xsd:element name="productName" type="xsd:string"/> <xsd:element name="quantity" type="xsd:int"/> <xsd:element name="price" type="xsd:float"/> </xsd:sequence> </xsd:complexType> </xsd:schema>
Direct Ecore Modeling • Ecore models can be created directly  Sample Ecore editor (in EMF)  Ecore Tools graphical editor (from EMFT)
Code Generation (Simple)
Code Generation (Full)
Generated Model Code • Interface and implementation for each modeled class  Includes get/set accessors for attributes and references Interface public interface PurchaseOrder extends EObject { String getShipTo(); void setShipTo(String value); String getBillTo(); void setBillTo(String value); EList<Item> getItems(); } Implementation Class public class PurchaseOrderImpl extends EObjectImpl implements PurchaseOrder { ... }
Change Notification • Every EObject is also a notifier  Sends notification whenever an attribute or reference is changed  Observers can update views, dependent objects  Observers are also adapters Adapter Adapter adapter = ... purchaseOrder.eAdapters().add(adapter);
Factories and Packages • Factory to create instances of model classes • Package provides access to metadata POFactory factory = POFactory.eINSTANCE; PurchaseOrder order = factory.createPurchaseOrder(); POPackagepoPackage = POPackage.eINSTANCE; EClassitemClass = POPackage.Literals.ITEM; //or poPackage.getItem() EAttributepriceAttr = POPackage.Literals.ITEM__PRICE; //or poPackage.getItem_Price() //or itemClass.getEStructuralFeature(POPackage.ITEM__PRICE)
Persistence • Persisted data is referred to a resource • Objects can be spread out among a number of resources, within a resource set • Proxies represent referenced objects in other resources
Resource Set • Context for multiple resources that may have references among them • Usually just an instance of ResourceSetImpl • Provides factory method for creating new resources in the set ResourceSetrs = new ResourceSetImpl(); URI uri = URI.createFileURI("C:/data/po.xml"); Resource resource = rs.createResource(uri); • Also provides access to the registries, URI converter and default load options for the set
Resource • Container for objects that are to be persisted together ,[object Object]
 Access contents of resource via getContents()URI uri = URI.createFileURI("C:/data/po.xml"); Resource resource = rs.createResource(uri); resource.getContents().add(p1); resource.save(null); • EMF provides generic XMLResource implementation ,[object Object],<PurchaseOrder> <shipTo>John Doe</shipTo> <next>p2.xml#p2</next> </PurchaseOrder>
Registries • Resource Factory Registry ,[object Object]
 Based on URI scheme, filename extension or content type
 Determines the format for save/load
 If no registered resource factory found locally, delegates to	global registry: Resource.Factory.Registry.INSTANCE • Package Registry ,[object Object]

More Related Content

What's hot

алгоритм
алгоритмалгоритм
алгоритмbaterden
 
Data structure - mcqs
Data structure - mcqsData structure - mcqs
Data structure - mcqssuthi
 
Algoritm
AlgoritmAlgoritm
Algoritmshulam
 
файл, файлын оролт гаралт
файл, файлын оролт гаралтфайл, файлын оролт гаралт
файл, файлын оролт гаралтKhishighuu Myanganbuu
 
Diplom altai
Diplom altaiDiplom altai
Diplom altaialtaamecs
 
алгоритм шинжилгээ зохиомж
алгоритм шинжилгээ зохиомжалгоритм шинжилгээ зохиомж
алгоритм шинжилгээ зохиомжMijiddorj Renchin-Ochir
 
ділення десяткових дробів 5 клас
ділення десяткових  дробів 5 класділення десяткових  дробів 5 клас
ділення десяткових дробів 5 класAlVladimir
 
Розв’язування систем лінійних рівнянь
Розв’язування систем лінійних рівняньРозв’язування систем лінійних рівнянь
Розв’язування систем лінійних рівняньInna Gornikova
 
Ci prog tolgoi file хичээл 2
Ci prog tolgoi file хичээл 2Ci prog tolgoi file хичээл 2
Ci prog tolgoi file хичээл 2Urantuya Purevtseren
 
Lab10 1-it101
Lab10 1-it101Lab10 1-it101
Lab10 1-it101BPurev
 
многогранники обєми та площі поверхонь многогранників
многогранники обєми та площі поверхонь многогранниківмногогранники обєми та площі поверхонь многогранників
многогранники обєми та площі поверхонь многогранниківЮра Марчук
 
Computer graphic 1
Computer graphic 1Computer graphic 1
Computer graphic 1adminse03
 

What's hot (20)

Pl lecture6
Pl lecture6Pl lecture6
Pl lecture6
 
алгоритм
алгоритмалгоритм
алгоритм
 
Data structure - mcqs
Data structure - mcqsData structure - mcqs
Data structure - mcqs
 
Lab 13
Lab 13Lab 13
Lab 13
 
Java lecture5
Java lecture5Java lecture5
Java lecture5
 
Algoritm
AlgoritmAlgoritm
Algoritm
 
G++ & GCC
G++ & GCCG++ & GCC
G++ & GCC
 
Sw203 Lecture5 Class Acess Modifiers
Sw203 Lecture5 Class Acess ModifiersSw203 Lecture5 Class Acess Modifiers
Sw203 Lecture5 Class Acess Modifiers
 
файл, файлын оролт гаралт
файл, файлын оролт гаралтфайл, файлын оролт гаралт
файл, файлын оролт гаралт
 
Підготовка до ЗНО (стереометрія)
Підготовка до ЗНО (стереометрія)Підготовка до ЗНО (стереометрія)
Підготовка до ЗНО (стереометрія)
 
Diplom altai
Diplom altaiDiplom altai
Diplom altai
 
алгоритм шинжилгээ зохиомж
алгоритм шинжилгээ зохиомжалгоритм шинжилгээ зохиомж
алгоритм шинжилгээ зохиомж
 
ділення десяткових дробів 5 клас
ділення десяткових  дробів 5 класділення десяткових  дробів 5 клас
ділення десяткових дробів 5 клас
 
Лекц 1 (Алгоритм Програмчлал - 1)
Лекц 1 (Алгоритм Програмчлал - 1)Лекц 1 (Алгоритм Програмчлал - 1)
Лекц 1 (Алгоритм Програмчлал - 1)
 
Розв’язування систем лінійних рівнянь
Розв’язування систем лінійних рівняньРозв’язування систем лінійних рівнянь
Розв’язування систем лінійних рівнянь
 
Ci prog tolgoi file хичээл 2
Ci prog tolgoi file хичээл 2Ci prog tolgoi file хичээл 2
Ci prog tolgoi file хичээл 2
 
Lab10 1-it101
Lab10 1-it101Lab10 1-it101
Lab10 1-it101
 
многогранники обєми та площі поверхонь многогранників
многогранники обєми та площі поверхонь многогранниківмногогранники обєми та площі поверхонь многогранників
многогранники обєми та площі поверхонь многогранників
 
Lec8 break
Lec8 breakLec8 break
Lec8 break
 
Computer graphic 1
Computer graphic 1Computer graphic 1
Computer graphic 1
 

Viewers also liked

EclipseCon 2006: Introduction to the Eclipse Modeling Framework
EclipseCon 2006: Introduction to the Eclipse Modeling FrameworkEclipseCon 2006: Introduction to the Eclipse Modeling Framework
EclipseCon 2006: Introduction to the Eclipse Modeling FrameworkDave Steinberg
 
Epf composer overviewpart2
Epf composer overviewpart2Epf composer overviewpart2
Epf composer overviewpart2Abdelkader Larbi
 
EclipseCon 2007: Effective Use of the Eclipse Modeling Framework
EclipseCon 2007: Effective Use of the Eclipse Modeling FrameworkEclipseCon 2007: Effective Use of the Eclipse Modeling Framework
EclipseCon 2007: Effective Use of the Eclipse Modeling FrameworkDave Steinberg
 
What every Eclipse developer should know about EMF - Tutorial at EclipseCon
What every Eclipse developer should know about EMF - Tutorial at EclipseConWhat every Eclipse developer should know about EMF - Tutorial at EclipseCon
What every Eclipse developer should know about EMF - Tutorial at EclipseConJonasHelming
 
EclipseCon 2008: Fundamentals of the Eclipse Modeling Framework
EclipseCon 2008: Fundamentals of the Eclipse Modeling FrameworkEclipseCon 2008: Fundamentals of the Eclipse Modeling Framework
EclipseCon 2008: Fundamentals of the Eclipse Modeling FrameworkDave Steinberg
 
The Eclipse Modeling Framework and MDA
The Eclipse Modeling Framework and MDAThe Eclipse Modeling Framework and MDA
The Eclipse Modeling Framework and MDAelliando dias
 
Estructuras de datos
Estructuras de datos Estructuras de datos
Estructuras de datos Roimer Guape
 
Isabelle Coudere - Interior designer - Portfolio - Book
Isabelle Coudere - Interior designer - Portfolio - BookIsabelle Coudere - Interior designer - Portfolio - Book
Isabelle Coudere - Interior designer - Portfolio - BookIsabelle Coudere
 
9th grade dance flyer
9th grade dance flyer9th grade dance flyer
9th grade dance flyerCody Mims
 
Afifeh Halabi Editorial Design Portfolio
Afifeh Halabi Editorial Design PortfolioAfifeh Halabi Editorial Design Portfolio
Afifeh Halabi Editorial Design PortfolioAfifeh Halabi
 
Bases de datos de informacion y documentación en internet
Bases de datos de informacion y documentación en internetBases de datos de informacion y documentación en internet
Bases de datos de informacion y documentación en internetJuan pablo Peñuela
 
Laura Huser's Design Portf
Laura Huser's Design PortfLaura Huser's Design Portf
Laura Huser's Design Portflaura_huser
 
Portfolio – black and white images
Portfolio – black and white imagesPortfolio – black and white images
Portfolio – black and white imagesBenilda Beretta
 
Patterns in Eclipse
Patterns in EclipsePatterns in Eclipse
Patterns in EclipseMadhu Samuel
 
Eclipse Modeling & MoDisco - An Introduction to Modeling and (Model Driven) R...
Eclipse Modeling & MoDisco - An Introduction to Modeling and (Model Driven) R...Eclipse Modeling & MoDisco - An Introduction to Modeling and (Model Driven) R...
Eclipse Modeling & MoDisco - An Introduction to Modeling and (Model Driven) R...Hugo Bruneliere
 
What every Eclipse developer should know about EMF
What every Eclipse developer should know about EMFWhat every Eclipse developer should know about EMF
What every Eclipse developer should know about EMFPhilip Langer
 

Viewers also liked (20)

EclipseCon 2006: Introduction to the Eclipse Modeling Framework
EclipseCon 2006: Introduction to the Eclipse Modeling FrameworkEclipseCon 2006: Introduction to the Eclipse Modeling Framework
EclipseCon 2006: Introduction to the Eclipse Modeling Framework
 
Epf composer overviewpart2
Epf composer overviewpart2Epf composer overviewpart2
Epf composer overviewpart2
 
EclipseCon 2007: Effective Use of the Eclipse Modeling Framework
EclipseCon 2007: Effective Use of the Eclipse Modeling FrameworkEclipseCon 2007: Effective Use of the Eclipse Modeling Framework
EclipseCon 2007: Effective Use of the Eclipse Modeling Framework
 
What every Eclipse developer should know about EMF - Tutorial at EclipseCon
What every Eclipse developer should know about EMF - Tutorial at EclipseConWhat every Eclipse developer should know about EMF - Tutorial at EclipseCon
What every Eclipse developer should know about EMF - Tutorial at EclipseCon
 
EclipseCon 2008: Fundamentals of the Eclipse Modeling Framework
EclipseCon 2008: Fundamentals of the Eclipse Modeling FrameworkEclipseCon 2008: Fundamentals of the Eclipse Modeling Framework
EclipseCon 2008: Fundamentals of the Eclipse Modeling Framework
 
The Eclipse Modeling Framework and MDA
The Eclipse Modeling Framework and MDAThe Eclipse Modeling Framework and MDA
The Eclipse Modeling Framework and MDA
 
Gramática
GramáticaGramática
Gramática
 
Estructuras de datos
Estructuras de datos Estructuras de datos
Estructuras de datos
 
academic and proof
academic and proofacademic and proof
academic and proof
 
ÉTICA PROFESIONAL
ÉTICA PROFESIONALÉTICA PROFESIONAL
ÉTICA PROFESIONAL
 
Isabelle Coudere - Interior designer - Portfolio - Book
Isabelle Coudere - Interior designer - Portfolio - BookIsabelle Coudere - Interior designer - Portfolio - Book
Isabelle Coudere - Interior designer - Portfolio - Book
 
9th grade dance flyer
9th grade dance flyer9th grade dance flyer
9th grade dance flyer
 
Afifeh Halabi Editorial Design Portfolio
Afifeh Halabi Editorial Design PortfolioAfifeh Halabi Editorial Design Portfolio
Afifeh Halabi Editorial Design Portfolio
 
Bases de datos de informacion y documentación en internet
Bases de datos de informacion y documentación en internetBases de datos de informacion y documentación en internet
Bases de datos de informacion y documentación en internet
 
REA13_PREVIEW_Final
REA13_PREVIEW_FinalREA13_PREVIEW_Final
REA13_PREVIEW_Final
 
Laura Huser's Design Portf
Laura Huser's Design PortfLaura Huser's Design Portf
Laura Huser's Design Portf
 
Portfolio – black and white images
Portfolio – black and white imagesPortfolio – black and white images
Portfolio – black and white images
 
Patterns in Eclipse
Patterns in EclipsePatterns in Eclipse
Patterns in Eclipse
 
Eclipse Modeling & MoDisco - An Introduction to Modeling and (Model Driven) R...
Eclipse Modeling & MoDisco - An Introduction to Modeling and (Model Driven) R...Eclipse Modeling & MoDisco - An Introduction to Modeling and (Model Driven) R...
Eclipse Modeling & MoDisco - An Introduction to Modeling and (Model Driven) R...
 
What every Eclipse developer should know about EMF
What every Eclipse developer should know about EMFWhat every Eclipse developer should know about EMF
What every Eclipse developer should know about EMF
 

Similar to Eclipse Modeling Framework

Eclipse World 2007: Fundamentals of the Eclipse Modeling Framework
Eclipse World 2007: Fundamentals of the Eclipse Modeling FrameworkEclipse World 2007: Fundamentals of the Eclipse Modeling Framework
Eclipse World 2007: Fundamentals of the Eclipse Modeling FrameworkDave Steinberg
 
Runtime Environment Of .Net Divya Rathore
Runtime Environment Of .Net Divya RathoreRuntime Environment Of .Net Divya Rathore
Runtime Environment Of .Net Divya RathoreEsha Yadav
 
Dotnetintroduce 100324201546-phpapp02
Dotnetintroduce 100324201546-phpapp02Dotnetintroduce 100324201546-phpapp02
Dotnetintroduce 100324201546-phpapp02Wei Sun
 
Eclipse 40 and Eclipse e4
Eclipse 40 and Eclipse e4 Eclipse 40 and Eclipse e4
Eclipse 40 and Eclipse e4 Lars Vogel
 
Eclipse 40 - Eclipse Summit Europe 2010
Eclipse 40 - Eclipse Summit Europe 2010Eclipse 40 - Eclipse Summit Europe 2010
Eclipse 40 - Eclipse Summit Europe 2010Lars Vogel
 
Eclipse e4 Overview
Eclipse e4 OverviewEclipse e4 Overview
Eclipse e4 OverviewLars Vogel
 
Eclipse e4 on Java Forum Stuttgart 2010
Eclipse e4 on Java Forum Stuttgart 2010Eclipse e4 on Java Forum Stuttgart 2010
Eclipse e4 on Java Forum Stuttgart 2010Lars Vogel
 
Choose'10: Ralf Laemmel - Dealing Confortably with the Confusion of Tongues
Choose'10: Ralf Laemmel - Dealing Confortably with the Confusion of TonguesChoose'10: Ralf Laemmel - Dealing Confortably with the Confusion of Tongues
Choose'10: Ralf Laemmel - Dealing Confortably with the Confusion of TonguesCHOOSE
 
Exploring SharePoint with F#
Exploring SharePoint with F#Exploring SharePoint with F#
Exploring SharePoint with F#Talbott Crowell
 
Use Eclipse technologies to build a modern embedded IDE
Use Eclipse technologies to build a modern embedded IDEUse Eclipse technologies to build a modern embedded IDE
Use Eclipse technologies to build a modern embedded IDEBenjamin Cabé
 
DotNet Introduction
DotNet IntroductionDotNet Introduction
DotNet IntroductionWei Sun
 
Smoothing Your Java with DSLs
Smoothing Your Java with DSLsSmoothing Your Java with DSLs
Smoothing Your Java with DSLsintelliyole
 
Bring the fun back to java
Bring the fun back to javaBring the fun back to java
Bring the fun back to javaciklum_ods
 
iPhone development from a Java perspective (Jazoon '09)
iPhone development from a Java perspective (Jazoon '09)iPhone development from a Java perspective (Jazoon '09)
iPhone development from a Java perspective (Jazoon '09)Netcetera
 
Whidbey old
Whidbey old Whidbey old
Whidbey old grenaud
 
Visual Studio .NET2010
Visual Studio .NET2010Visual Studio .NET2010
Visual Studio .NET2010Satish Verma
 
Entity Framework V1 and V2
Entity Framework V1 and V2Entity Framework V1 and V2
Entity Framework V1 and V2ukdpe
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...Fabio Franzini
 
Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008Guillaume Laforge
 

Similar to Eclipse Modeling Framework (20)

Eclipse World 2007: Fundamentals of the Eclipse Modeling Framework
Eclipse World 2007: Fundamentals of the Eclipse Modeling FrameworkEclipse World 2007: Fundamentals of the Eclipse Modeling Framework
Eclipse World 2007: Fundamentals of the Eclipse Modeling Framework
 
Runtime Environment Of .Net Divya Rathore
Runtime Environment Of .Net Divya RathoreRuntime Environment Of .Net Divya Rathore
Runtime Environment Of .Net Divya Rathore
 
Dotnetintroduce 100324201546-phpapp02
Dotnetintroduce 100324201546-phpapp02Dotnetintroduce 100324201546-phpapp02
Dotnetintroduce 100324201546-phpapp02
 
Eclipse 40 and Eclipse e4
Eclipse 40 and Eclipse e4 Eclipse 40 and Eclipse e4
Eclipse 40 and Eclipse e4
 
Entity Framework 4
Entity Framework 4Entity Framework 4
Entity Framework 4
 
Eclipse 40 - Eclipse Summit Europe 2010
Eclipse 40 - Eclipse Summit Europe 2010Eclipse 40 - Eclipse Summit Europe 2010
Eclipse 40 - Eclipse Summit Europe 2010
 
Eclipse e4 Overview
Eclipse e4 OverviewEclipse e4 Overview
Eclipse e4 Overview
 
Eclipse e4 on Java Forum Stuttgart 2010
Eclipse e4 on Java Forum Stuttgart 2010Eclipse e4 on Java Forum Stuttgart 2010
Eclipse e4 on Java Forum Stuttgart 2010
 
Choose'10: Ralf Laemmel - Dealing Confortably with the Confusion of Tongues
Choose'10: Ralf Laemmel - Dealing Confortably with the Confusion of TonguesChoose'10: Ralf Laemmel - Dealing Confortably with the Confusion of Tongues
Choose'10: Ralf Laemmel - Dealing Confortably with the Confusion of Tongues
 
Exploring SharePoint with F#
Exploring SharePoint with F#Exploring SharePoint with F#
Exploring SharePoint with F#
 
Use Eclipse technologies to build a modern embedded IDE
Use Eclipse technologies to build a modern embedded IDEUse Eclipse technologies to build a modern embedded IDE
Use Eclipse technologies to build a modern embedded IDE
 
DotNet Introduction
DotNet IntroductionDotNet Introduction
DotNet Introduction
 
Smoothing Your Java with DSLs
Smoothing Your Java with DSLsSmoothing Your Java with DSLs
Smoothing Your Java with DSLs
 
Bring the fun back to java
Bring the fun back to javaBring the fun back to java
Bring the fun back to java
 
iPhone development from a Java perspective (Jazoon '09)
iPhone development from a Java perspective (Jazoon '09)iPhone development from a Java perspective (Jazoon '09)
iPhone development from a Java perspective (Jazoon '09)
 
Whidbey old
Whidbey old Whidbey old
Whidbey old
 
Visual Studio .NET2010
Visual Studio .NET2010Visual Studio .NET2010
Visual Studio .NET2010
 
Entity Framework V1 and V2
Entity Framework V1 and V2Entity Framework V1 and V2
Entity Framework V1 and V2
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...
 
Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008
 

Recently uploaded

Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 

Recently uploaded (20)

Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 

Eclipse Modeling Framework

  • 1. Eclipse Modeling Framework ajaykemparaj@gmail.com http://www.theenmusketeers.com EMF
  • 2. What is Eclipse ? Eclipse is a Java IDE Eclipse is an IDE Framework Eclipse + JDT = Java IDE First class framework for Java Language aware editor Incremental build Integrated debugging Eclipse + CDT = C/C++ IDE First class framework for C/C++ Language aware editor Refactoring, search Eclipse + PHP = PHP IDE Eclipse + JDT + CDT + PHP = Java, C/C++, PHP IDE ………….
  • 3. Plug-in Plug-in Plug-in Eclipse is a Tools Framework Tools extend the Eclipse platform using plug-ins Business Intelligence and Reporting Tools (BIRT) Eclipse Communications Framework (ECF) Web Tools Project (WTP) Eclipse Modelling Framework (EMF) Graphical Editing Framework (GEF) Test and Performance Tooling Project (TPTP
  • 4. Eclipse is a Application Framework Remove the IDE elements, Java language support, team development support, … and you’re left with a pretty comprehensive general application framework Support for multiple platforms Linux, Windows, Mac OSX, UNIX, embedded Rich widget set, graphics Native-OS integration (drag and drop, OLE/XPCOM integration) A platform for rich clients
  • 5. Eclipse is all these things A Java IDE An IDE Framework A Tools Framework An Application Framework An Open Source Enabler A community An eco-system A foundation
  • 6. Model Driven Architecture (MDA) • A software architecture proposed by the OMG (Object Management Group) • Application specified in high-level, Platform Independent Model (PIM) • Transformation technologies used to convert PIM to Platform Specific Model (PSM), implementation code • Includes several open modeling standards: UML™ (Unified Modeling Language) MOF (Meta-Object Facility) XMI (XML Metadata Interchange) CWM (Common Warehouse Model)
  • 7. What is EMF ? EMF is a simple, pragmatic approach to modeling: Allows us to generate some of the code that we write over and over, paving the way for more complex systems Models are simple, but meant to be mixed with hand-written code It’s real, proven technology (since 2002)
  • 8.
  • 10. generator for Java Implementation of your ModelEMF is a framework converting various forms of model into core model description called Ecore
  • 11. Why EMF ? EMF is middle ground in the modeling vs. programming worlds Focus is on class diagram subset of UML modeling (object model) Transforms models into Java code Provides the infrastructure to use models effectively in your application Very low cost of entry EMF is free and open source Full scale graphical modeling tool not required Reuses your knowledge of UML, XML Schema, or Java It’s real, proven technology (since 2002)
  • 12.
  • 13. Web Tools Platform (WTP) Project
  • 14. Test and Performance Tools Platform (TPTP) Project
  • 15. Business Intelligence and Reporting Tools (BIRT) Project
  • 16. Data Tools Platform (DTP) Project
  • 17.
  • 19. EMF Components • Core Runtime Notification framework Ecore meta model Persistence (XML/XMI), validation, change model • EMF.Edit Support for model-based editors and viewers Default reflective editor • Codegen Code generator for application models and editors Extensible model importer/exporter framework
  • 20. The Ecore(Meta) Model • EMF’s metamodel (model of a model)
  • 21.
  • 22. Model Sources • EMF models can be defined in (at least) three ways: 1. Java Interfaces 2. UML Class Diagram 3. XML Schema
  • 23.
  • 24. Java Interfaces public interface Item { String getProductName(); void setProductName(String value); intgetQuantity(); void setQuantity(int value) float getPrice(); void setPrice(float value); } public interface PurchaseOrder { String getShipTo(); void setShipTo(String value); String getBillTo(); void setBillTo(String value); List getItems(); // List of Item } • Classes can be defined completely by a subset of members, supplemented by annotations
  • 25. UML Class Diagram • Built-in support for Rational Rose® • UML2 support available with UML2 (from MDT)
  • 26. XML Schema <?xml version="1.0" encoding="UTF-8"?> <xsd:schemaxmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/SimplePO" xmlns:po="http://www.example.com/SimplePO"> <xsd:complexType name="PurchaseOrder"> <xsd:sequence> <xsd:element name="shipTo" type="xsd:string"/> <xsd:element name="billTo" type="xsd:string"/> <xsd:element name="items" type=“po:Item" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="Item"> <xsd:sequence> <xsd:element name="productName" type="xsd:string"/> <xsd:element name="quantity" type="xsd:int"/> <xsd:element name="price" type="xsd:float"/> </xsd:sequence> </xsd:complexType> </xsd:schema>
  • 27. Direct Ecore Modeling • Ecore models can be created directly Sample Ecore editor (in EMF) Ecore Tools graphical editor (from EMFT)
  • 30.
  • 31. Generated Model Code • Interface and implementation for each modeled class Includes get/set accessors for attributes and references Interface public interface PurchaseOrder extends EObject { String getShipTo(); void setShipTo(String value); String getBillTo(); void setBillTo(String value); EList<Item> getItems(); } Implementation Class public class PurchaseOrderImpl extends EObjectImpl implements PurchaseOrder { ... }
  • 32. Change Notification • Every EObject is also a notifier Sends notification whenever an attribute or reference is changed Observers can update views, dependent objects Observers are also adapters Adapter Adapter adapter = ... purchaseOrder.eAdapters().add(adapter);
  • 33. Factories and Packages • Factory to create instances of model classes • Package provides access to metadata POFactory factory = POFactory.eINSTANCE; PurchaseOrder order = factory.createPurchaseOrder(); POPackagepoPackage = POPackage.eINSTANCE; EClassitemClass = POPackage.Literals.ITEM; //or poPackage.getItem() EAttributepriceAttr = POPackage.Literals.ITEM__PRICE; //or poPackage.getItem_Price() //or itemClass.getEStructuralFeature(POPackage.ITEM__PRICE)
  • 34. Persistence • Persisted data is referred to a resource • Objects can be spread out among a number of resources, within a resource set • Proxies represent referenced objects in other resources
  • 35. Resource Set • Context for multiple resources that may have references among them • Usually just an instance of ResourceSetImpl • Provides factory method for creating new resources in the set ResourceSetrs = new ResourceSetImpl(); URI uri = URI.createFileURI("C:/data/po.xml"); Resource resource = rs.createResource(uri); • Also provides access to the registries, URI converter and default load options for the set
  • 36.
  • 37.
  • 38.
  • 39. Based on URI scheme, filename extension or content type
  • 40. Determines the format for save/load
  • 41.
  • 42. Used during loading to access factory for instantiating classes
  • 43. If no registered package found locally, delegates to global registry: EPackage.Registry.INSTANCE
  • 44. Reflective EObject API • All EMF classes implement EObject interface • Provides an efficient API for manipulating objects reflectively Used by framework (e.g. persistence framework, copy utility, editing commands) public interface EObject { EClasseClass(); Object eGet(EStructuralFeaturesf); void eSet(EStructuralFeaturesf, Object val); ... }
  • 45. Reflective EObject API • Efficient generated switch-based implementation of reflective methods public Object eGet(intfeatureID, ...) { switch (featureID) { case POPackage.PURCHASE_ORDER__ITEMS: return getItems(); case POPackage.PURCHASE_ORDER__SHIP_TO: return getShipTo(); case POPackage.PURCHASE_ORDER__BILL_TO: return getBillTo(); ... } ... }
  • 46.
  • 47. Regeneration and Merge • The EMF generator is a merging generator /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String getName() { return name; } •@generated elements are replaced/removed • To preserve changes mark @generated NOT
  • 48. Recording Changes  EMF provides facilities for recording the changes made to instances of an Ecore model  Change Model  An EMF model for representing changes to objects  Directly references affected objects  Includes “apply changes” capability  Change Recorder  EMF adapter  Monitors objects to produce a change description (an instance of the change model)
  • 49.
  • 50. Change Recorder  Can be attached to EObjects, Resources, and ResourceSets  Produces a description of the changes needed to return to the original state (a reverse delta) PurchaseOrder order = ... order.setBillTo("123 Elm St."); ChangeRecorder recorder = new ChangeRecorder(); recorder.beginRecording(Collections.singleton(order)); order.setBillTo("456 Cherry St."); ChangeDescription change = recorder.endRecording();  Result: a change description with one change, setting billTo to “123 Elm St.”
  • 51. Diagnostician • Diagnostician walks a containment tree of objects, dispatching to package-specific validators Diagnostician.validate() is the usual entry point Detailed results accumulated as Diagnostics Diagnostician validator = Diagnostician.INSTANCE; Diagnostic diagnostic = validator.validate(order); if (diagnostic.getSeverity() == Diagnostic.ERROR) { // handle error } for (Diagnostic child : diagnostic.getChildren()) { // handle child diagnostic }
  • 52. Demo Creation of ecore Code Generation Code Walkthrough
  • 53. Resources • EMF documentation in Eclipse Help Overviews, tutorials, API reference • EMF project Web site http://www.eclipse.org/modeling/emf/ Downloads, documentation, FAQ,newsgroup, Bugzilla, Wiki • Eclipse Modeling Framework, by Frank Budinsky Ed Merks