SlideShare ist ein Scribd-Unternehmen logo
1 von 42
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

Weitere ähnliche Inhalte

Was ist angesagt?

Rapid With Spring Roo
Rapid With Spring RooRapid With Spring Roo
Rapid With Spring RooMorten 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 Workshoptjvantoll
 
.NET? MonoDroid Does
.NET? MonoDroid Does.NET? MonoDroid Does
.NET? MonoDroid DoesKevin McMahon
 
Overview of Java EE
Overview of Java EEOverview of Java EE
Overview of Java EEKohei Nozaki
 
Mobile Architecture Comparison
Mobile Architecture ComparisonMobile Architecture Comparison
Mobile Architecture ComparisonJonathan 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 LinuxRogue 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 FrameworkPete 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 NativeSambhu 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 AngularTodd Anglin
 
Cross platform development
Cross platform developmentCross platform development
Cross platform developmentdftaiwo
 

Was ist angesagt? (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
 

Andere mochten auch

Strategi pembelajaran ekspositori
Strategi pembelajaran ekspositoriStrategi pembelajaran ekspositori
Strategi pembelajaran ekspositoriPotpotya 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 LaboratoriumPotpotya Fitri
 
Take Control of Your Career
Take Control of Your CareerTake Control of Your Career
Take Control of Your CareerL'Oréal Talent
 
Steganography Presented By Prajwal Shrestha
Steganography Presented By Prajwal ShresthaSteganography Presented By Prajwal Shrestha
Steganography Presented By Prajwal ShresthaPrajwalShrestha1
 
ravi namboori-Cloud computing
ravi namboori-Cloud computingravi namboori-Cloud computing
ravi namboori-Cloud computingravi 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 MembacaPotpotya 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 internetjesus-malo3
 
Perubahan
PerubahanPerubahan
Perubahanboyo17
 

Andere mochten auch (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
 

Ähnlich wie Developing a mobile cross-platform library

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 2016Jad 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 kickstartAlessio 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 developmentwebprogr.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 PlatformsBarcoding, Inc.
 
Cross Platform Mobile App Development
Cross Platform Mobile App DevelopmentCross Platform Mobile App Development
Cross Platform Mobile App DevelopmentSynerzip
 
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 ionicErmias 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 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&CordovaDamir 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 CordovaIvano 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 PhoneGapAmar Mesic
 
SSJS, NoSQL, GAE and AppengineJS
SSJS, NoSQL, GAE and AppengineJSSSJS, NoSQL, GAE and AppengineJS
SSJS, NoSQL, GAE and AppengineJSEugene 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 developmentsaritasingh19866
 
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 challengeBronco Oostermeyer
 

Ähnlich wie 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
 

Kürzlich hochgeladen

Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 

Kürzlich hochgeladen (20)

Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 

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