SlideShare ist ein Scribd-Unternehmen logo
1 von 54
Developer Suite Use Eclipse technologiesto build a modern embedded IDE Benjamin CabéGaétan MoriceEclipseCon 2010  January 21, 2010 Sierra Wireless Proprietary and Confidential 1
Requirements January 21, 2010 Sierra Wireless Proprietary and Confidential 2
Requirements Whatis M2M ? Definition : “M2M refers to data communication between machines.” API/Web Services Connectivity Network Asset Customer Application Communication Device
Requirements Connectivity Network Asset Customer Application Communication Device API/Web Services ,[object Object],Operated & Hosted  M2M Services Platform ,[object Object]
Patented world class Eclipse based IDE to develop embedded applicationsand to generate widgets for end-users.,[object Object]
Requirements Users profiles Newbies Solution providers Multiple targets Sierra Wireless devices Embedded Linux …
Technical solution January 21, 2010 Sierra Wireless Proprietary and Confidential 7
Editors Navigator Validation Model Editor Code Compilation Navigator Target Navigator Communication Features
Model Features
Modeling EMF - Eclipse Modeling Framework The model is the pillar of the tool Used to model what an embeddedprojectis Benefitsfrom EMF Notifications Serialization Reflective API … all the incredible EMF tools (GMF, Validation, Xpand, Ecore Tools, …)
Modeling
Navigator Model Features
Navigator Objectives 1:1 Mapping between Project and Model Display informations in the model as project’s artefacts
Navigator Workspaceintegration AdapterFactorytransforms IProjectinto Model Project Model Project intoIproject publicclassProjectAdapterFactoryimplementsIAdapterFactory{ 	@Override 	public Object getAdapter(Object adaptableObject, Class adapterType) { 		Object result = null; 		// Bi-directional adapter IProject <----> M2MProject 		if (adaptableObjectinstanceofIProject && adapterType.equals(Project.class)) { result = adaptToModel((IProject) adaptableObject); 		} 		elseif (adaptableObjectinstanceof Project && adapterType.equals(IProject.class)) { result = adaptIProject((Project) adaptableObject, adapterType); 		} 		returnresult; 	} }
Navigator Workspaceintegration EMF Transaction Global model repository TransactionalEditing Domain publicclassProjectActivatorextendsPlugin{ 	publicstaticfinal String TRANSACTIONAL_EDITING_DOMAIN_ID = "com.anwrt.ec598.project.editingDomain"; ... 	publicTransactionalEditingDomaingetEditingDomain(){ TransactionalEditingDomainshared = TransactionalEditingDomain.Registry.INSTANCE .getEditingDomain(TRANSACTIONAL_EDITING_DOMAIN_ID); 		returnshared; 	} 	... }
Navigator Project Explorer Displays model objects as the Project structure Based on Common Navigator Framework Extensible treeview Rathercomplex API But reallypowerful We use an internal model to define the structure (nodesonlyused to group or display informations) Extension Points:org.eclipse.ui.navigator.* Excellent tutorial: “Building a Common Navigator based viewer”
Navigator Project Explorer Result
Editors Navigator Features Model
Model dition Forms editors Forms + EMF + databinding Create UI Bind UI to model privatevoidcreateContent(FormToolkittoolkit, Composite parent) { 	Composite composite = toolkit.createComposite(parent, SWT.NONE); GridDataFactory.fillDefaults().grab(true, false).applyTo(composite); GridLayoutFactory.fillDefaults().numColumns(2).applyTo(composite); toolkit.createLabel(composite, "Name:", SWT.NONE); _textName = toolkit.createText(composite, "", SWT.BORDER); GridDataFactory.fillDefaults().grab(true, false).applyTo(_textName); } privatevoidbind() { DataBindingContextbindingContext = newEMFDataBindingContext(); 	// -- Bind the Name bindingContext.bindValue(SWTObservables.observeText(_textName, SWT.FocusOut), EMFEditObservables.observeDetailValue(Realm.getDefault(), getEditingDomain(), _myEObject, M2MPackage.eINSTANCE.getINamedElement_Name())); }
Model edition Forms editors Result Available in PDE Incubator: EMF-FormsEditor to beused for next-generation PDE editors
Model edition Graphical Editor: GMF Uses GMF generator to bootstrap Heavy use of GMF Runtime Model GMF generation Generatededitor Customization Modified editor
Model edition Graphical Editor: GMF Otherfeatures Rotation Automatic port creation HTML Tooltips Extensible presentation Custom figures canbedefinedusing an extension point
Model edition Graphical Editor: GMF Result
Editors Navigator Validation Features Model
Model validation EMF Validation Extensible (needed for specific-targetconstraints) Constraints are registeredusing an extension point We use only the batch mode Extension points: org.eclipse.emf.validation.* publicIStatusvalidate (EObject model, IProgressMonitor monitor) { IBatchValidatorbatchValidator = ModelValidationService.getInstance() 							.newValidator(EvaluationMode.BATCH); batchValidator.setIncludeLiveConstraints(true); batchValidator.setReportSuccesses(false); 	returnbatchValidator.validate(model, monitor); }
Model validation Integrated in a builder Transparent and automatic (on save) Uses Problem Markers Coupledwith quick fixes for a better user experience
Editors Navigator Validation Code Features Model
Code generation Xpand Performance issue Workflowistoo slow then use only Java API Example of template «IMPORT model» «DEFINE file FORSourceComponentClass» «FILE project.name.toLowerCase() + "/" + name + ".java"-» package «project.name.toLowerCase()»; publicclass «name» extendsComponentClass{ «IFmethods.select(m | m.kind.toString() == "EVENT").size > 0» 	publicvoidreceiveEvent(intinputEventMethod,Objectvalue){ «FOREACHmethods.select(m | m.kind.toString() == "EVENT") AS m-» 		//TODOhandleEvent:"+ «m.name.toUpperCase()»: «ENDFOREACH-» 	} «ENDIF» } «ENDFILE» «ENDDEFINE»
Code generation Xpand Call the Xpandgeneratorprogrammatically publicvoid generate(finalEObject object, IProgressMonitor monitor) throwsCoreException { Generatorgenerator = newGenerator(); 	// define the metamodelused in the template MetaModel m2mMetamodel = newEmfMetaModel(M2MPackage.eINSTANCE); generator.addMetaModel(m2mMetamodel); 	// define the template generator.setExpand("templates::SourceComponentClass::file FOR component"); 	// define the output folder 	Outlet outlet = new Outlet("C:/myOutput/src"); generator.addOutlet(outlet); 	// configure protectedregions generator.setPrSrcPaths("C:/myOutput/src"); generator.setPrDefaultExcludes(true); 	// define the EObject input WorkflowContextDefaultImplctx = newWorkflowContextDefaultImpl(); 	ctx.set("component", object); 	// run the generator generator.invoke(ctx, newProgressMonitorAdapter(monitor), newIssuesImpl()); }
Code generation Integrated in a builder Transparent and automatic (on save) Synchronizationbetween model and code Incrementalgeneration
Editors Navigator Validation Model Editor Code Navigator Features
Code editors and navigator CDT Code navigation Syntaxhighlight Content assist Refactoring … LuaEclipse Based on DLTK 2
Code editors and navigator CDT
Editors Navigator Validation Model Editor Code Navigator Features
Round-tripping Mandatory for a good user experience Be able to edit code or model indifferently Continuoussynchronization First study: EMF Compare Good candidate but toorich for ourneeds Solution: Direct modification of existingmodels
Round-tripping Solution Integrated in a builder Synchronize Model and AST From code to model: Code Based on existingparser AST Java transformation Model (extractfrom code) Model (previous version) Merge Model (new version)
Editors Navigator Validation Model Editor Compilation Navigator Features Code
Compilation CDT - ManagedBuild System (MBS) Declarative creation of custom tool chains Through MBS Extension point Direct integration in CDT builder and preference A bit complex Mechanism of scanner discovery profiles to find tools binaries Extension Point: org.eclipse.ui.managebuilder.core.buildDefinition Excellent tutorial: CDT Plug-in Developer Guide Extension Point: org.eclipse.cdt.make.core.ScannerConfigurationDisccoveryProfile
Compilation CDT – MBS Result
Compilation CDT - Dependencies management Dependencies management Difficult with CDT Configuration, build artefacts, libraries include, header include to manage No generic rule => have to be hand craft Use of CDT API to access projects description Managed by refactoring process
Compilation CDT - Dependencies management publicclassModifyCProjectDependenciesChangeextends Change { privatefinalIProjectproject; ... public Change perform(IProgressMonitor pm) throws CoreException { ICProjectDescriptionprojectDescription = CDTPropertyManager.getProjectDescription(project); ICConfigurationDescription[] configurationDescription = projectDescription.getConfigurations(); ... } ... }
Editors Navigator Validation Model Editor Code Compilation Navigator Target Features
Features Editors Navigator Validation Model Editor Code Compilation Navigator Target Communication
Target communication  Objectives Make device’s services available Download Terminal … De-coupling of services and communication channel Extensible January 21, 2010 Sierra Wireless Proprietary and Confidential 44
Target communication  Target Communication Framework - TCF Embedded agent Asynchronous Protocol based on Command, Result Event Launch Config TerminalView Download Service Terminal Service Channel TCF Connection Manager Embedded Agent
Features Editors Navigator Validation Model Editor Code Compilation Navigator Target Navigator Communication
Target navigator Remote System Explorer - RSE GUI framework Tree Explorer Match well with TCF
Target navigator Remote System Explorer
Editors Navigator Validation Forms EMF Validation GMF Project Explorer + CNF Model Xpand AST Editor CDT Code Compilation CDT + DLTK Navigator TCF RSE Target Navigator Communication Features
Demo January 21, 2010 Sierra Wireless Proprietary and Confidential 50
Conclusion January 21, 2010 Sierra Wireless Proprietary and Confidential 51
The benefits of a large ecosystem Allows to createreallycomplexenvironmentquickly Coversdifferentskinds of domains Offersreactive support with the community Allows to focus on real added value
January 21, 2010 Sierra Wireless Proprietary and Confidential 53 Questions?
Gaétan Morice gmorice@sierrawireless.com Benjamin Cabé bcabe@sierrawireless.com

Weitere ähnliche Inhalte

Was ist angesagt?

AngularJs Workshop SDP December 28th 2014
AngularJs Workshop SDP December 28th 2014AngularJs Workshop SDP December 28th 2014
AngularJs Workshop SDP December 28th 2014Ran Wahle
 
Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점
Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점
Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점Jeado Ko
 
Client-side JavaScript
Client-side JavaScriptClient-side JavaScript
Client-side JavaScriptLilia Sfaxi
 
Ten Minutes To Tellurium
Ten Minutes To TelluriumTen Minutes To Tellurium
Ten Minutes To TelluriumJohn.Jian.Fang
 
Introduction to Google Guice
Introduction to Google GuiceIntroduction to Google Guice
Introduction to Google GuiceKnoldus Inc.
 
Rapid Prototyping with TurboGears2
Rapid Prototyping with TurboGears2Rapid Prototyping with TurboGears2
Rapid Prototyping with TurboGears2Alessandro Molina
 
Reactive Model-View-ViewModel Architecture
Reactive Model-View-ViewModel ArchitectureReactive Model-View-ViewModel Architecture
Reactive Model-View-ViewModel ArchitectureGyuwon Yi
 
Jug Guice Presentation
Jug Guice PresentationJug Guice Presentation
Jug Guice PresentationDmitry Buzdin
 
Large-Scale JavaScript Development
Large-Scale JavaScript DevelopmentLarge-Scale JavaScript Development
Large-Scale JavaScript DevelopmentAddy Osmani
 
Quick answers to Angular2+ Interview Questions
Quick answers to Angular2+ Interview QuestionsQuick answers to Angular2+ Interview Questions
Quick answers to Angular2+ Interview QuestionsLuis Martín Espino Rivera
 
Web Components for Java Developers
Web Components for Java DevelopersWeb Components for Java Developers
Web Components for Java DevelopersJoonas Lehtinen
 
angularJs Workshop
angularJs WorkshopangularJs Workshop
angularJs WorkshopRan Wahle
 
Quick Start to iOS Development
Quick Start to iOS DevelopmentQuick Start to iOS Development
Quick Start to iOS DevelopmentJussi Pohjolainen
 
Angular Interview Questions & Answers
Angular Interview Questions & AnswersAngular Interview Questions & Answers
Angular Interview Questions & AnswersRatnala Charan kumar
 
TangoWithDjango - ch8
TangoWithDjango - ch8TangoWithDjango - ch8
TangoWithDjango - ch8Asika Kuo
 
Working with AngularJS
Working with AngularJSWorking with AngularJS
Working with AngularJSAndré Vala
 
RICOH THETA x IoT Developers Contest : Cloud API Seminar (2nd installation)
RICOH THETA x IoT Developers Contest : Cloud API Seminar (2nd installation)RICOH THETA x IoT Developers Contest : Cloud API Seminar (2nd installation)
RICOH THETA x IoT Developers Contest : Cloud API Seminar (2nd installation)contest-theta360
 

Was ist angesagt? (20)

Stmik bandung
Stmik bandungStmik bandung
Stmik bandung
 
AngularJs Workshop SDP December 28th 2014
AngularJs Workshop SDP December 28th 2014AngularJs Workshop SDP December 28th 2014
AngularJs Workshop SDP December 28th 2014
 
Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점
Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점
Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점
 
Client-side JavaScript
Client-side JavaScriptClient-side JavaScript
Client-side JavaScript
 
Ten Minutes To Tellurium
Ten Minutes To TelluriumTen Minutes To Tellurium
Ten Minutes To Tellurium
 
Introduction to Google Guice
Introduction to Google GuiceIntroduction to Google Guice
Introduction to Google Guice
 
Rapid Prototyping with TurboGears2
Rapid Prototyping with TurboGears2Rapid Prototyping with TurboGears2
Rapid Prototyping with TurboGears2
 
Reactive Model-View-ViewModel Architecture
Reactive Model-View-ViewModel ArchitectureReactive Model-View-ViewModel Architecture
Reactive Model-View-ViewModel Architecture
 
Jug Guice Presentation
Jug Guice PresentationJug Guice Presentation
Jug Guice Presentation
 
Large-Scale JavaScript Development
Large-Scale JavaScript DevelopmentLarge-Scale JavaScript Development
Large-Scale JavaScript Development
 
Google Guice
Google GuiceGoogle Guice
Google Guice
 
Quick answers to Angular2+ Interview Questions
Quick answers to Angular2+ Interview QuestionsQuick answers to Angular2+ Interview Questions
Quick answers to Angular2+ Interview Questions
 
Web Components for Java Developers
Web Components for Java DevelopersWeb Components for Java Developers
Web Components for Java Developers
 
Working with Servlets
Working with ServletsWorking with Servlets
Working with Servlets
 
angularJs Workshop
angularJs WorkshopangularJs Workshop
angularJs Workshop
 
Quick Start to iOS Development
Quick Start to iOS DevelopmentQuick Start to iOS Development
Quick Start to iOS Development
 
Angular Interview Questions & Answers
Angular Interview Questions & AnswersAngular Interview Questions & Answers
Angular Interview Questions & Answers
 
TangoWithDjango - ch8
TangoWithDjango - ch8TangoWithDjango - ch8
TangoWithDjango - ch8
 
Working with AngularJS
Working with AngularJSWorking with AngularJS
Working with AngularJS
 
RICOH THETA x IoT Developers Contest : Cloud API Seminar (2nd installation)
RICOH THETA x IoT Developers Contest : Cloud API Seminar (2nd installation)RICOH THETA x IoT Developers Contest : Cloud API Seminar (2nd installation)
RICOH THETA x IoT Developers Contest : Cloud API Seminar (2nd installation)
 

Andere mochten auch

Open World Forum 2012 - Introduction to the Eclipse M2M Industry Working Group
Open World Forum 2012 - Introduction to the Eclipse M2M Industry Working GroupOpen World Forum 2012 - Introduction to the Eclipse M2M Industry Working Group
Open World Forum 2012 - Introduction to the Eclipse M2M Industry Working GroupBenjamin Cabé
 
Scalable Semantic Version Control for Linked Data Management (presented at 2n...
Scalable Semantic Version Control for Linked Data Management (presented at 2n...Scalable Semantic Version Control for Linked Data Management (presented at 2n...
Scalable Semantic Version Control for Linked Data Management (presented at 2n...Claudius Hauptmann
 
OpenSocial gadgets at Eclipse
OpenSocial gadgets at EclipseOpenSocial gadgets at Eclipse
OpenSocial gadgets at EclipseBenjamin Cabé
 
(E)Git + Tycho + Gerrit + Mylyn = #WIN @ Eclipse Day Toulouse 2012
(E)Git + Tycho + Gerrit + Mylyn = #WIN @ Eclipse Day Toulouse 2012(E)Git + Tycho + Gerrit + Mylyn = #WIN @ Eclipse Day Toulouse 2012
(E)Git + Tycho + Gerrit + Mylyn = #WIN @ Eclipse Day Toulouse 2012Benjamin Cabé
 

Andere mochten auch (6)

Open World Forum 2012 - Introduction to the Eclipse M2M Industry Working Group
Open World Forum 2012 - Introduction to the Eclipse M2M Industry Working GroupOpen World Forum 2012 - Introduction to the Eclipse M2M Industry Working Group
Open World Forum 2012 - Introduction to the Eclipse M2M Industry Working Group
 
Model my PDE!
Model my PDE!Model my PDE!
Model my PDE!
 
Scalable Semantic Version Control for Linked Data Management (presented at 2n...
Scalable Semantic Version Control for Linked Data Management (presented at 2n...Scalable Semantic Version Control for Linked Data Management (presented at 2n...
Scalable Semantic Version Control for Linked Data Management (presented at 2n...
 
OpenSocial gadgets at Eclipse
OpenSocial gadgets at EclipseOpenSocial gadgets at Eclipse
OpenSocial gadgets at Eclipse
 
(E)Git + Tycho + Gerrit + Mylyn = #WIN @ Eclipse Day Toulouse 2012
(E)Git + Tycho + Gerrit + Mylyn = #WIN @ Eclipse Day Toulouse 2012(E)Git + Tycho + Gerrit + Mylyn = #WIN @ Eclipse Day Toulouse 2012
(E)Git + Tycho + Gerrit + Mylyn = #WIN @ Eclipse Day Toulouse 2012
 
Semantic Versioning
Semantic VersioningSemantic Versioning
Semantic Versioning
 

Ähnlich wie Build a Modern Embedded IDE with Eclipse Technologies

2008 - TechDays PT: Building Software + Services with Volta
2008 - TechDays PT: Building Software + Services with Volta2008 - TechDays PT: Building Software + Services with Volta
2008 - TechDays PT: Building Software + Services with VoltaDaniel Fisher
 
Operator SDK for K8s using Go
Operator SDK for K8s using GoOperator SDK for K8s using Go
Operator SDK for K8s using GoCloudOps2005
 
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023Nicolas HAAN
 
Java programming concept
Java programming conceptJava programming concept
Java programming conceptSanjay Gunjal
 
.NET Portfolio
.NET Portfolio.NET Portfolio
.NET Portfoliomwillmer
 
How to create an Angular builder
How to create an Angular builderHow to create an Angular builder
How to create an Angular builderMaurizio Vitale
 
React Native for multi-platform mobile applications
React Native for multi-platform mobile applicationsReact Native for multi-platform mobile applications
React Native for multi-platform mobile applicationsMatteo Manchi
 
Whidbey old
Whidbey old Whidbey old
Whidbey old grenaud
 
"How to create an infrastructure in .NET", Leonid Chetverikov
"How to create an infrastructure in .NET", Leonid Chetverikov"How to create an infrastructure in .NET", Leonid Chetverikov
"How to create an infrastructure in .NET", Leonid ChetverikovFwdays
 
Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008Jonas Follesø
 
MongoDB.local Atlanta: Introduction to Serverless MongoDB
MongoDB.local Atlanta: Introduction to Serverless MongoDBMongoDB.local Atlanta: Introduction to Serverless MongoDB
MongoDB.local Atlanta: Introduction to Serverless MongoDBMongoDB
 
Developing your first application using FIWARE
Developing your first application using FIWAREDeveloping your first application using FIWARE
Developing your first application using FIWAREFIWARE
 
Intro to Eclipse Che, by Tyler Jewell
Intro to Eclipse Che, by Tyler JewellIntro to Eclipse Che, by Tyler Jewell
Intro to Eclipse Che, by Tyler Jewelljwi11iams
 
Extending Appcelerator Titanium Mobile through Native Modules
Extending Appcelerator Titanium Mobile through Native ModulesExtending Appcelerator Titanium Mobile through Native Modules
Extending Appcelerator Titanium Mobile through Native Modulesomorandi
 
Overview of CSharp MVC3 and EF4
Overview of CSharp MVC3 and EF4Overview of CSharp MVC3 and EF4
Overview of CSharp MVC3 and EF4Rich Helton
 
D22 Portlet Development With Open Source Frameworks
D22 Portlet Development With Open Source FrameworksD22 Portlet Development With Open Source Frameworks
D22 Portlet Development With Open Source FrameworksSunil Patil
 
D22 portlet development with open source frameworks
D22 portlet development with open source frameworksD22 portlet development with open source frameworks
D22 portlet development with open source frameworksSunil Patil
 
Azure Digital Twins.pdf
Azure Digital Twins.pdfAzure Digital Twins.pdf
Azure Digital Twins.pdfTomasz Kopacz
 

Ähnlich wie Build a Modern Embedded IDE with Eclipse Technologies (20)

2008 - TechDays PT: Building Software + Services with Volta
2008 - TechDays PT: Building Software + Services with Volta2008 - TechDays PT: Building Software + Services with Volta
2008 - TechDays PT: Building Software + Services with Volta
 
Csharp dot net
Csharp dot netCsharp dot net
Csharp dot net
 
Operator SDK for K8s using Go
Operator SDK for K8s using GoOperator SDK for K8s using Go
Operator SDK for K8s using Go
 
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023
 
Tdd,Ioc
Tdd,IocTdd,Ioc
Tdd,Ioc
 
Java programming concept
Java programming conceptJava programming concept
Java programming concept
 
.NET Portfolio
.NET Portfolio.NET Portfolio
.NET Portfolio
 
How to create an Angular builder
How to create an Angular builderHow to create an Angular builder
How to create an Angular builder
 
React Native for multi-platform mobile applications
React Native for multi-platform mobile applicationsReact Native for multi-platform mobile applications
React Native for multi-platform mobile applications
 
Whidbey old
Whidbey old Whidbey old
Whidbey old
 
"How to create an infrastructure in .NET", Leonid Chetverikov
"How to create an infrastructure in .NET", Leonid Chetverikov"How to create an infrastructure in .NET", Leonid Chetverikov
"How to create an infrastructure in .NET", Leonid Chetverikov
 
Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008
 
MongoDB.local Atlanta: Introduction to Serverless MongoDB
MongoDB.local Atlanta: Introduction to Serverless MongoDBMongoDB.local Atlanta: Introduction to Serverless MongoDB
MongoDB.local Atlanta: Introduction to Serverless MongoDB
 
Developing your first application using FIWARE
Developing your first application using FIWAREDeveloping your first application using FIWARE
Developing your first application using FIWARE
 
Intro to Eclipse Che, by Tyler Jewell
Intro to Eclipse Che, by Tyler JewellIntro to Eclipse Che, by Tyler Jewell
Intro to Eclipse Che, by Tyler Jewell
 
Extending Appcelerator Titanium Mobile through Native Modules
Extending Appcelerator Titanium Mobile through Native ModulesExtending Appcelerator Titanium Mobile through Native Modules
Extending Appcelerator Titanium Mobile through Native Modules
 
Overview of CSharp MVC3 and EF4
Overview of CSharp MVC3 and EF4Overview of CSharp MVC3 and EF4
Overview of CSharp MVC3 and EF4
 
D22 Portlet Development With Open Source Frameworks
D22 Portlet Development With Open Source FrameworksD22 Portlet Development With Open Source Frameworks
D22 Portlet Development With Open Source Frameworks
 
D22 portlet development with open source frameworks
D22 portlet development with open source frameworksD22 portlet development with open source frameworks
D22 portlet development with open source frameworks
 
Azure Digital Twins.pdf
Azure Digital Twins.pdfAzure Digital Twins.pdf
Azure Digital Twins.pdf
 

Mehr von Benjamin Cabé

IoT Developer Survey 2018
IoT Developer Survey 2018IoT Developer Survey 2018
IoT Developer Survey 2018Benjamin Cabé
 
Open Source for Industry 4.0 – Open IoT Summit NA 2018
Open Source for Industry 4.0 – Open IoT Summit NA 2018Open Source for Industry 4.0 – Open IoT Summit NA 2018
Open Source for Industry 4.0 – Open IoT Summit NA 2018Benjamin Cabé
 
JVM-Con 2017 – Java and IoT, will it blend?
JVM-Con 2017 – Java and IoT, will it blend?JVM-Con 2017 – Java and IoT, will it blend?
JVM-Con 2017 – Java and IoT, will it blend?Benjamin Cabé
 
Examining the emergent open source IoT ecosystem - IoT World Europe 2016
Examining the emergent open source IoT ecosystem - IoT World Europe 2016Examining the emergent open source IoT ecosystem - IoT World Europe 2016
Examining the emergent open source IoT ecosystem - IoT World Europe 2016Benjamin Cabé
 
Running UK railway with Eclipse Paho and Eclipse Mosquitto – Eclipse IoT Day ...
Running UK railway with Eclipse Paho and Eclipse Mosquitto – Eclipse IoT Day ...Running UK railway with Eclipse Paho and Eclipse Mosquitto – Eclipse IoT Day ...
Running UK railway with Eclipse Paho and Eclipse Mosquitto – Eclipse IoT Day ...Benjamin Cabé
 
The Right Tools for IoT Developers – Dan Gross @ Eclipse IoT Day ThingMonk 2016
The Right Tools for IoT Developers – Dan Gross @ Eclipse IoT Day ThingMonk 2016The Right Tools for IoT Developers – Dan Gross @ Eclipse IoT Day ThingMonk 2016
The Right Tools for IoT Developers – Dan Gross @ Eclipse IoT Day ThingMonk 2016Benjamin Cabé
 
On making standards organizations & open source communities work hand in hand
On making standards organizations & open source communities work hand in handOn making standards organizations & open source communities work hand in hand
On making standards organizations & open source communities work hand in handBenjamin Cabé
 
Open Source Internet of Things 101 – EclipseCon 2016
Open Source Internet of Things 101 – EclipseCon 2016Open Source Internet of Things 101 – EclipseCon 2016
Open Source Internet of Things 101 – EclipseCon 2016Benjamin Cabé
 
Building the IoT - Coding Serbia 2015
Building the IoT - Coding Serbia 2015Building the IoT - Coding Serbia 2015
Building the IoT - Coding Serbia 2015Benjamin Cabé
 
Devoxx 2015 - Building the Internet of Things with Eclipse IoT
Devoxx 2015 - Building the Internet of Things with Eclipse IoTDevoxx 2015 - Building the Internet of Things with Eclipse IoT
Devoxx 2015 - Building the Internet of Things with Eclipse IoTBenjamin Cabé
 
Manage all the things, small and big, with open source LwM2M implementations ...
Manage all the things, small and big, with open source LwM2M implementations ...Manage all the things, small and big, with open source LwM2M implementations ...
Manage all the things, small and big, with open source LwM2M implementations ...Benjamin Cabé
 
End-to-end IoT solutions with Java and the Eclipse IoT stack
End-to-end IoT solutions with Java and the Eclipse IoT stackEnd-to-end IoT solutions with Java and the Eclipse IoT stack
End-to-end IoT solutions with Java and the Eclipse IoT stackBenjamin Cabé
 
Powering your next IoT application with MQTT - JavaOne 2014 tutorial
Powering your next IoT application with MQTT - JavaOne 2014 tutorialPowering your next IoT application with MQTT - JavaOne 2014 tutorial
Powering your next IoT application with MQTT - JavaOne 2014 tutorialBenjamin Cabé
 
End-to-end IoT solutions with Java and Eclipse IoT
End-to-end IoT solutions with Java and Eclipse IoTEnd-to-end IoT solutions with Java and Eclipse IoT
End-to-end IoT solutions with Java and Eclipse IoTBenjamin Cabé
 
Open-source IoT cookbook
Open-source IoT cookbookOpen-source IoT cookbook
Open-source IoT cookbookBenjamin Cabé
 
Building the Internet of Things with Eclipse IoT - IoTBE meetup
Building the Internet of Things with Eclipse IoT - IoTBE meetupBuilding the Internet of Things with Eclipse IoT - IoTBE meetup
Building the Internet of Things with Eclipse IoT - IoTBE meetupBenjamin Cabé
 
Building the Internet of Things with Eclipse IoT - JavaLand 2014
Building the Internet of Things with Eclipse IoT - JavaLand 2014Building the Internet of Things with Eclipse IoT - JavaLand 2014
Building the Internet of Things with Eclipse IoT - JavaLand 2014Benjamin Cabé
 
What's new at Eclipse IoT - EclipseCon 2014
What's new at Eclipse IoT - EclipseCon 2014What's new at Eclipse IoT - EclipseCon 2014
What's new at Eclipse IoT - EclipseCon 2014Benjamin Cabé
 
Overview of Eclipse IoT projects - IoT Day Grenoble
Overview of Eclipse IoT projects - IoT Day GrenobleOverview of Eclipse IoT projects - IoT Day Grenoble
Overview of Eclipse IoT projects - IoT Day GrenobleBenjamin Cabé
 
Open (source) API for the Internet of Things - APIdays 2013
Open (source) API for the Internet of Things - APIdays 2013Open (source) API for the Internet of Things - APIdays 2013
Open (source) API for the Internet of Things - APIdays 2013Benjamin Cabé
 

Mehr von Benjamin Cabé (20)

IoT Developer Survey 2018
IoT Developer Survey 2018IoT Developer Survey 2018
IoT Developer Survey 2018
 
Open Source for Industry 4.0 – Open IoT Summit NA 2018
Open Source for Industry 4.0 – Open IoT Summit NA 2018Open Source for Industry 4.0 – Open IoT Summit NA 2018
Open Source for Industry 4.0 – Open IoT Summit NA 2018
 
JVM-Con 2017 – Java and IoT, will it blend?
JVM-Con 2017 – Java and IoT, will it blend?JVM-Con 2017 – Java and IoT, will it blend?
JVM-Con 2017 – Java and IoT, will it blend?
 
Examining the emergent open source IoT ecosystem - IoT World Europe 2016
Examining the emergent open source IoT ecosystem - IoT World Europe 2016Examining the emergent open source IoT ecosystem - IoT World Europe 2016
Examining the emergent open source IoT ecosystem - IoT World Europe 2016
 
Running UK railway with Eclipse Paho and Eclipse Mosquitto – Eclipse IoT Day ...
Running UK railway with Eclipse Paho and Eclipse Mosquitto – Eclipse IoT Day ...Running UK railway with Eclipse Paho and Eclipse Mosquitto – Eclipse IoT Day ...
Running UK railway with Eclipse Paho and Eclipse Mosquitto – Eclipse IoT Day ...
 
The Right Tools for IoT Developers – Dan Gross @ Eclipse IoT Day ThingMonk 2016
The Right Tools for IoT Developers – Dan Gross @ Eclipse IoT Day ThingMonk 2016The Right Tools for IoT Developers – Dan Gross @ Eclipse IoT Day ThingMonk 2016
The Right Tools for IoT Developers – Dan Gross @ Eclipse IoT Day ThingMonk 2016
 
On making standards organizations & open source communities work hand in hand
On making standards organizations & open source communities work hand in handOn making standards organizations & open source communities work hand in hand
On making standards organizations & open source communities work hand in hand
 
Open Source Internet of Things 101 – EclipseCon 2016
Open Source Internet of Things 101 – EclipseCon 2016Open Source Internet of Things 101 – EclipseCon 2016
Open Source Internet of Things 101 – EclipseCon 2016
 
Building the IoT - Coding Serbia 2015
Building the IoT - Coding Serbia 2015Building the IoT - Coding Serbia 2015
Building the IoT - Coding Serbia 2015
 
Devoxx 2015 - Building the Internet of Things with Eclipse IoT
Devoxx 2015 - Building the Internet of Things with Eclipse IoTDevoxx 2015 - Building the Internet of Things with Eclipse IoT
Devoxx 2015 - Building the Internet of Things with Eclipse IoT
 
Manage all the things, small and big, with open source LwM2M implementations ...
Manage all the things, small and big, with open source LwM2M implementations ...Manage all the things, small and big, with open source LwM2M implementations ...
Manage all the things, small and big, with open source LwM2M implementations ...
 
End-to-end IoT solutions with Java and the Eclipse IoT stack
End-to-end IoT solutions with Java and the Eclipse IoT stackEnd-to-end IoT solutions with Java and the Eclipse IoT stack
End-to-end IoT solutions with Java and the Eclipse IoT stack
 
Powering your next IoT application with MQTT - JavaOne 2014 tutorial
Powering your next IoT application with MQTT - JavaOne 2014 tutorialPowering your next IoT application with MQTT - JavaOne 2014 tutorial
Powering your next IoT application with MQTT - JavaOne 2014 tutorial
 
End-to-end IoT solutions with Java and Eclipse IoT
End-to-end IoT solutions with Java and Eclipse IoTEnd-to-end IoT solutions with Java and Eclipse IoT
End-to-end IoT solutions with Java and Eclipse IoT
 
Open-source IoT cookbook
Open-source IoT cookbookOpen-source IoT cookbook
Open-source IoT cookbook
 
Building the Internet of Things with Eclipse IoT - IoTBE meetup
Building the Internet of Things with Eclipse IoT - IoTBE meetupBuilding the Internet of Things with Eclipse IoT - IoTBE meetup
Building the Internet of Things with Eclipse IoT - IoTBE meetup
 
Building the Internet of Things with Eclipse IoT - JavaLand 2014
Building the Internet of Things with Eclipse IoT - JavaLand 2014Building the Internet of Things with Eclipse IoT - JavaLand 2014
Building the Internet of Things with Eclipse IoT - JavaLand 2014
 
What's new at Eclipse IoT - EclipseCon 2014
What's new at Eclipse IoT - EclipseCon 2014What's new at Eclipse IoT - EclipseCon 2014
What's new at Eclipse IoT - EclipseCon 2014
 
Overview of Eclipse IoT projects - IoT Day Grenoble
Overview of Eclipse IoT projects - IoT Day GrenobleOverview of Eclipse IoT projects - IoT Day Grenoble
Overview of Eclipse IoT projects - IoT Day Grenoble
 
Open (source) API for the Internet of Things - APIdays 2013
Open (source) API for the Internet of Things - APIdays 2013Open (source) API for the Internet of Things - APIdays 2013
Open (source) API for the Internet of Things - APIdays 2013
 

Kürzlich hochgeladen

Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 

Kürzlich hochgeladen (20)

Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 

Build a Modern Embedded IDE with Eclipse Technologies

  • 1. Developer Suite Use Eclipse technologiesto build a modern embedded IDE Benjamin CabéGaétan MoriceEclipseCon 2010 January 21, 2010 Sierra Wireless Proprietary and Confidential 1
  • 2. Requirements January 21, 2010 Sierra Wireless Proprietary and Confidential 2
  • 3. Requirements Whatis M2M ? Definition : “M2M refers to data communication between machines.” API/Web Services Connectivity Network Asset Customer Application Communication Device
  • 4.
  • 5.
  • 6. Requirements Users profiles Newbies Solution providers Multiple targets Sierra Wireless devices Embedded Linux …
  • 7. Technical solution January 21, 2010 Sierra Wireless Proprietary and Confidential 7
  • 8. Editors Navigator Validation Model Editor Code Compilation Navigator Target Navigator Communication Features
  • 10. Modeling EMF - Eclipse Modeling Framework The model is the pillar of the tool Used to model what an embeddedprojectis Benefitsfrom EMF Notifications Serialization Reflective API … all the incredible EMF tools (GMF, Validation, Xpand, Ecore Tools, …)
  • 13. Navigator Objectives 1:1 Mapping between Project and Model Display informations in the model as project’s artefacts
  • 14. Navigator Workspaceintegration AdapterFactorytransforms IProjectinto Model Project Model Project intoIproject publicclassProjectAdapterFactoryimplementsIAdapterFactory{ @Override public Object getAdapter(Object adaptableObject, Class adapterType) { Object result = null; // Bi-directional adapter IProject <----> M2MProject if (adaptableObjectinstanceofIProject && adapterType.equals(Project.class)) { result = adaptToModel((IProject) adaptableObject); } elseif (adaptableObjectinstanceof Project && adapterType.equals(IProject.class)) { result = adaptIProject((Project) adaptableObject, adapterType); } returnresult; } }
  • 15. Navigator Workspaceintegration EMF Transaction Global model repository TransactionalEditing Domain publicclassProjectActivatorextendsPlugin{ publicstaticfinal String TRANSACTIONAL_EDITING_DOMAIN_ID = "com.anwrt.ec598.project.editingDomain"; ... publicTransactionalEditingDomaingetEditingDomain(){ TransactionalEditingDomainshared = TransactionalEditingDomain.Registry.INSTANCE .getEditingDomain(TRANSACTIONAL_EDITING_DOMAIN_ID); returnshared; } ... }
  • 16. Navigator Project Explorer Displays model objects as the Project structure Based on Common Navigator Framework Extensible treeview Rathercomplex API But reallypowerful We use an internal model to define the structure (nodesonlyused to group or display informations) Extension Points:org.eclipse.ui.navigator.* Excellent tutorial: “Building a Common Navigator based viewer”
  • 19. Model dition Forms editors Forms + EMF + databinding Create UI Bind UI to model privatevoidcreateContent(FormToolkittoolkit, Composite parent) { Composite composite = toolkit.createComposite(parent, SWT.NONE); GridDataFactory.fillDefaults().grab(true, false).applyTo(composite); GridLayoutFactory.fillDefaults().numColumns(2).applyTo(composite); toolkit.createLabel(composite, "Name:", SWT.NONE); _textName = toolkit.createText(composite, "", SWT.BORDER); GridDataFactory.fillDefaults().grab(true, false).applyTo(_textName); } privatevoidbind() { DataBindingContextbindingContext = newEMFDataBindingContext(); // -- Bind the Name bindingContext.bindValue(SWTObservables.observeText(_textName, SWT.FocusOut), EMFEditObservables.observeDetailValue(Realm.getDefault(), getEditingDomain(), _myEObject, M2MPackage.eINSTANCE.getINamedElement_Name())); }
  • 20. Model edition Forms editors Result Available in PDE Incubator: EMF-FormsEditor to beused for next-generation PDE editors
  • 21. Model edition Graphical Editor: GMF Uses GMF generator to bootstrap Heavy use of GMF Runtime Model GMF generation Generatededitor Customization Modified editor
  • 22. Model edition Graphical Editor: GMF Otherfeatures Rotation Automatic port creation HTML Tooltips Extensible presentation Custom figures canbedefinedusing an extension point
  • 23. Model edition Graphical Editor: GMF Result
  • 25. Model validation EMF Validation Extensible (needed for specific-targetconstraints) Constraints are registeredusing an extension point We use only the batch mode Extension points: org.eclipse.emf.validation.* publicIStatusvalidate (EObject model, IProgressMonitor monitor) { IBatchValidatorbatchValidator = ModelValidationService.getInstance() .newValidator(EvaluationMode.BATCH); batchValidator.setIncludeLiveConstraints(true); batchValidator.setReportSuccesses(false); returnbatchValidator.validate(model, monitor); }
  • 26. Model validation Integrated in a builder Transparent and automatic (on save) Uses Problem Markers Coupledwith quick fixes for a better user experience
  • 27. Editors Navigator Validation Code Features Model
  • 28. Code generation Xpand Performance issue Workflowistoo slow then use only Java API Example of template «IMPORT model» «DEFINE file FORSourceComponentClass» «FILE project.name.toLowerCase() + "/" + name + ".java"-» package «project.name.toLowerCase()»; publicclass «name» extendsComponentClass{ «IFmethods.select(m | m.kind.toString() == "EVENT").size > 0» publicvoidreceiveEvent(intinputEventMethod,Objectvalue){ «FOREACHmethods.select(m | m.kind.toString() == "EVENT") AS m-» //TODOhandleEvent:"+ «m.name.toUpperCase()»: «ENDFOREACH-» } «ENDIF» } «ENDFILE» «ENDDEFINE»
  • 29. Code generation Xpand Call the Xpandgeneratorprogrammatically publicvoid generate(finalEObject object, IProgressMonitor monitor) throwsCoreException { Generatorgenerator = newGenerator(); // define the metamodelused in the template MetaModel m2mMetamodel = newEmfMetaModel(M2MPackage.eINSTANCE); generator.addMetaModel(m2mMetamodel); // define the template generator.setExpand("templates::SourceComponentClass::file FOR component"); // define the output folder Outlet outlet = new Outlet("C:/myOutput/src"); generator.addOutlet(outlet); // configure protectedregions generator.setPrSrcPaths("C:/myOutput/src"); generator.setPrDefaultExcludes(true); // define the EObject input WorkflowContextDefaultImplctx = newWorkflowContextDefaultImpl(); ctx.set("component", object); // run the generator generator.invoke(ctx, newProgressMonitorAdapter(monitor), newIssuesImpl()); }
  • 30. Code generation Integrated in a builder Transparent and automatic (on save) Synchronizationbetween model and code Incrementalgeneration
  • 31. Editors Navigator Validation Model Editor Code Navigator Features
  • 32. Code editors and navigator CDT Code navigation Syntaxhighlight Content assist Refactoring … LuaEclipse Based on DLTK 2
  • 33. Code editors and navigator CDT
  • 34. Editors Navigator Validation Model Editor Code Navigator Features
  • 35. Round-tripping Mandatory for a good user experience Be able to edit code or model indifferently Continuoussynchronization First study: EMF Compare Good candidate but toorich for ourneeds Solution: Direct modification of existingmodels
  • 36. Round-tripping Solution Integrated in a builder Synchronize Model and AST From code to model: Code Based on existingparser AST Java transformation Model (extractfrom code) Model (previous version) Merge Model (new version)
  • 37. Editors Navigator Validation Model Editor Compilation Navigator Features Code
  • 38. Compilation CDT - ManagedBuild System (MBS) Declarative creation of custom tool chains Through MBS Extension point Direct integration in CDT builder and preference A bit complex Mechanism of scanner discovery profiles to find tools binaries Extension Point: org.eclipse.ui.managebuilder.core.buildDefinition Excellent tutorial: CDT Plug-in Developer Guide Extension Point: org.eclipse.cdt.make.core.ScannerConfigurationDisccoveryProfile
  • 39. Compilation CDT – MBS Result
  • 40. Compilation CDT - Dependencies management Dependencies management Difficult with CDT Configuration, build artefacts, libraries include, header include to manage No generic rule => have to be hand craft Use of CDT API to access projects description Managed by refactoring process
  • 41. Compilation CDT - Dependencies management publicclassModifyCProjectDependenciesChangeextends Change { privatefinalIProjectproject; ... public Change perform(IProgressMonitor pm) throws CoreException { ICProjectDescriptionprojectDescription = CDTPropertyManager.getProjectDescription(project); ICConfigurationDescription[] configurationDescription = projectDescription.getConfigurations(); ... } ... }
  • 42. Editors Navigator Validation Model Editor Code Compilation Navigator Target Features
  • 43. Features Editors Navigator Validation Model Editor Code Compilation Navigator Target Communication
  • 44. Target communication Objectives Make device’s services available Download Terminal … De-coupling of services and communication channel Extensible January 21, 2010 Sierra Wireless Proprietary and Confidential 44
  • 45. Target communication Target Communication Framework - TCF Embedded agent Asynchronous Protocol based on Command, Result Event Launch Config TerminalView Download Service Terminal Service Channel TCF Connection Manager Embedded Agent
  • 46. Features Editors Navigator Validation Model Editor Code Compilation Navigator Target Navigator Communication
  • 47. Target navigator Remote System Explorer - RSE GUI framework Tree Explorer Match well with TCF
  • 48. Target navigator Remote System Explorer
  • 49. Editors Navigator Validation Forms EMF Validation GMF Project Explorer + CNF Model Xpand AST Editor CDT Code Compilation CDT + DLTK Navigator TCF RSE Target Navigator Communication Features
  • 50. Demo January 21, 2010 Sierra Wireless Proprietary and Confidential 50
  • 51. Conclusion January 21, 2010 Sierra Wireless Proprietary and Confidential 51
  • 52. The benefits of a large ecosystem Allows to createreallycomplexenvironmentquickly Coversdifferentskinds of domains Offersreactive support with the community Allows to focus on real added value
  • 53. January 21, 2010 Sierra Wireless Proprietary and Confidential 53 Questions?
  • 54. Gaétan Morice gmorice@sierrawireless.com Benjamin Cabé bcabe@sierrawireless.com