SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
YYeett AAnnootthheerr DDSSLL ffoorr 
CCrroossss--ppllaattffoorrmmss MMoobbiillee 
DDeevveellooppmmeenntt 
Olivier Le Goaer and Sacha Waltham 
olivier.legoaer@univ-pau.fr 
GlobalDSL 2013 # Session 2 
Montpellier, 2013
AAggeennddaa 
 Context of work 
 A survey of existing tools 
 Presentation of the XMOB solution 
 Questions? 
Olivier Le Goaer @ GlobalDSL 2013
CCoonntteexxtt ooff wwoorrkk
DDeevveellooppmmeenntt sshhiifftt 
 The new era of mobility 
 People massively use apps on handheld devices (SmartPhones, 
Tablets) 
 From Desktop application to mobile applications 
 Lower ressources (battery, network latency, processor, etc.) 
 Smaller screen and new navigation fashion (“Tap-able” not 
“clickable”) 
 Increased platform heterogeneity 
 Now steady, limited number of desktop OS 
 Yet unsteady, high number of mobile OS 
Olivier Le Goaer @ GlobalDSL 2013
HHeetteerrooggeenneeiittyy iiss bbaacckk !! 
« Desktop App » 
Development 
Olivier Le Goaer @ GlobalDSL 2013 
« Mobile App » 
Development 
$$ $$$$$, augmented 
Time-to-Market
MMoobbiillee aapppp:: nnaattiivvee oorr wweebb?? 
 Two development approaches are competing 
 Native: develop directly for the mobile device 
 Web: develop for a browser installed in the mobile device, and 
tailored to be « mobile-friendly » 
 Tame the development costs... 
 Native: one app per platform 
 Web: solely one app 
(assuming that nowadays the different browsers evenly process the code) 
 ...but do not neglect the « user experience » 
 Native: almost limitless capabilities 
 Web: limited to the browser capabilities 
Olivier Le Goaer @ GlobalDSL 2013
IInn aa nnuuttsshheellll 
 WebApps are the best way to reach the most 
possible people with the least effort 
 WebApps are inherently cross-platforms but in the agnostic sense 
(the underlying OS specificities are ignored) 
 The browser already partly solved the heterogeneity question 
 NativeApps are the best way to create the best 
possible experience 
 Native apps are specifically designed for their host, and hence 
require further solutions to achieve actual cross-platform 
 Cross-platform Mobile development Tools (XMTs) have emerged 
 This is where the scientific challenge lies 
Olivier Le Goaer @ GlobalDSL 2013
AA ssuurrvveeyy ooff eexxiissttiinngg ttoooollss
WWrriittee OOnnccee?? RRuunn eevveerryywwhheerree?? 
Olivier Le Goaer @ GlobalDSL 2013 
HTML5,CSS3, 
JavaScript 
C++, 
Java, Ruby, 
Bridge 
Translation
RReeaappppeeaarraannccee ooff MMDDAA 
 Such heterogeneity and lack of sustainability 
was already encountered in the past 
 The mid-2000s was the age of « middlewar » 
 The OMG brought its Model-Driven Architecture (MDA) vision 
 When MDA meets the mobile challenge 
 Capture knowledge into models 
 Describe things independently of mobile platforms (PIM level) 
 Platform details are woven subsequently (PSM level) 
 OMG's contributions (UML2, MOF, QVT) are centre-stage, but 
domain-specific languages are encouraged 
 A langage dedicated to the mobile domain rather than a general-purpose language 
 Offers a basis for further stuff (tests, simulation and analysis, ...) 
Olivier Le Goaer @ GlobalDSL 2013
OOvveerrvviieeww ooff eexxiissttiinngg XXMMTTss 
Olivier Le Goaer @ GlobalDSL 2013
RRaattiioonnaalleess ooff tthhee XXMMOOBB ssoolluuttiioonn 
 Domain-specific language 
 Define a language which really fits your needs 
 Decrease the efforts needed to write a (simple) mob app 
 Obviously far away to be as complete as a general language 
 Key idea : « Write less, generate more » 
 Generation of full-native code 
 Because this is the holy grail of mobile programming 
 Model-driven Architecture 
 Proved that « it works ». Separation PIM/PSM is useful. 
 Reinventing the wheel? 
 Several languages may be competing. Let us try... 
Olivier Le Goaer @ GlobalDSL 2013
PPrreesseennttaattiioonn ooff tthhee XXMMOOBB ssoolluuttiioonn
XXMMOOBB rrooaaddmmaapp 
 Set the architecture of the XMOB crosscompiler 
 Envision a MDA-compliant chain to produce native code 
 Design the XMOB language 
 Define both its abstract and concrete syntax 
 Create UML profiles for each platform 
 Write the associated transformation (M2M and M2T) 
 Android initially, then move onto other platforms 
 Deliver the XMOB solution as an Eclipse Plugin 
 Built on top of EMF 
 But the generated code ought to be reworked into specific IDE 
Olivier Le Goaer @ GlobalDSL 2013
XXMMOOBB CCrroossss--ccoommppiilleerr AArrcchhiitteeccttuurree 
crosscompiler 
PSM 
UML2 + iOS 
Profile 
Xmob Native 
… Code 
.NET program Olivier Le Goaer @ GlobalDSL 2013 
PIM 
XMOB 
PIM 
XMOB 
PSM 
UML2 + iOS 
Profile 
PSM 
UML2 + 
PSM 
UML2 + 
Android Profile 
Android Profile 
PSM 
PSM 
… Profile 
UML2 + WP8 
UML2 + WP8 
Profile 
Native 
Code 
Objective-C 
program 
Native 
Code 
Java program 
M2M 
M2M 
M2M 
M2T 
M2T 
M2T
XXMMOOBB ssuubb--llaanngguuaaggeess 
Olivier Le Goaer @ GlobalDSL 2013 
XXXXMMMMOOOOBBBB----UUUUIIII 
XXXXMMMMOOOOBBBB----eeeevvvveeeennnntttt XXXXMMMMOOOOBBBB----ddddaaaattttaaaa 
Deals with display 
(widgets) 
Deals with gluing 
together 
UI and data 
Deals with data 
sources (read only)
MMoobbiillee--ssppeecciiffiicc sshhaarreedd ccoonncceeppttss 
 XMOB-UI 
 UI is broken down into a succession of screens 
 UI elements (widgets) are declared inside a screen 
 UI elements will automatically be placed on the screen 
 XMOB-data 
 Datasources location: local or remote 
 Datasources format: xml, json, recordset, raw text, ... 
 XMOB-event 
 Triggers actions on System-related or UI-related events 
 Actions are based on verbs : open, close, fetch, start, ... 
Olivier Le Goaer @ GlobalDSL 2013
XXMMOOBB aabbssttrraacctt ssyynnttaaxx ((EEccoorree)) 
Olivier Le Goaer @ GlobalDSL 2013
XXMMOOBB ccoonnccrreettee ssyynnttaaxx ((XXtteexxtt)) 
 XMOB has a textual syntax 
 Better suited than graphical syntax, especially for data and events 
 XMOB has multiple files 
 Separated ui/event/data files but same extension « .xmob » 
 Implies to manage properly cross-references and scoping 
 No Type System nor Function definition 
 Because XMOB is much more a description language than a 
programming language 
 Because this is a tedious task: code for type-checking and calls 
must be added programmatically to the parser 
Olivier Le Goaer @ GlobalDSL 2013
EEMMFF TToooolliinngg ffoorr tthhee XXMMOOBB ssoolluuttiioonn 
XXppaanndd 
eemmiitttteerr 
UML 
uml2.ecore eennggiinnee 
metamodel 
Olivier Le Goaer @ GlobalDSL 2013 
XMOB file 
XMOB 
grammar 
*.xmob 
Xtext Generator 
xmob.xtext 
AANNTTLLRR 
ppaarrsseerr 
ppaarrsseerr 
XMOB 
metamodel xmob.ecore 
XMOB model 
(in-memory) 
KKeerrmmeettaa 
XMOB2UML 
Transform. 
xmob2android.kmt 
xmob2ios.kmt 
... 
XXppaanndd 
eemmiitttteerr 
eennggiinnee 
UML model 
+ profile 
UML2Code 
Template 
OS-specific 
Source code 
project 
uml2ADT.xpand 
uml2X-code.xpand 
...
XXMMOOBB ssnniippppeettss 
#xmob-ui 
@Launch 
screen main { 
#xmob-ui 
@Launch 
screen main { 
l_welcome as label["Welcome to this app"] 
b_next as button["Proceed to next screen"] 
menu { 
l_welcome as label["Welcome to this app"] 
b_next as button["Proceed to next screen"] 
menu { 
item[image: "settings.png", destination:settings] 
item[text:"Credits", destination:credits] 
item[image: "settings.png", destination:settings] 
item[text:"Credits", destination:credits] 
} 
} 
} 
screen next { 
} 
screen next { 
label["Here is some data:"] 
list_somedata as list 
label["Here is some data:"] 
list_somedata as list 
} 
screen credits { 
} 
screen credits { 
label["Contributors:"] 
label["Olivier le Goaer & Sacha Waltham"] 
label["Contributors:"] 
label["Olivier le Goaer & Sacha Waltham"] 
} 
screen settings { 
} 
screen settings { 
label["music ?"] 
switch_music as switch 
label["music ?"] 
switch_music as switch 
} 
} 
Olivier Le Goaer @ GlobalDSL 2013 
#xmob-data 
somedata as datasource { 
#xmob-data 
somedata as datasource { 
remote ["http://somewebsite.com/someservice?param=1"] 
return [xml] 
} 
remote ["http://somewebsite.com/someservice?param=1"] 
return [xml] 
} 
#xmob-event 
on (pressed[main.b_next]) do { open[next] } 
on (networkAvailable[SYSTEM]) do { 
#xmob-event 
on (pressed[main.b_next]) do { open[next] } 
on (networkAvailable[SYSTEM]) do { 
fetch[somedata] into[next.list_somedata] 
} 
on (switched[settings.switch_music]) do { 
start[player:./music.mp3] 
} 
fetch[somedata] into[next.list_somedata] 
} 
on (switched[settings.switch_music]) do { 
start[player:./music.mp3] 
}
XXMMOOBB ssnniippppeettss 
#xmob-ui 
@Launch 
screen main { 
#xmob-ui 
@Launch 
screen main { 
l_welcome as label["Welcome to this app"] 
b_next as button["Proceed to next screen"] 
menu { 
l_welcome as label["Welcome to this app"] 
b_next as button["Proceed to next screen"] 
menu { 
item[image: "settings.png", destination:settings] 
item[text:"Credits", destination:credits] 
item[image: "settings.png", destination:settings] 
item[text:"Credits", destination:credits] 
} 
} 
} 
screen next { 
} 
screen next { 
label["Here is some data:"] 
list_somedata as list 
label["Here is some data:"] 
list_somedata as list 
} 
screen credits { 
} 
screen credits { 
label["Contributors:"] 
label["Olivier le Goaer & Sacha Waltham"] 
label["Contributors:"] 
label["Olivier le Goaer & Sacha Waltham"] 
} 
screen settings { 
} 
screen settings { 
label["music ?"] 
switch_music as switch 
label["music ?"] 
switch_music as switch 
} 
} 
Olivier Le Goaer @ GlobalDSL 2013 
#xmob-data 
somedata as datasource { 
#xmob-data 
somedata as datasource { 
remote ["http://somewebsite.com/someservice?param=1"] 
return [xml] 
} 
remote ["http://somewebsite.com/someservice?param=1"] 
return [xml] 
} 
#xmob-event 
on (pressed[main.b_next]) do { open[next] } 
on (networkAvailable[SYSTEM]) do { 
#xmob-event 
on (pressed[main.b_next]) do { open[next] } 
on (networkAvailable[SYSTEM]) do { 
fetch[somedata] into[next.list_somedata] 
} 
on (switched[settings.switch_music]) do { 
start[player:./music.mp3] 
} 
fetch[somedata] into[next.list_somedata] 
} 
on (switched[settings.switch_music]) do { 
start[player:./music.mp3] 
} 
Android 
● BroadcastReceiver 
● AsyncTask 
● Progress Dialog 
● SAX Parser 
● ArrayAdapter 
●...
QQuueessttiioonnss??

Contenu connexe

En vedette

Introduction à l'approche ADM de l'OMG
Introduction à l'approche ADM de l'OMGIntroduction à l'approche ADM de l'OMG
Introduction à l'approche ADM de l'OMGOlivier Le Goaër
 
Adaptation d'exécution de modèles : vers des iDSML adaptables
Adaptation d'exécution de modèles : vers des iDSML adaptablesAdaptation d'exécution de modèles : vers des iDSML adaptables
Adaptation d'exécution de modèles : vers des iDSML adaptablesOlivier Le Goaër
 
Syntaxe concrète des DSL en IDM [avec Xtext]
Syntaxe concrète des DSL en IDM [avec Xtext]Syntaxe concrète des DSL en IDM [avec Xtext]
Syntaxe concrète des DSL en IDM [avec Xtext]Olivier Le Goaër
 
Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !Olivier Le Goaër
 
Principe de fonctionnement du cryptage RSA
Principe de fonctionnement du cryptage RSAPrincipe de fonctionnement du cryptage RSA
Principe de fonctionnement du cryptage RSAKristen Le Liboux
 
Notions de base de JavaScript
Notions de base de JavaScriptNotions de base de JavaScript
Notions de base de JavaScriptKristen Le Liboux
 
Formation JavaScript full-stack (JS, jQuery, Node.js...)
Formation JavaScript full-stack (JS, jQuery, Node.js...)Formation JavaScript full-stack (JS, jQuery, Node.js...)
Formation JavaScript full-stack (JS, jQuery, Node.js...)guicara
 
النشاط العلمي - الكهرباء
النشاط العلمي  -   الكهرباءالنشاط العلمي  -   الكهرباء
النشاط العلمي - الكهرباءErradi Mohamed
 
Model Transformation: A survey of the state of the art
Model Transformation: A survey of the state of the artModel Transformation: A survey of the state of the art
Model Transformation: A survey of the state of the artTom Mens
 
Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...
Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...
Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...Edward Willink
 
Prfc rhapsody simulation_1.0
Prfc rhapsody simulation_1.0Prfc rhapsody simulation_1.0
Prfc rhapsody simulation_1.0Pascal Roques
 
OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...
OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...
OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...OCCIware
 
01072013 e governance
01072013 e governance01072013 e governance
01072013 e governancebharati k
 
Yet Another Three QVT Languages
Yet Another Three QVT LanguagesYet Another Three QVT Languages
Yet Another Three QVT LanguagesEdward Willink
 
Frame latency evaluation: when simulation and analysis alone are not enough
Frame latency evaluation: when simulation and analysis alone are not enoughFrame latency evaluation: when simulation and analysis alone are not enough
Frame latency evaluation: when simulation and analysis alone are not enoughRealTime-at-Work (RTaW)
 
OCL Integration and Code Generation
OCL Integration and Code GenerationOCL Integration and Code Generation
OCL Integration and Code GenerationEdward Willink
 
erocci - a scalable model-driven API framework, OW2con'16, Paris.
erocci - a scalable model-driven API framework, OW2con'16, Paris. erocci - a scalable model-driven API framework, OW2con'16, Paris.
erocci - a scalable model-driven API framework, OW2con'16, Paris. OCCIware
 

En vedette (20)

Introduction à l'approche ADM de l'OMG
Introduction à l'approche ADM de l'OMGIntroduction à l'approche ADM de l'OMG
Introduction à l'approche ADM de l'OMG
 
Adaptation d'exécution de modèles : vers des iDSML adaptables
Adaptation d'exécution de modèles : vers des iDSML adaptablesAdaptation d'exécution de modèles : vers des iDSML adaptables
Adaptation d'exécution de modèles : vers des iDSML adaptables
 
Syntaxe concrète des DSL en IDM [avec Xtext]
Syntaxe concrète des DSL en IDM [avec Xtext]Syntaxe concrète des DSL en IDM [avec Xtext]
Syntaxe concrète des DSL en IDM [avec Xtext]
 
Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !
 
Formation VBA Excel
Formation VBA ExcelFormation VBA Excel
Formation VBA Excel
 
Cours JavaScript
Cours JavaScriptCours JavaScript
Cours JavaScript
 
Programmation sous Android
Programmation sous AndroidProgrammation sous Android
Programmation sous Android
 
Principe de fonctionnement du cryptage RSA
Principe de fonctionnement du cryptage RSAPrincipe de fonctionnement du cryptage RSA
Principe de fonctionnement du cryptage RSA
 
Notions de base de JavaScript
Notions de base de JavaScriptNotions de base de JavaScript
Notions de base de JavaScript
 
Formation JavaScript full-stack (JS, jQuery, Node.js...)
Formation JavaScript full-stack (JS, jQuery, Node.js...)Formation JavaScript full-stack (JS, jQuery, Node.js...)
Formation JavaScript full-stack (JS, jQuery, Node.js...)
 
النشاط العلمي - الكهرباء
النشاط العلمي  -   الكهرباءالنشاط العلمي  -   الكهرباء
النشاط العلمي - الكهرباء
 
Model Transformation: A survey of the state of the art
Model Transformation: A survey of the state of the artModel Transformation: A survey of the state of the art
Model Transformation: A survey of the state of the art
 
Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...
Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...
Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...
 
Prfc rhapsody simulation_1.0
Prfc rhapsody simulation_1.0Prfc rhapsody simulation_1.0
Prfc rhapsody simulation_1.0
 
OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...
OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...
OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...
 
01072013 e governance
01072013 e governance01072013 e governance
01072013 e governance
 
Yet Another Three QVT Languages
Yet Another Three QVT LanguagesYet Another Three QVT Languages
Yet Another Three QVT Languages
 
Frame latency evaluation: when simulation and analysis alone are not enough
Frame latency evaluation: when simulation and analysis alone are not enoughFrame latency evaluation: when simulation and analysis alone are not enough
Frame latency evaluation: when simulation and analysis alone are not enough
 
OCL Integration and Code Generation
OCL Integration and Code GenerationOCL Integration and Code Generation
OCL Integration and Code Generation
 
erocci - a scalable model-driven API framework, OW2con'16, Paris.
erocci - a scalable model-driven API framework, OW2con'16, Paris. erocci - a scalable model-driven API framework, OW2con'16, Paris.
erocci - a scalable model-driven API framework, OW2con'16, Paris.
 

Similaire à Yet another DSL for cross platforms mobile development

Plattformübergreifende App-Entwicklung (ein Vergleich) - MobileTechCon 2010
Plattformübergreifende App-Entwicklung (ein Vergleich) - MobileTechCon 2010Plattformübergreifende App-Entwicklung (ein Vergleich) - MobileTechCon 2010
Plattformübergreifende App-Entwicklung (ein Vergleich) - MobileTechCon 2010Heiko Behrens
 
Minko - Creating cross-platform 3D apps with Minko
Minko - Creating cross-platform 3D apps with MinkoMinko - Creating cross-platform 3D apps with Minko
Minko - Creating cross-platform 3D apps with MinkoMinko3D
 
Paris Android LiveCode - Creating cross-platform 3D apps with Minko
Paris Android LiveCode - Creating cross-platform 3D apps with MinkoParis Android LiveCode - Creating cross-platform 3D apps with Minko
Paris Android LiveCode - Creating cross-platform 3D apps with MinkoMinko3D
 
IT TRENDS AND PERSPECTIVES 2016
IT TRENDS AND PERSPECTIVES 2016IT TRENDS AND PERSPECTIVES 2016
IT TRENDS AND PERSPECTIVES 2016Vaidheswaran CS
 
Busy Developer's Guide to Windows 8 HTML/JavaScript Apps
Busy Developer's Guide to Windows 8 HTML/JavaScript AppsBusy Developer's Guide to Windows 8 HTML/JavaScript Apps
Busy Developer's Guide to Windows 8 HTML/JavaScript AppsJAX London
 
WebGL games with Minko - Next Game Frontier 2014
WebGL games with Minko - Next Game Frontier 2014WebGL games with Minko - Next Game Frontier 2014
WebGL games with Minko - Next Game Frontier 2014Minko3D
 
Siruna presentation Mobile Drupal @ Drupalcamp Colorado Jun09
Siruna presentation Mobile Drupal @ Drupalcamp Colorado Jun09Siruna presentation Mobile Drupal @ Drupalcamp Colorado Jun09
Siruna presentation Mobile Drupal @ Drupalcamp Colorado Jun09Tom Deryckere
 
Flutter vs Java Graphical User Interface Frameworks - text
Flutter vs Java Graphical User Interface Frameworks - textFlutter vs Java Graphical User Interface Frameworks - text
Flutter vs Java Graphical User Interface Frameworks - textToma Velev
 
Google Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talkGoogle Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talkImam Raza
 
ANDROID presentation prabal
ANDROID presentation prabalANDROID presentation prabal
ANDROID presentation prabalPrabal Tyagi
 
DockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General SessionDockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General SessionDocker, Inc.
 
A Special Introduction to the Upcoming InduSoft Web Studio 8.0
A Special Introduction to the Upcoming InduSoft Web Studio 8.0A Special Introduction to the Upcoming InduSoft Web Studio 8.0
A Special Introduction to the Upcoming InduSoft Web Studio 8.0AVEVA
 
Basic html5 and javascript
Basic html5 and javascriptBasic html5 and javascript
Basic html5 and javascriptwendy017
 
Mobile Websites und (Web)-Apps mit jQuery Mobile
Mobile Websites und (Web)-Apps mit jQuery MobileMobile Websites und (Web)-Apps mit jQuery Mobile
Mobile Websites und (Web)-Apps mit jQuery MobilePeter Hecker
 
Cerebro for vfx eng
Cerebro for vfx engCerebro for vfx eng
Cerebro for vfx engCineSoft
 
Import golang; struct microservice
Import golang; struct microserviceImport golang; struct microservice
Import golang; struct microserviceGiulio De Donato
 
Mobility today & what's next. Application ecosystems.
Mobility today & what's next.Application ecosystems.Mobility today & what's next.Application ecosystems.
Mobility today & what's next. Application ecosystems.Petru Jucovschi
 
8 Principles for Enabling Build/Measure/Learn: Lean Engineering in Action
8 Principles for Enabling Build/Measure/Learn: Lean Engineering in Action8 Principles for Enabling Build/Measure/Learn: Lean Engineering in Action
8 Principles for Enabling Build/Measure/Learn: Lean Engineering in ActionBill Scott
 

Similaire à Yet another DSL for cross platforms mobile development (20)

Plattformübergreifende App-Entwicklung (ein Vergleich) - MobileTechCon 2010
Plattformübergreifende App-Entwicklung (ein Vergleich) - MobileTechCon 2010Plattformübergreifende App-Entwicklung (ein Vergleich) - MobileTechCon 2010
Plattformübergreifende App-Entwicklung (ein Vergleich) - MobileTechCon 2010
 
Minko - Creating cross-platform 3D apps with Minko
Minko - Creating cross-platform 3D apps with MinkoMinko - Creating cross-platform 3D apps with Minko
Minko - Creating cross-platform 3D apps with Minko
 
Paris Android LiveCode - Creating cross-platform 3D apps with Minko
Paris Android LiveCode - Creating cross-platform 3D apps with MinkoParis Android LiveCode - Creating cross-platform 3D apps with Minko
Paris Android LiveCode - Creating cross-platform 3D apps with Minko
 
IT TRENDS AND PERSPECTIVES 2016
IT TRENDS AND PERSPECTIVES 2016IT TRENDS AND PERSPECTIVES 2016
IT TRENDS AND PERSPECTIVES 2016
 
Busy Developer's Guide to Windows 8 HTML/JavaScript Apps
Busy Developer's Guide to Windows 8 HTML/JavaScript AppsBusy Developer's Guide to Windows 8 HTML/JavaScript Apps
Busy Developer's Guide to Windows 8 HTML/JavaScript Apps
 
WebGL games with Minko - Next Game Frontier 2014
WebGL games with Minko - Next Game Frontier 2014WebGL games with Minko - Next Game Frontier 2014
WebGL games with Minko - Next Game Frontier 2014
 
Siruna presentation Mobile Drupal @ Drupalcamp Colorado Jun09
Siruna presentation Mobile Drupal @ Drupalcamp Colorado Jun09Siruna presentation Mobile Drupal @ Drupalcamp Colorado Jun09
Siruna presentation Mobile Drupal @ Drupalcamp Colorado Jun09
 
Echo HTML5
Echo HTML5Echo HTML5
Echo HTML5
 
Flutter vs Java Graphical User Interface Frameworks - text
Flutter vs Java Graphical User Interface Frameworks - textFlutter vs Java Graphical User Interface Frameworks - text
Flutter vs Java Graphical User Interface Frameworks - text
 
Google Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talkGoogle Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talk
 
ANDROID presentation prabal
ANDROID presentation prabalANDROID presentation prabal
ANDROID presentation prabal
 
DockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General SessionDockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General Session
 
DDive11 - Mobile Development For Domino
DDive11 - Mobile Development For DominoDDive11 - Mobile Development For Domino
DDive11 - Mobile Development For Domino
 
A Special Introduction to the Upcoming InduSoft Web Studio 8.0
A Special Introduction to the Upcoming InduSoft Web Studio 8.0A Special Introduction to the Upcoming InduSoft Web Studio 8.0
A Special Introduction to the Upcoming InduSoft Web Studio 8.0
 
Basic html5 and javascript
Basic html5 and javascriptBasic html5 and javascript
Basic html5 and javascript
 
Mobile Websites und (Web)-Apps mit jQuery Mobile
Mobile Websites und (Web)-Apps mit jQuery MobileMobile Websites und (Web)-Apps mit jQuery Mobile
Mobile Websites und (Web)-Apps mit jQuery Mobile
 
Cerebro for vfx eng
Cerebro for vfx engCerebro for vfx eng
Cerebro for vfx eng
 
Import golang; struct microservice
Import golang; struct microserviceImport golang; struct microservice
Import golang; struct microservice
 
Mobility today & what's next. Application ecosystems.
Mobility today & what's next.Application ecosystems.Mobility today & what's next.Application ecosystems.
Mobility today & what's next. Application ecosystems.
 
8 Principles for Enabling Build/Measure/Learn: Lean Engineering in Action
8 Principles for Enabling Build/Measure/Learn: Lean Engineering in Action8 Principles for Enabling Build/Measure/Learn: Lean Engineering in Action
8 Principles for Enabling Build/Measure/Learn: Lean Engineering in Action
 

Plus de Olivier Le Goaër

Ecological Impact of Native vs. Cross-Platform Mobile Apps: a Preliminary Study
 Ecological Impact of Native vs. Cross-Platform Mobile Apps: a Preliminary Study Ecological Impact of Native vs. Cross-Platform Mobile Apps: a Preliminary Study
Ecological Impact of Native vs. Cross-Platform Mobile Apps: a Preliminary StudyOlivier Le Goaër
 
PowDroid: Energy Profiling of Android Applications (ASE 2021 [Workshop] SUSTA...
PowDroid: Energy Profiling of Android Applications (ASE 2021 [Workshop] SUSTA...PowDroid: Energy Profiling of Android Applications (ASE 2021 [Workshop] SUSTA...
PowDroid: Energy Profiling of Android Applications (ASE 2021 [Workshop] SUSTA...Olivier Le Goaër
 
Enforcing Green Code With Android Lint
Enforcing Green Code With Android LintEnforcing Green Code With Android Lint
Enforcing Green Code With Android LintOlivier Le Goaër
 
GREEN PAUWARE - For a power-thrifty mobile app marketplace
GREEN PAUWARE - For a power-thrifty mobile app marketplaceGREEN PAUWARE - For a power-thrifty mobile app marketplace
GREEN PAUWARE - For a power-thrifty mobile app marketplaceOlivier Le Goaër
 

Plus de Olivier Le Goaër (6)

The road to green code
The road to green codeThe road to green code
The road to green code
 
Ecological Impact of Native vs. Cross-Platform Mobile Apps: a Preliminary Study
 Ecological Impact of Native vs. Cross-Platform Mobile Apps: a Preliminary Study Ecological Impact of Native vs. Cross-Platform Mobile Apps: a Preliminary Study
Ecological Impact of Native vs. Cross-Platform Mobile Apps: a Preliminary Study
 
PowDroid: Energy Profiling of Android Applications (ASE 2021 [Workshop] SUSTA...
PowDroid: Energy Profiling of Android Applications (ASE 2021 [Workshop] SUSTA...PowDroid: Energy Profiling of Android Applications (ASE 2021 [Workshop] SUSTA...
PowDroid: Energy Profiling of Android Applications (ASE 2021 [Workshop] SUSTA...
 
Enforcing Green Code With Android Lint
Enforcing Green Code With Android LintEnforcing Green Code With Android Lint
Enforcing Green Code With Android Lint
 
GREEN PAUWARE - For a power-thrifty mobile app marketplace
GREEN PAUWARE - For a power-thrifty mobile app marketplaceGREEN PAUWARE - For a power-thrifty mobile app marketplace
GREEN PAUWARE - For a power-thrifty mobile app marketplace
 
Introduction au langage SQL
Introduction au langage SQLIntroduction au langage SQL
Introduction au langage SQL
 

Yet another DSL for cross platforms mobile development

  • 1. YYeett AAnnootthheerr DDSSLL ffoorr CCrroossss--ppllaattffoorrmmss MMoobbiillee DDeevveellooppmmeenntt Olivier Le Goaer and Sacha Waltham olivier.legoaer@univ-pau.fr GlobalDSL 2013 # Session 2 Montpellier, 2013
  • 2. AAggeennddaa  Context of work  A survey of existing tools  Presentation of the XMOB solution  Questions? Olivier Le Goaer @ GlobalDSL 2013
  • 4. DDeevveellooppmmeenntt sshhiifftt  The new era of mobility  People massively use apps on handheld devices (SmartPhones, Tablets)  From Desktop application to mobile applications  Lower ressources (battery, network latency, processor, etc.)  Smaller screen and new navigation fashion (“Tap-able” not “clickable”)  Increased platform heterogeneity  Now steady, limited number of desktop OS  Yet unsteady, high number of mobile OS Olivier Le Goaer @ GlobalDSL 2013
  • 5. HHeetteerrooggeenneeiittyy iiss bbaacckk !! « Desktop App » Development Olivier Le Goaer @ GlobalDSL 2013 « Mobile App » Development $$ $$$$$, augmented Time-to-Market
  • 6. MMoobbiillee aapppp:: nnaattiivvee oorr wweebb??  Two development approaches are competing  Native: develop directly for the mobile device  Web: develop for a browser installed in the mobile device, and tailored to be « mobile-friendly »  Tame the development costs...  Native: one app per platform  Web: solely one app (assuming that nowadays the different browsers evenly process the code)  ...but do not neglect the « user experience »  Native: almost limitless capabilities  Web: limited to the browser capabilities Olivier Le Goaer @ GlobalDSL 2013
  • 7. IInn aa nnuuttsshheellll  WebApps are the best way to reach the most possible people with the least effort  WebApps are inherently cross-platforms but in the agnostic sense (the underlying OS specificities are ignored)  The browser already partly solved the heterogeneity question  NativeApps are the best way to create the best possible experience  Native apps are specifically designed for their host, and hence require further solutions to achieve actual cross-platform  Cross-platform Mobile development Tools (XMTs) have emerged  This is where the scientific challenge lies Olivier Le Goaer @ GlobalDSL 2013
  • 8. AA ssuurrvveeyy ooff eexxiissttiinngg ttoooollss
  • 9. WWrriittee OOnnccee?? RRuunn eevveerryywwhheerree?? Olivier Le Goaer @ GlobalDSL 2013 HTML5,CSS3, JavaScript C++, Java, Ruby, Bridge Translation
  • 10. RReeaappppeeaarraannccee ooff MMDDAA  Such heterogeneity and lack of sustainability was already encountered in the past  The mid-2000s was the age of « middlewar »  The OMG brought its Model-Driven Architecture (MDA) vision  When MDA meets the mobile challenge  Capture knowledge into models  Describe things independently of mobile platforms (PIM level)  Platform details are woven subsequently (PSM level)  OMG's contributions (UML2, MOF, QVT) are centre-stage, but domain-specific languages are encouraged  A langage dedicated to the mobile domain rather than a general-purpose language  Offers a basis for further stuff (tests, simulation and analysis, ...) Olivier Le Goaer @ GlobalDSL 2013
  • 11. OOvveerrvviieeww ooff eexxiissttiinngg XXMMTTss Olivier Le Goaer @ GlobalDSL 2013
  • 12. RRaattiioonnaalleess ooff tthhee XXMMOOBB ssoolluuttiioonn  Domain-specific language  Define a language which really fits your needs  Decrease the efforts needed to write a (simple) mob app  Obviously far away to be as complete as a general language  Key idea : « Write less, generate more »  Generation of full-native code  Because this is the holy grail of mobile programming  Model-driven Architecture  Proved that « it works ». Separation PIM/PSM is useful.  Reinventing the wheel?  Several languages may be competing. Let us try... Olivier Le Goaer @ GlobalDSL 2013
  • 13. PPrreesseennttaattiioonn ooff tthhee XXMMOOBB ssoolluuttiioonn
  • 14. XXMMOOBB rrooaaddmmaapp  Set the architecture of the XMOB crosscompiler  Envision a MDA-compliant chain to produce native code  Design the XMOB language  Define both its abstract and concrete syntax  Create UML profiles for each platform  Write the associated transformation (M2M and M2T)  Android initially, then move onto other platforms  Deliver the XMOB solution as an Eclipse Plugin  Built on top of EMF  But the generated code ought to be reworked into specific IDE Olivier Le Goaer @ GlobalDSL 2013
  • 15. XXMMOOBB CCrroossss--ccoommppiilleerr AArrcchhiitteeccttuurree crosscompiler PSM UML2 + iOS Profile Xmob Native … Code .NET program Olivier Le Goaer @ GlobalDSL 2013 PIM XMOB PIM XMOB PSM UML2 + iOS Profile PSM UML2 + PSM UML2 + Android Profile Android Profile PSM PSM … Profile UML2 + WP8 UML2 + WP8 Profile Native Code Objective-C program Native Code Java program M2M M2M M2M M2T M2T M2T
  • 16. XXMMOOBB ssuubb--llaanngguuaaggeess Olivier Le Goaer @ GlobalDSL 2013 XXXXMMMMOOOOBBBB----UUUUIIII XXXXMMMMOOOOBBBB----eeeevvvveeeennnntttt XXXXMMMMOOOOBBBB----ddddaaaattttaaaa Deals with display (widgets) Deals with gluing together UI and data Deals with data sources (read only)
  • 17. MMoobbiillee--ssppeecciiffiicc sshhaarreedd ccoonncceeppttss  XMOB-UI  UI is broken down into a succession of screens  UI elements (widgets) are declared inside a screen  UI elements will automatically be placed on the screen  XMOB-data  Datasources location: local or remote  Datasources format: xml, json, recordset, raw text, ...  XMOB-event  Triggers actions on System-related or UI-related events  Actions are based on verbs : open, close, fetch, start, ... Olivier Le Goaer @ GlobalDSL 2013
  • 18. XXMMOOBB aabbssttrraacctt ssyynnttaaxx ((EEccoorree)) Olivier Le Goaer @ GlobalDSL 2013
  • 19. XXMMOOBB ccoonnccrreettee ssyynnttaaxx ((XXtteexxtt))  XMOB has a textual syntax  Better suited than graphical syntax, especially for data and events  XMOB has multiple files  Separated ui/event/data files but same extension « .xmob »  Implies to manage properly cross-references and scoping  No Type System nor Function definition  Because XMOB is much more a description language than a programming language  Because this is a tedious task: code for type-checking and calls must be added programmatically to the parser Olivier Le Goaer @ GlobalDSL 2013
  • 20. EEMMFF TToooolliinngg ffoorr tthhee XXMMOOBB ssoolluuttiioonn XXppaanndd eemmiitttteerr UML uml2.ecore eennggiinnee metamodel Olivier Le Goaer @ GlobalDSL 2013 XMOB file XMOB grammar *.xmob Xtext Generator xmob.xtext AANNTTLLRR ppaarrsseerr ppaarrsseerr XMOB metamodel xmob.ecore XMOB model (in-memory) KKeerrmmeettaa XMOB2UML Transform. xmob2android.kmt xmob2ios.kmt ... XXppaanndd eemmiitttteerr eennggiinnee UML model + profile UML2Code Template OS-specific Source code project uml2ADT.xpand uml2X-code.xpand ...
  • 21. XXMMOOBB ssnniippppeettss #xmob-ui @Launch screen main { #xmob-ui @Launch screen main { l_welcome as label["Welcome to this app"] b_next as button["Proceed to next screen"] menu { l_welcome as label["Welcome to this app"] b_next as button["Proceed to next screen"] menu { item[image: "settings.png", destination:settings] item[text:"Credits", destination:credits] item[image: "settings.png", destination:settings] item[text:"Credits", destination:credits] } } } screen next { } screen next { label["Here is some data:"] list_somedata as list label["Here is some data:"] list_somedata as list } screen credits { } screen credits { label["Contributors:"] label["Olivier le Goaer & Sacha Waltham"] label["Contributors:"] label["Olivier le Goaer & Sacha Waltham"] } screen settings { } screen settings { label["music ?"] switch_music as switch label["music ?"] switch_music as switch } } Olivier Le Goaer @ GlobalDSL 2013 #xmob-data somedata as datasource { #xmob-data somedata as datasource { remote ["http://somewebsite.com/someservice?param=1"] return [xml] } remote ["http://somewebsite.com/someservice?param=1"] return [xml] } #xmob-event on (pressed[main.b_next]) do { open[next] } on (networkAvailable[SYSTEM]) do { #xmob-event on (pressed[main.b_next]) do { open[next] } on (networkAvailable[SYSTEM]) do { fetch[somedata] into[next.list_somedata] } on (switched[settings.switch_music]) do { start[player:./music.mp3] } fetch[somedata] into[next.list_somedata] } on (switched[settings.switch_music]) do { start[player:./music.mp3] }
  • 22. XXMMOOBB ssnniippppeettss #xmob-ui @Launch screen main { #xmob-ui @Launch screen main { l_welcome as label["Welcome to this app"] b_next as button["Proceed to next screen"] menu { l_welcome as label["Welcome to this app"] b_next as button["Proceed to next screen"] menu { item[image: "settings.png", destination:settings] item[text:"Credits", destination:credits] item[image: "settings.png", destination:settings] item[text:"Credits", destination:credits] } } } screen next { } screen next { label["Here is some data:"] list_somedata as list label["Here is some data:"] list_somedata as list } screen credits { } screen credits { label["Contributors:"] label["Olivier le Goaer & Sacha Waltham"] label["Contributors:"] label["Olivier le Goaer & Sacha Waltham"] } screen settings { } screen settings { label["music ?"] switch_music as switch label["music ?"] switch_music as switch } } Olivier Le Goaer @ GlobalDSL 2013 #xmob-data somedata as datasource { #xmob-data somedata as datasource { remote ["http://somewebsite.com/someservice?param=1"] return [xml] } remote ["http://somewebsite.com/someservice?param=1"] return [xml] } #xmob-event on (pressed[main.b_next]) do { open[next] } on (networkAvailable[SYSTEM]) do { #xmob-event on (pressed[main.b_next]) do { open[next] } on (networkAvailable[SYSTEM]) do { fetch[somedata] into[next.list_somedata] } on (switched[settings.switch_music]) do { start[player:./music.mp3] } fetch[somedata] into[next.list_somedata] } on (switched[settings.switch_music]) do { start[player:./music.mp3] } Android ● BroadcastReceiver ● AsyncTask ● Progress Dialog ● SAX Parser ● ArrayAdapter ●...