SlideShare a Scribd company logo
Developing a mobile
cross-platform library
Kostis Dadamis
11/03/2014
What?
Description
• Piece of code including common functionality across all
mobile platforms
• E.g. querying a Web API, fetching results, sorting
results, fancy algorithms, etc.
• No UI
• One main codebase
• Some glue code for each platform (focusing on Android
and iOS)
• Package it as a library
Description
Why?
Motivation
• Less code
• Less bugs
• Less testing
• Consistency
• Reuse existing code
• Develop and distribute cross-platform SDKs
Attempts
Attempts
• Mobile Cross-Platform Development Tools
• C++
• Code porting
• JavaScript in a WebView
• JavaScript in a JavaScript Engine
Mobile cross-platform
development tools
Mobile Cross-Platform Development Tools
• Mobile Cross-Platform Development Tools
• 18 different tools investigated (e.g.
PhoneGap, Xamarin, Titanium, Corona, MoSync, Kon
y)
Mobile Cross-Platform Development Tools
• Mobile Cross-Platform Development Tools
• 18 different tools investigated (e.g. PhoneGap,
Xamarin, Titanium, Corona, MoSync, Kony)
• Output end products (not libraries)
Mobile Cross-Platform Development Tools
• Mobile Cross-Platform Development Tools
• 18 different tools investigated (e.g. PhoneGap,
Xamarin, Titanium, Corona, MoSync, Kony)
• Embed a runtime environment
Mobile Cross-Platform Development Tools
• Mobile Cross-Platform Development Tools
• 18 different tools investigated (e.g. PhoneGap,
Xamarin, Titanium, Corona, MoSync, Kony)
• Corona and MoSync support this for Android, but it’s a
“coming feature” for iOS
C++
C++
C++
• Build for all possible platforms and CPU architectures
• Glue code
• Android
• Android Native Development Kit (NDK) and Java
Native Interface
• Complicated 
• iOS
• Objective-C++
• Easy 
C++
• C++
• Pros
• Official solutions
• Fast
• Ability to import a vast number of open-source
C/C++ libraries
• Applicable to Windows Phone
• Free of charge
C++
• C++
• Cons
• Manual GC in Java (workaround by copying)
• Building libraries for all platforms/CPU architectures
is time-consuming
• Documentation
Code porting
Code porting
• Maintaining code for 1 platform, and translate it for the
other platform(s)
• 7 different tools investigated
• Most solutions immature
Code porting
• Worth revisiting in the future
• J2ObjC
• Translates Java (Android) to Objective-C (iOS)
• Hyperloop
• Translates JavaScript to source code for each platform
JavaScript
JavaScript
• Part of web browsers
• Part of server-side code
• Rapidly gaining popularity
• Reusing JavaScript code?
JavaScript in a
WebView
JavaScript in a WebView
• JavaScript in a WebView
• Use existing native web-browser Views
(WebViews) to execute JavaScript
• WebViews provide limited functionality to
programmers
• WebView APIs are inconsistent across
platforms
• Could work only with hacks
JavaScript in a
JavaScript Engine
JavaScript in a JavaScript Engine
• Use standalone JavaScript engine without a View
• iOS
• JavaScriptCore
• Android
• Rhino
• V8
• SpiderMonkey
• JavaScriptCore
• Nashorn
JavaScript in a JavaScript Engine
• Problem
• Pure JavaScript engines don’t support networking
• Solution
• Delegate missing functionality to the platforms
JavaScript in a JavaScript Engine
JavaScript in a JavaScript Engine
• iOS
• JavaScriptCore framework (since iOS 7)
• Pros
• Simple object conversions
• No embedding needed
• Cons
• Lack of documentation
JavaScript in a JavaScript Engine
• Android, we have to embed one
• Rhino
• App size 3.6MB (+2.6MB)
• Pros
• Developed in Java
• Cons
• Inactive development
• Outdated documentation
JavaScript in a JavaScript Engine
• Android, we have to embed one
• V8
• Pros
• Actively developed
• Cons
• App size 8.1MB (+7.1MB)
• Developed in C++ -> Android NDK/JNI
• Additional translation layer
JavaScript in a JavaScript Engine
JavaScript in a JavaScript Engine
• JavaScript in a JavaScript Engine
• Pros
• Reusing JavaScript code
• Applicable to Windows Phone
• Cons
• Delegated functionality increases glue code and
overcomplicates architecture
• In Android, either Rhino which is not actively
developed, or V8 which is large and written in C++
Proof-of-concept app
Conclusions
Conclusions
• Some immature solutions are worth revisiting
(Corona, MoSync, J2ObjC, Hyperloop, Nashorn)
• C++
• Pros: Official solutions, fast, access to C/C++
libraries, free
• Cons: Low-level, garbage collection?
• JavaScript in a JavaScript Engine
• Pros: Reusing JavaScript code
• Cons: Delegating missing functionality, Rhino not
actively developed, V8 large and written in C++
More info
More info
• www.skyscanner.net/blogs (3 parts)
Edinburgh • Glasgow • Singapore • Beijing • Miami • Barcelona
thank you
Opportunities
Opportunities
• Mobile Solution Architect
• www.skyscanner.net/jobs

More Related Content

What's hot

Rapid With Spring Roo
Rapid With Spring RooRapid With Spring Roo
Rapid With Spring Roo
Morten Lileng
 
ng-conf NativeScript and Angular 2 Workshop
ng-conf NativeScript and Angular 2 Workshopng-conf NativeScript and Angular 2 Workshop
ng-conf NativeScript and Angular 2 Workshop
tjvantoll
 
.NET? MonoDroid Does
.NET? MonoDroid Does.NET? MonoDroid Does
.NET? MonoDroid Does
Kevin McMahon
 
Why Kotlin?
Why Kotlin?Why Kotlin?
Why Kotlin?
Yongqiang Li
 
Overview of Java EE
Overview of Java EEOverview of Java EE
Overview of Java EE
Kohei Nozaki
 
Mobile Architecture Comparison
Mobile Architecture ComparisonMobile Architecture Comparison
Mobile Architecture Comparison
Jonathan Bender
 
How to migrate SourcePro apps from Solaris to Linux
How to migrate SourcePro apps from Solaris to LinuxHow to migrate SourcePro apps from Solaris to Linux
How to migrate SourcePro apps from Solaris to Linux
Rogue Wave Software
 
React Native
React NativeReact Native
React Native
Huqiu Liao
 
WebCamp 2016: Front-end. Виталий Бобров: JavaScript для мобильной разработки.
WebCamp 2016: Front-end. Виталий Бобров: JavaScript для мобильной разработки.WebCamp 2016: Front-end. Виталий Бобров: JavaScript для мобильной разработки.
WebCamp 2016: Front-end. Виталий Бобров: JavaScript для мобильной разработки.
WebCamp
 
Modern App Development with the SharePoint Framework
Modern App Development with the SharePoint FrameworkModern App Development with the SharePoint Framework
Modern App Development with the SharePoint Framework
Pete Filicetti
 
Modern .NET Ecosystem
Modern .NET EcosystemModern .NET Ecosystem
Modern .NET Ecosystem
Andrei Marukovich
 
Building apps with common code for windows 8 and windows phone 8 (WP8)
Building apps with common code for windows 8 and windows phone 8 (WP8)Building apps with common code for windows 8 and windows phone 8 (WP8)
Building apps with common code for windows 8 and windows phone 8 (WP8)
Tamir Dresher
 
201801 CSE240 Lecture 04
201801 CSE240 Lecture 04201801 CSE240 Lecture 04
201801 CSE240 Lecture 04
Javier Gonzalez-Sanchez
 
Hyperloop
HyperloopHyperloop
Hyperloop
Conny Svensson
 
.NET (r)evolution
.NET (r)evolution.NET (r)evolution
.NET (r)evolution
William S. Rodriguez
 
Building an Ionic hybrid mobile app with TypeScript
Building an Ionic hybrid mobile app with TypeScript Building an Ionic hybrid mobile app with TypeScript
Building an Ionic hybrid mobile app with TypeScript
Serge van den Oever
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React Native
Sambhu Lakshmanan
 
NativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
NativeScript: Cross-Platform Mobile Apps with JavaScript and AngularNativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
NativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
Todd Anglin
 
Cross platform development
Cross platform developmentCross platform development
Cross platform developmentdftaiwo
 

What's hot (20)

Rapid With Spring Roo
Rapid With Spring RooRapid With Spring Roo
Rapid With Spring Roo
 
ng-conf NativeScript and Angular 2 Workshop
ng-conf NativeScript and Angular 2 Workshopng-conf NativeScript and Angular 2 Workshop
ng-conf NativeScript and Angular 2 Workshop
 
.NET? MonoDroid Does
.NET? MonoDroid Does.NET? MonoDroid Does
.NET? MonoDroid Does
 
Why Kotlin?
Why Kotlin?Why Kotlin?
Why Kotlin?
 
Overview of Java EE
Overview of Java EEOverview of Java EE
Overview of Java EE
 
Mobile Architecture Comparison
Mobile Architecture ComparisonMobile Architecture Comparison
Mobile Architecture Comparison
 
How to migrate SourcePro apps from Solaris to Linux
How to migrate SourcePro apps from Solaris to LinuxHow to migrate SourcePro apps from Solaris to Linux
How to migrate SourcePro apps from Solaris to Linux
 
React Native
React NativeReact Native
React Native
 
WebCamp 2016: Front-end. Виталий Бобров: JavaScript для мобильной разработки.
WebCamp 2016: Front-end. Виталий Бобров: JavaScript для мобильной разработки.WebCamp 2016: Front-end. Виталий Бобров: JavaScript для мобильной разработки.
WebCamp 2016: Front-end. Виталий Бобров: JavaScript для мобильной разработки.
 
Modern App Development with the SharePoint Framework
Modern App Development with the SharePoint FrameworkModern App Development with the SharePoint Framework
Modern App Development with the SharePoint Framework
 
Modern .NET Ecosystem
Modern .NET EcosystemModern .NET Ecosystem
Modern .NET Ecosystem
 
Building apps with common code for windows 8 and windows phone 8 (WP8)
Building apps with common code for windows 8 and windows phone 8 (WP8)Building apps with common code for windows 8 and windows phone 8 (WP8)
Building apps with common code for windows 8 and windows phone 8 (WP8)
 
201801 CSE240 Lecture 04
201801 CSE240 Lecture 04201801 CSE240 Lecture 04
201801 CSE240 Lecture 04
 
Hyperloop
HyperloopHyperloop
Hyperloop
 
.NET (r)evolution
.NET (r)evolution.NET (r)evolution
.NET (r)evolution
 
Building an Ionic hybrid mobile app with TypeScript
Building an Ionic hybrid mobile app with TypeScript Building an Ionic hybrid mobile app with TypeScript
Building an Ionic hybrid mobile app with TypeScript
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React Native
 
NativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
NativeScript: Cross-Platform Mobile Apps with JavaScript and AngularNativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
NativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
 
Cross platform development
Cross platform developmentCross platform development
Cross platform development
 
SGCE 2015 REST APIs
SGCE 2015 REST APIsSGCE 2015 REST APIs
SGCE 2015 REST APIs
 

Viewers also liked

Building Cross Platform Mobile Applications
Building Cross Platform Mobile ApplicationsBuilding Cross Platform Mobile Applications
Building Cross Platform Mobile Applications
Betclic Everest Group Tech Team
 
Strategi pembelajaran ekspositori
Strategi pembelajaran ekspositoriStrategi pembelajaran ekspositori
Strategi pembelajaran ekspositori
Potpotya Fitri
 
Little Rock Nine Picture Edition
Little Rock Nine Picture EditionLittle Rock Nine Picture Edition
Little Rock Nine Picture EditionGablae
 
South Boston Busing Crisis Picture Edition
South Boston Busing Crisis Picture EditionSouth Boston Busing Crisis Picture Edition
South Boston Busing Crisis Picture EditionGablae
 
Pengelolaah Sumber Belajar dan Laboratorium
Pengelolaah Sumber Belajar dan LaboratoriumPengelolaah Sumber Belajar dan Laboratorium
Pengelolaah Sumber Belajar dan Laboratorium
Potpotya Fitri
 
Подбор ключевых слов
Подбор ключевых словПодбор ключевых слов
Подбор ключевых слов
Университет Жизни
 
Take Control of Your Career
Take Control of Your CareerTake Control of Your Career
Take Control of Your Career
L'Oréal Talent
 
ravi namboori-Iaas
 ravi namboori-Iaas ravi namboori-Iaas
ravi namboori-Iaas
ravi namboori
 
Steganography Presented By Prajwal Shrestha
Steganography Presented By Prajwal ShresthaSteganography Presented By Prajwal Shrestha
Steganography Presented By Prajwal Shrestha
PrajwalShrestha1
 
Mc luhan copy 2
Mc luhan copy 2Mc luhan copy 2
Mc luhan copy 2
Greg Podunovich
 
Zero barrier showers
Zero barrier showersZero barrier showers
Zero barrier showers
myhouserenovation
 
ravi namboori-Cloud computing
ravi namboori-Cloud computingravi namboori-Cloud computing
ravi namboori-Cloud computing
ravi namboori
 
Beneficios de las redes educativas
Beneficios de las redes educativas Beneficios de las redes educativas
Beneficios de las redes educativas
Vale Ayala
 
keterampilan berbahasa Indonesia-metode Membaca
keterampilan berbahasa Indonesia-metode Membacaketerampilan berbahasa Indonesia-metode Membaca
keterampilan berbahasa Indonesia-metode Membaca
Potpotya Fitri
 
презентация настроек яндекс директ
презентация настроек яндекс директпрезентация настроек яндекс директ
презентация настроек яндекс директ
Университет Жизни
 
Que se necesita para conectarse al internet
Que se necesita para conectarse al internetQue se necesita para conectarse al internet
Que se necesita para conectarse al internet
jesus-malo3
 
Perubahan
PerubahanPerubahan
Perubahan
boyo17
 
Bathroom remodeling
Bathroom remodelingBathroom remodeling
Bathroom remodeling
myhouserenovation
 

Viewers also liked (20)

Building Cross Platform Mobile Applications
Building Cross Platform Mobile ApplicationsBuilding Cross Platform Mobile Applications
Building Cross Platform Mobile Applications
 
Strategi pembelajaran ekspositori
Strategi pembelajaran ekspositoriStrategi pembelajaran ekspositori
Strategi pembelajaran ekspositori
 
Little Rock Nine Picture Edition
Little Rock Nine Picture EditionLittle Rock Nine Picture Edition
Little Rock Nine Picture Edition
 
South Boston Busing Crisis Picture Edition
South Boston Busing Crisis Picture EditionSouth Boston Busing Crisis Picture Edition
South Boston Busing Crisis Picture Edition
 
Pengelolaah Sumber Belajar dan Laboratorium
Pengelolaah Sumber Belajar dan LaboratoriumPengelolaah Sumber Belajar dan Laboratorium
Pengelolaah Sumber Belajar dan Laboratorium
 
Подбор ключевых слов
Подбор ключевых словПодбор ключевых слов
Подбор ключевых слов
 
Take Control of Your Career
Take Control of Your CareerTake Control of Your Career
Take Control of Your Career
 
ravi namboori-Iaas
 ravi namboori-Iaas ravi namboori-Iaas
ravi namboori-Iaas
 
Steganography Presented By Prajwal Shrestha
Steganography Presented By Prajwal ShresthaSteganography Presented By Prajwal Shrestha
Steganography Presented By Prajwal Shrestha
 
Mc luhan copy 2
Mc luhan copy 2Mc luhan copy 2
Mc luhan copy 2
 
Zero barrier showers
Zero barrier showersZero barrier showers
Zero barrier showers
 
ravi namboori-Cloud computing
ravi namboori-Cloud computingravi namboori-Cloud computing
ravi namboori-Cloud computing
 
Beneficios de las redes educativas
Beneficios de las redes educativas Beneficios de las redes educativas
Beneficios de las redes educativas
 
keterampilan berbahasa Indonesia-metode Membaca
keterampilan berbahasa Indonesia-metode Membacaketerampilan berbahasa Indonesia-metode Membaca
keterampilan berbahasa Indonesia-metode Membaca
 
презентация настроек яндекс директ
презентация настроек яндекс директпрезентация настроек яндекс директ
презентация настроек яндекс директ
 
Paccarpresentation
PaccarpresentationPaccarpresentation
Paccarpresentation
 
Que se necesita para conectarse al internet
Que se necesita para conectarse al internetQue se necesita para conectarse al internet
Que se necesita para conectarse al internet
 
Perubahan
PerubahanPerubahan
Perubahan
 
Materiales educativos
Materiales educativosMateriales educativos
Materiales educativos
 
Bathroom remodeling
Bathroom remodelingBathroom remodeling
Bathroom remodeling
 

Similar to Developing a mobile cross-platform library

Cross-Platform Development
Cross-Platform DevelopmentCross-Platform Development
Cross-Platform Development
Syed Owais Ali Chishti
 
Your choices for building a mobile app in 2016
Your choices for building a mobile app in 2016Your choices for building a mobile app in 2016
Your choices for building a mobile app in 2016
Jad Salhani
 
Dayton webusers creatinghybridapps-webedition
Dayton webusers creatinghybridapps-webeditionDayton webusers creatinghybridapps-webedition
Dayton webusers creatinghybridapps-webeditionMartin Davis III
 
Titanium appcelerator kickstart
Titanium appcelerator kickstartTitanium appcelerator kickstart
Titanium appcelerator kickstart
Alessio Ricco
 
Radu vunvulea building and testing windows 8 metro style applications using ...
Radu vunvulea  building and testing windows 8 metro style applications using ...Radu vunvulea  building and testing windows 8 metro style applications using ...
Radu vunvulea building and testing windows 8 metro style applications using ...
Radu Vunvulea
 
Transitioning Groupon to Node.js - EmpireJS 2014
Transitioning Groupon to Node.js - EmpireJS 2014Transitioning Groupon to Node.js - EmpireJS 2014
Transitioning Groupon to Node.js - EmpireJS 2014Sean McCullough
 
Cross platform mobile application development
Cross platform mobile application developmentCross platform mobile application development
Cross platform mobile application development
webprogr.com
 
Post Windows Mobile: New Application Development Platforms
Post Windows Mobile: New Application Development PlatformsPost Windows Mobile: New Application Development Platforms
Post Windows Mobile: New Application Development Platforms
Barcoding, Inc.
 
Cross Platform Mobile App Development
Cross Platform Mobile App DevelopmentCross Platform Mobile App Development
Cross Platform Mobile App Development
Synerzip
 
Hybrid Mobile Development with Apache Cordova,AngularJs and ionic
Hybrid Mobile Development with Apache Cordova,AngularJs and ionicHybrid Mobile Development with Apache Cordova,AngularJs and ionic
Hybrid Mobile Development with Apache Cordova,AngularJs and ionic
Ermias Bayu
 
Apache Cordova 4.x
Apache Cordova 4.xApache Cordova 4.x
Apache Cordova 4.x
Ivano Malavolta
 
Web technologies for desktop development @ berlinjs apps
Web technologies for desktop development @ berlinjs appsWeb technologies for desktop development @ berlinjs apps
Web technologies for desktop development @ berlinjs appsDarko Kukovec
 
Developing a native mobile apps using Ionic&Cordova
Developing a native mobile apps using Ionic&CordovaDeveloping a native mobile apps using Ionic&Cordova
Developing a native mobile apps using Ionic&Cordova
Damir Beylkhanov
 
Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011Nuxeo
 
[2015/2016] Apache Cordova
[2015/2016] Apache Cordova[2015/2016] Apache Cordova
[2015/2016] Apache Cordova
Ivano Malavolta
 
Developing Windows Phone 8 apps using PhoneGap
Developing Windows Phone 8 apps using PhoneGapDeveloping Windows Phone 8 apps using PhoneGap
Developing Windows Phone 8 apps using PhoneGap
Amar Mesic
 
SSJS, NoSQL, GAE and AppengineJS
SSJS, NoSQL, GAE and AppengineJSSSJS, NoSQL, GAE and AppengineJS
SSJS, NoSQL, GAE and AppengineJS
Eugene Lazutkin
 
Synapse india reviews on mobile application development
Synapse india reviews on mobile application developmentSynapse india reviews on mobile application development
Synapse india reviews on mobile application development
saritasingh19866
 
PUG Challenge 2016 - The nativescript pug app challenge
PUG Challenge 2016 -  The nativescript pug app challengePUG Challenge 2016 -  The nativescript pug app challenge
PUG Challenge 2016 - The nativescript pug app challenge
Bronco Oostermeyer
 

Similar to Developing a mobile cross-platform library (20)

Cross-Platform Development
Cross-Platform DevelopmentCross-Platform Development
Cross-Platform Development
 
Your choices for building a mobile app in 2016
Your choices for building a mobile app in 2016Your choices for building a mobile app in 2016
Your choices for building a mobile app in 2016
 
Dayton webusers creatinghybridapps-webedition
Dayton webusers creatinghybridapps-webeditionDayton webusers creatinghybridapps-webedition
Dayton webusers creatinghybridapps-webedition
 
Titanium appcelerator kickstart
Titanium appcelerator kickstartTitanium appcelerator kickstart
Titanium appcelerator kickstart
 
Radu vunvulea building and testing windows 8 metro style applications using ...
Radu vunvulea  building and testing windows 8 metro style applications using ...Radu vunvulea  building and testing windows 8 metro style applications using ...
Radu vunvulea building and testing windows 8 metro style applications using ...
 
Transitioning Groupon to Node.js - EmpireJS 2014
Transitioning Groupon to Node.js - EmpireJS 2014Transitioning Groupon to Node.js - EmpireJS 2014
Transitioning Groupon to Node.js - EmpireJS 2014
 
Cross platform mobile application development
Cross platform mobile application developmentCross platform mobile application development
Cross platform mobile application development
 
Post Windows Mobile: New Application Development Platforms
Post Windows Mobile: New Application Development PlatformsPost Windows Mobile: New Application Development Platforms
Post Windows Mobile: New Application Development Platforms
 
Cross Platform Mobile App Development
Cross Platform Mobile App DevelopmentCross Platform Mobile App Development
Cross Platform Mobile App Development
 
Hybrid Mobile Development with Apache Cordova,AngularJs and ionic
Hybrid Mobile Development with Apache Cordova,AngularJs and ionicHybrid Mobile Development with Apache Cordova,AngularJs and ionic
Hybrid Mobile Development with Apache Cordova,AngularJs and ionic
 
Apache Cordova 4.x
Apache Cordova 4.xApache Cordova 4.x
Apache Cordova 4.x
 
Web technologies for desktop development @ berlinjs apps
Web technologies for desktop development @ berlinjs appsWeb technologies for desktop development @ berlinjs apps
Web technologies for desktop development @ berlinjs apps
 
Developing a native mobile apps using Ionic&Cordova
Developing a native mobile apps using Ionic&CordovaDeveloping a native mobile apps using Ionic&Cordova
Developing a native mobile apps using Ionic&Cordova
 
20120802 timisoara
20120802 timisoara20120802 timisoara
20120802 timisoara
 
Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011
 
[2015/2016] Apache Cordova
[2015/2016] Apache Cordova[2015/2016] Apache Cordova
[2015/2016] Apache Cordova
 
Developing Windows Phone 8 apps using PhoneGap
Developing Windows Phone 8 apps using PhoneGapDeveloping Windows Phone 8 apps using PhoneGap
Developing Windows Phone 8 apps using PhoneGap
 
SSJS, NoSQL, GAE and AppengineJS
SSJS, NoSQL, GAE and AppengineJSSSJS, NoSQL, GAE and AppengineJS
SSJS, NoSQL, GAE and AppengineJS
 
Synapse india reviews on mobile application development
Synapse india reviews on mobile application developmentSynapse india reviews on mobile application development
Synapse india reviews on mobile application development
 
PUG Challenge 2016 - The nativescript pug app challenge
PUG Challenge 2016 -  The nativescript pug app challengePUG Challenge 2016 -  The nativescript pug app challenge
PUG Challenge 2016 - The nativescript pug app challenge
 

Recently uploaded

Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Jay Das
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
Srikant77
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
Ortus Solutions, Corp
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
vrstrong314
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 

Recently uploaded (20)

Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 

Developing a mobile cross-platform library

  • 1. Developing a mobile cross-platform library Kostis Dadamis 11/03/2014
  • 3. Description • Piece of code including common functionality across all mobile platforms • E.g. querying a Web API, fetching results, sorting results, fancy algorithms, etc. • No UI • One main codebase • Some glue code for each platform (focusing on Android and iOS) • Package it as a library
  • 6. Motivation • Less code • Less bugs • Less testing • Consistency • Reuse existing code • Develop and distribute cross-platform SDKs
  • 8. Attempts • Mobile Cross-Platform Development Tools • C++ • Code porting • JavaScript in a WebView • JavaScript in a JavaScript Engine
  • 10. Mobile Cross-Platform Development Tools • Mobile Cross-Platform Development Tools • 18 different tools investigated (e.g. PhoneGap, Xamarin, Titanium, Corona, MoSync, Kon y)
  • 11. Mobile Cross-Platform Development Tools • Mobile Cross-Platform Development Tools • 18 different tools investigated (e.g. PhoneGap, Xamarin, Titanium, Corona, MoSync, Kony) • Output end products (not libraries)
  • 12. Mobile Cross-Platform Development Tools • Mobile Cross-Platform Development Tools • 18 different tools investigated (e.g. PhoneGap, Xamarin, Titanium, Corona, MoSync, Kony) • Embed a runtime environment
  • 13. Mobile Cross-Platform Development Tools • Mobile Cross-Platform Development Tools • 18 different tools investigated (e.g. PhoneGap, Xamarin, Titanium, Corona, MoSync, Kony) • Corona and MoSync support this for Android, but it’s a “coming feature” for iOS
  • 14. C++
  • 15. C++
  • 16. C++ • Build for all possible platforms and CPU architectures • Glue code • Android • Android Native Development Kit (NDK) and Java Native Interface • Complicated  • iOS • Objective-C++ • Easy 
  • 17. C++ • C++ • Pros • Official solutions • Fast • Ability to import a vast number of open-source C/C++ libraries • Applicable to Windows Phone • Free of charge
  • 18. C++ • C++ • Cons • Manual GC in Java (workaround by copying) • Building libraries for all platforms/CPU architectures is time-consuming • Documentation
  • 20. Code porting • Maintaining code for 1 platform, and translate it for the other platform(s) • 7 different tools investigated • Most solutions immature
  • 21. Code porting • Worth revisiting in the future • J2ObjC • Translates Java (Android) to Objective-C (iOS) • Hyperloop • Translates JavaScript to source code for each platform
  • 23. JavaScript • Part of web browsers • Part of server-side code • Rapidly gaining popularity • Reusing JavaScript code?
  • 25. JavaScript in a WebView • JavaScript in a WebView • Use existing native web-browser Views (WebViews) to execute JavaScript • WebViews provide limited functionality to programmers • WebView APIs are inconsistent across platforms • Could work only with hacks
  • 27. JavaScript in a JavaScript Engine • Use standalone JavaScript engine without a View • iOS • JavaScriptCore • Android • Rhino • V8 • SpiderMonkey • JavaScriptCore • Nashorn
  • 28. JavaScript in a JavaScript Engine • Problem • Pure JavaScript engines don’t support networking • Solution • Delegate missing functionality to the platforms
  • 29. JavaScript in a JavaScript Engine
  • 30. JavaScript in a JavaScript Engine • iOS • JavaScriptCore framework (since iOS 7) • Pros • Simple object conversions • No embedding needed • Cons • Lack of documentation
  • 31. JavaScript in a JavaScript Engine • Android, we have to embed one • Rhino • App size 3.6MB (+2.6MB) • Pros • Developed in Java • Cons • Inactive development • Outdated documentation
  • 32. JavaScript in a JavaScript Engine • Android, we have to embed one • V8 • Pros • Actively developed • Cons • App size 8.1MB (+7.1MB) • Developed in C++ -> Android NDK/JNI • Additional translation layer
  • 33. JavaScript in a JavaScript Engine
  • 34. JavaScript in a JavaScript Engine • JavaScript in a JavaScript Engine • Pros • Reusing JavaScript code • Applicable to Windows Phone • Cons • Delegated functionality increases glue code and overcomplicates architecture • In Android, either Rhino which is not actively developed, or V8 which is large and written in C++
  • 37. Conclusions • Some immature solutions are worth revisiting (Corona, MoSync, J2ObjC, Hyperloop, Nashorn) • C++ • Pros: Official solutions, fast, access to C/C++ libraries, free • Cons: Low-level, garbage collection? • JavaScript in a JavaScript Engine • Pros: Reusing JavaScript code • Cons: Delegating missing functionality, Rhino not actively developed, V8 large and written in C++
  • 40. Edinburgh • Glasgow • Singapore • Beijing • Miami • Barcelona thank you
  • 42. Opportunities • Mobile Solution Architect • www.skyscanner.net/jobs