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
Ad

More Related Content

What's hot (20)

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 development
dftaiwo
 
SGCE 2015 REST APIs
SGCE 2015 REST APIsSGCE 2015 REST APIs
SGCE 2015 REST APIs
Domingo Suarez Torres
 
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
 
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
 
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
 
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
 
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 development
dftaiwo
 

Viewers also liked (20)

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 Edition
Gablae
 
South Boston Busing Crisis Picture Edition
South Boston Busing Crisis Picture EditionSouth Boston Busing Crisis Picture Edition
South Boston Busing Crisis Picture Edition
Gablae
 
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
 
презентация настроек яндекс директ
презентация настроек яндекс директпрезентация настроек яндекс директ
презентация настроек яндекс директ
Университет Жизни
 
Paccarpresentation
PaccarpresentationPaccarpresentation
Paccarpresentation
Andrew Johnson
 
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
 
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 Edition
Gablae
 
South Boston Busing Crisis Picture Edition
South Boston Busing Crisis Picture EditionSouth Boston Busing Crisis Picture Edition
South Boston Busing Crisis Picture Edition
Gablae
 
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
 
Steganography Presented By Prajwal Shrestha
Steganography Presented By Prajwal ShresthaSteganography Presented By Prajwal Shrestha
Steganography Presented By Prajwal Shrestha
PrajwalShrestha1
 
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
 
Ad

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

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-webedition
Martin 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 2014
Sean 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 apps
Darko 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
 
20120802 timisoara
20120802 timisoara20120802 timisoara
20120802 timisoara
Richard Rodger
 
Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011
Nuxeo
 
[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
 
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-webedition
Martin 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 2014
Sean 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
 
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
Darko 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 2011
Nuxeo
 
[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
 
Ad

Recently uploaded (20)

Designing AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& ConsiderationsDesigning AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Dinusha Kumarasiri
 
How to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud PerformanceHow to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud Performance
ThousandEyes
 
Top 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docxTop 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docx
Portli
 
Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025
kashifyounis067
 
Expand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchangeExpand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchange
Fexle Services Pvt. Ltd.
 
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Dele Amefo
 
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
Egor Kaleynik
 
How can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptxHow can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptx
laravinson24
 
Exploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the FutureExploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the Future
ICS
 
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
steaveroggers
 
Solidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license codeSolidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license code
aneelaramzan63
 
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Ranjan Baisak
 
WinRAR Crack for Windows (100% Working 2025)
WinRAR Crack for Windows (100% Working 2025)WinRAR Crack for Windows (100% Working 2025)
WinRAR Crack for Windows (100% Working 2025)
sh607827
 
Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025
mu394968
 
Maxon CINEMA 4D 2025 Crack FREE Download LINK
Maxon CINEMA 4D 2025 Crack FREE Download LINKMaxon CINEMA 4D 2025 Crack FREE Download LINK
Maxon CINEMA 4D 2025 Crack FREE Download LINK
younisnoman75
 
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
AxisTechnolabs
 
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
ssuserb14185
 
Landscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature ReviewLandscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature Review
Hironori Washizaki
 
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New VersionPixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
saimabibi60507
 
Why Orangescrum Is a Game Changer for Construction Companies in 2025
Why Orangescrum Is a Game Changer for Construction Companies in 2025Why Orangescrum Is a Game Changer for Construction Companies in 2025
Why Orangescrum Is a Game Changer for Construction Companies in 2025
Orangescrum
 
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& ConsiderationsDesigning AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Dinusha Kumarasiri
 
How to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud PerformanceHow to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud Performance
ThousandEyes
 
Top 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docxTop 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docx
Portli
 
Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025
kashifyounis067
 
Expand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchangeExpand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchange
Fexle Services Pvt. Ltd.
 
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Dele Amefo
 
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
Egor Kaleynik
 
How can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptxHow can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptx
laravinson24
 
Exploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the FutureExploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the Future
ICS
 
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
steaveroggers
 
Solidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license codeSolidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license code
aneelaramzan63
 
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Ranjan Baisak
 
WinRAR Crack for Windows (100% Working 2025)
WinRAR Crack for Windows (100% Working 2025)WinRAR Crack for Windows (100% Working 2025)
WinRAR Crack for Windows (100% Working 2025)
sh607827
 
Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025
mu394968
 
Maxon CINEMA 4D 2025 Crack FREE Download LINK
Maxon CINEMA 4D 2025 Crack FREE Download LINKMaxon CINEMA 4D 2025 Crack FREE Download LINK
Maxon CINEMA 4D 2025 Crack FREE Download LINK
younisnoman75
 
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
AxisTechnolabs
 
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
ssuserb14185
 
Landscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature ReviewLandscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature Review
Hironori Washizaki
 
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New VersionPixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
saimabibi60507
 
Why Orangescrum Is a Game Changer for Construction Companies in 2025
Why Orangescrum Is a Game Changer for Construction Companies in 2025Why Orangescrum Is a Game Changer for Construction Companies in 2025
Why Orangescrum Is a Game Changer for Construction Companies in 2025
Orangescrum
 

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