SlideShare ist ein Scribd-Unternehmen logo
1 von 59
CROSS-PLATFORM MOBILE
DEVELOPMENT ON OPEN
SOURCE
John M. Wargo
@johnwargo
www.johnwargo.com
Slides: http://johnwargo.com/files/jmw-ato2016-cross-platform-mobile.pptx
ABSTRACT
There’s a lot of ways to deliver mobile apps: native, web,
commercial mobile app development platforms, and more.
In between those options are popular open source projects
that provide robust, alternative approaches. In this session,
you’ll learn about the venerable Apache Cordova project,
the project that defined the hybrid mobile development
approach, plus new upstarts like Telerik’s NativeScript,
Facebook’s React Native and Microsoft’s Xamarin that take
hybrid to the next level, giving developers the ability to
create compelling, performant native apps using JavaScript
or other languages. Expect a fast-paced, high-energy
session with lots of content as John Wargo introduces you
to a different way to do mobile using open source tools.
SOFTWARE DEVELOPER, WRITER,
PRESENTER, HUSBAND, FATHER,
GEEK
• Software developer
• Former Forrester analyst
• Actively seeking full-time employment
• Author of 6+1 books
• Contributor to the Apache Cordova Project
• Doing mostly IoT things lately
• Worked at AT&T, BlackBerry, BoxTone, Forrester, SAP
PUBLICATIONS
AGENDA
• A quick chat about mobile development and mobile
development approaches
• Defining mobile hybrid development
(an introduction to Apache Cordova and perhaps
Adobe PhoneGap too)
• The problem(s) with hybrid development
• The evolution of hybrid development
• Open source, cross-platform development
(a look at NativeScript, ReactNative, Tabris.js, Titanium,
Xamarin)
MOBILE DEVELOPMENT
NATIVE MOBILE DEVELOPMENT
IS HARD
• No common language across popular platforms
• No single IDE that can be used for all popular
platforms
• Hard to be an expert on more than one platform
• Requires a Macintosh computer
MOBILE DEVELOPMENT IS
EXPENSIVE
Fickle and finicky users drive dev organizations to deliver
frequent updates which forces a furious pace of
development leading to the requirements for:
• Continuous Integration
• Automated testing (manual testing can no longer keep up)
• Testing that never ends
• More to test than just whether the code ‘works’
• Device farms
AVAILABLE APPROACHES
• Web
• Native
• Hybrid
• JavaScript-driven native*
• Adjacent native*
• Mobile application development platforms
* Terms I coined as an Analyst at Forrester Research
HYBRID MOBILE
DEVELOPMENT
APACHE CORDOVA
An open source framework for building cross-platform
mobile applications using
HISTORY
• Started at the 2008 iPhoneDevCamp by Nitobi
• Started with iOS, quickly added Android and BlackBerry support
later
• In 2011, project was donated to Apache Software Foundation
• First as Apache Callback
• Then as Apache DeviceReady
• Finally as Apache Cordova
• Very quickly thereafter (the next day), Nitobi acquired by Adobe
• Expectation that Cordova will become obsolete over time as
mobile browsers become more capable*
CONTRIBUTORS
• The smartphone industry is heavily involved in the
Cordova project
• Adobe
• Amazon
• Google
• IBM
• Microsoft
• Mozilla
• Samsung
• Ubuntu
CONSUMERS & SUPPORTERS
• IBM MobileFirst Platform (Formerly IBM WorkLight)
• SAP HANA Cloud Platform mobile services (Formerly
SAP Mobile Platform)
• Oracle Mobile Platform
• Salesforce App Cloud
• Alpha Software Alpha Anywhere
• and many, many, many more!
APACHE CORDOVA
An open source framework for building cross-
platform mobile applications using HTML5
WEBVIEW
• Web application content is rendered within the native
application window using a native WebView
component
• The content is NOT converted in any way
• Pretty much allows ANY web content to run
(just like a browser)
• On older devices, the WebView is not always exactly
the same as the browser (for older Android devices,
look at the Intel Crosswalk project)
• Pluggable WebViews enable you to use whatever one
you want
SUPPORTED HTML &
JAVASCRIPT FRAMEWORKS
• All of them (pretty much)
• There are even Hybrid-specific frameworks:
• Ionic
• Onsen UI
• Framework7
APPLICATION ARCHITECTURE
TOOLS?
• Cordova Command Line Interface (CLI)
• Use whatever tools you want to design & code your
applications
• Use the native SDKs or the PhoneGap Build service to
‘build’ your applications
• Can use the CLI with either
THIRD-PARTY TOOLS?
• Microsoft Visual Studio Tools for Apache COrdova
(TACO)
• Intel XDK
• Eclipse THyM
• AppGyver, GapDebug, many more
• Cordova-aware IDEs: Brackets, Dreamweaver,
WebStorm & many more
APP STORES
• A Cordova application is a Native Mobile application
• So, Yes Virginia, Cordova apps can be published in
App Stores (even Apple’s)
ADOBE PHONEGAP
• PhoneGap is just a distribution of Cordova,
but they are not synonyms
• Adobe added on some additional features on top:
• PhoneGap Build Service
• Hydration
• PhoneGap Developer App
• PhoneGap Enterprise
• Integration with Dreamweaver & other Adobe tools
• Commercial Product Support
Which to use: Cordova or PhoneGap (http://www.informit.com/articles/article.aspx?p=2478076)
ANATOMY OF A CORDOVA
APPLICATION
HELLO WORLD (SIMPLE)
<!DOCTYPE HTML>
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1>Hello World</h1>
<p>This is a simple web application</p>
</body>
</html>
HELLO WORLD (INTERESTING)
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" charset="utf-8“ src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
function onBodyLoad() {
document.addEventListener("deviceready", onDeviceReady, false);
}
function onDeviceReady() {
navigator.notification.alert("Cordova is ready!");
}
</script>
</head>
<body onload="onBodyLoad()">
<h1>Hello World</h1>
<p>This is a sample Cordova application.</p>
</body>
</html>
THE CORDOVA APIS
• Originally custom APIs created by the dev team
• Inconsistently implemented across mobile platforms
• Migrated (where possible) to implementations of device-specific
APIs based on formal standards (WWWC, Device APIs Working
Group and so on)
• APIs not implemented on platforms where the capability already
exists in the browser
• APIs removed from a platform when the platform adds the API to
the browser
• APIs could be maintained after formal standard is abandoned
(File API)
• Most of the APIs are implemented as plugins (some exist in the
core)
HELLO WORLD (DOES SOMETHING)
(PART 1)
<body onload="onBodyLoad()">
<h1>Hello World</h1>
<p>This is a Cordova application that makes calls to the Cordova Device API.</p>
<p id="appInfo">Waiting for Cordova Initialization to complete</p>
</body>
HELLO WORLD (DOES SOMETHING)
(PART 2)
function onDeviceReady() {
//HTML break tag
br = "<br />";
//Get the appInfo DOM element
var element = document.getElementById('appInfo');
//replace it with specific information about the device
//running the application
element.innerHTML =
'Cordova Version: ' + device.cordova + br +
'Platform: ' + device.platform + br +
'Model: ' + device.model + br +
'OS Version: ' + device.version;
}
HELLO WORLD (DOES
SOMETHING) EXAMPLE
USING THE CAMERA API
• First open a terminal window and add the camera plugin to your
Cordova application:
cordova plugin add cordova-plugin-camera
• Next add the following line to your web application’s JavaScript
code:
navigator.camera.getPicture( successCallback, errorCallback, cameraOptions);
• Success and error callback functions deal with results
• Camera Options object controls what happens when the picture
is taken
CAMERA OPTIONS
Optional parameters to customize the camera settings.
var cameraOptions = {
quality : 75,
destinationType : Camera.DestinationType.DATA_URL,
sourceType : Camera.PictureSourceType.CAMERA,
allowEdit : true,
encodingType: Camera.EncodingType.JPEG,
targetWidth: 100,
targetHeight: 100,
popoverOptions: CameraPopoverOptions,
saveToPhotoAlbum: false
};
CAMERA EXAMPLE
INSTALLATION
• Configure one or more native development
environments
• Install NodeJS (http://nodejs.org/)
• Open a terminal window and type:
• npm install –g cordova
THE CORDOVA CLI
CORDOVA APP
PROJECT
THE PERCEIVED PROBLEMS
WITH HYBRID DEVELOPMENT
HYBRID PROBLEMS
• The WebView is too slow (it was)
• You can’t have a native looking UI in a hybrid app (not
true)
• You can’t have native controls in a hybrid app (not
true, stay tuned)
CORDOVA ACE
THE EVOLUTION OF HYBRID
HYBRID EVOLVES
• For years, developers have wanted something better
than Cordova
• Cross-platform development framework that enables them
to craft an app for multiple platforms using a single code
base
• Something that enables them to use their web
development skills to build native mobile apps
• Something that enables them to have access to native
mobile APIs
• Something that enables them to build native UIs using web
technologies
OPEN SOURCE, CROSS-
PLATFORM MOBILE
DEVELOPMENT
JAVASCRIPT-DRIVEN NATIVE
APPS
• Native mobile apps
• Native app UI
• Coded entirely, or almost entirely, in JavaScript
• Don’t rely upon WebViews to display content
• Reasonable % of code reusable across platforms (well,
sort-of)
• Multiple options available to developers
• Released under open source license; most are ‘free,
but’ frameworks
APPCELERATOR TITANIUM
• Oldest tool in the JavaScript-driven native toolbox
• Has wallowed under a multitude of ‘free’ options since 2009
• Commercial product, community edition available at
www.appcelerator.org
• Code business logic and UI in JavaScript
• Abstract away UI code through Alloy MVC framework
• Can display content in a WebView if you want
• Delivers native apps with native UI performance
• Offers their own IDE through Eclipse fork Aptana
• Appcelerator really just wants to sell you their mobile development
platform
REACT NATIVE
• Facebook’s plan to deliver a more consistent interface
for, well, Facebook
• Open source project led by Facebook, supported by
the community
• https://facebook.github.io/react-native/
• Limited code re-use
• Separate UI APIs for Android vs. iOS
• No strings attached, Facebook isn’t trying to sell you
anything
REACT NATIVE EXAMPLE
REACT NATIVE EXAMPLE
REACT NATIVE EXAMPLE
• Lets look at some code
NATIVESCRIPT
• Open source framework from Telerik, available from
www.nativescript.org
• Code in pure JavaScript or use TypeScript with Angular
• JavaScript interface to native APIs (UI and other
functionality)
• Claims a high % of code reuse
• Free, free, totally free!
• But, Telerik really just wants to sell you their mobile
development platform
NATIVESCRIPT EXAMPLE
NATIVESCRIPT EXAMPLE
NATIVESCRIPT EXAMPLE
• Lets look at some code
TABRIS.JS
• Native UI extension for Apache Cordova
• Implemented as Cordova plugins you add to your
project to expose the native UI (similar to Cordova
ACE)
• Available at https://tabrisjs.com
• Basically exposes a set of native UI components
through a JavaScript bridge
• No tooling (CLI or IDE for example) but there is a cloud
build service
• Free, free, totally free!
SUMMARY
• Lots of options available to leverage your existing web
development skills (well, OK, JavaScript and CSS skills)
to build native mobile applications.
ADJACENT NATIVE APPS
• Native mobile applications, but not written in the
native tongue
• There used to be two options:
• Xamarin
• RoboVM
XAMARIN
• Ever heard of Mono?
ADJACENT NATIVE HISTORY
• Founders of Mono split from Novell, create Xamarin
• Xamarin creates commercial offering designed to simplify mobile development
• Customers reluctant to buy because of newness of concept (and company)
• Xamarin buys RoboVM
• Microsoft buys Xamarin
• Xamarin kills RoboVM
• Xamarin converts RoboVM development team to Xamarin development
• Microsoft open sources everything
• Free, free, totally free
• Microsoft even bundles Xamarin to Visual Studio Community Edition
ADJACENT NATIVE
• Code your app in C#
• During compilation, magic happens and out spits a native mobile
application
• Native app, native performance, native UI
• Claims 75% code reuse, independent testing says much, much less
• Can abstract cross-platform UI away using Xamarin Forms
• Supports
• Android
• iOS
• Windows
QUESTIONS?
John M. Wargo
@johnwargo
www.johnwargo.com
https://github.com/johnwargo

Weitere ähnliche Inhalte

Was ist angesagt?

DCSF19 Container Security: Theory & Practice at Netflix
DCSF19 Container Security: Theory & Practice at NetflixDCSF19 Container Security: Theory & Practice at Netflix
DCSF19 Container Security: Theory & Practice at NetflixDocker, Inc.
 
Using Go in DevOps
Using Go in DevOpsUsing Go in DevOps
Using Go in DevOpsEficode
 
Build CICD Pipeline for Container Presentation Slides
Build CICD Pipeline for Container Presentation SlidesBuild CICD Pipeline for Container Presentation Slides
Build CICD Pipeline for Container Presentation SlidesAmazon Web Services
 
The Ember.js Framework - Everything You Need To Know
The Ember.js Framework - Everything You Need To KnowThe Ember.js Framework - Everything You Need To Know
The Ember.js Framework - Everything You Need To KnowAll Things Open
 
Deep Dive on Continuous Integration and Continuous Delivery in Anypoint Platf...
Deep Dive on Continuous Integration and Continuous Delivery in Anypoint Platf...Deep Dive on Continuous Integration and Continuous Delivery in Anypoint Platf...
Deep Dive on Continuous Integration and Continuous Delivery in Anypoint Platf...NaimishKakkad2
 
Provisioning Servers Made Easy
Provisioning Servers Made EasyProvisioning Servers Made Easy
Provisioning Servers Made EasyAll Things Open
 
Introduction to micro-services @DevOps pune Meetup
Introduction to micro-services @DevOps pune Meetup Introduction to micro-services @DevOps pune Meetup
Introduction to micro-services @DevOps pune Meetup Rahul Khengare
 
A microservice architecture based on golang
A microservice architecture based on golangA microservice architecture based on golang
A microservice architecture based on golangGianfranco Reppucci
 
Containers - (Austin Cloud Meetup April 2016)
Containers - (Austin Cloud Meetup April 2016)Containers - (Austin Cloud Meetup April 2016)
Containers - (Austin Cloud Meetup April 2016)Derrick Wippler
 
Docker in Production, Look No Hands! by Scott Coulton
Docker in Production, Look No Hands! by Scott CoultonDocker in Production, Look No Hands! by Scott Coulton
Docker in Production, Look No Hands! by Scott CoultonDocker, Inc.
 
Beginner's Guide to Angular 2.0
Beginner's Guide to Angular 2.0Beginner's Guide to Angular 2.0
Beginner's Guide to Angular 2.0All Things Open
 
Rundeck's History and Future
Rundeck's History and FutureRundeck's History and Future
Rundeck's History and Futuredev2ops
 
OpenShift for Java EE Developers
OpenShift for Java EE DevelopersOpenShift for Java EE Developers
OpenShift for Java EE DevelopersMarkus Eisele
 
Docker Container Lifecycles, Problem or Opportunity? by Baruch Sadogursky, JFrog
Docker Container Lifecycles, Problem or Opportunity? by Baruch Sadogursky, JFrogDocker Container Lifecycles, Problem or Opportunity? by Baruch Sadogursky, JFrog
Docker Container Lifecycles, Problem or Opportunity? by Baruch Sadogursky, JFrogDocker, Inc.
 
Running containerized application in AWS ECS
Running containerized application in AWS ECSRunning containerized application in AWS ECS
Running containerized application in AWS ECSDevOps Indonesia
 
DockerCon SF 2015: Enabling Microservices @Orbitz
DockerCon SF 2015: Enabling Microservices @OrbitzDockerCon SF 2015: Enabling Microservices @Orbitz
DockerCon SF 2015: Enabling Microservices @OrbitzDocker, Inc.
 

Was ist angesagt? (20)

DCSF19 Container Security: Theory & Practice at Netflix
DCSF19 Container Security: Theory & Practice at NetflixDCSF19 Container Security: Theory & Practice at Netflix
DCSF19 Container Security: Theory & Practice at Netflix
 
Using Go in DevOps
Using Go in DevOpsUsing Go in DevOps
Using Go in DevOps
 
Build CICD Pipeline for Container Presentation Slides
Build CICD Pipeline for Container Presentation SlidesBuild CICD Pipeline for Container Presentation Slides
Build CICD Pipeline for Container Presentation Slides
 
The Ember.js Framework - Everything You Need To Know
The Ember.js Framework - Everything You Need To KnowThe Ember.js Framework - Everything You Need To Know
The Ember.js Framework - Everything You Need To Know
 
Deep Dive on Continuous Integration and Continuous Delivery in Anypoint Platf...
Deep Dive on Continuous Integration and Continuous Delivery in Anypoint Platf...Deep Dive on Continuous Integration and Continuous Delivery in Anypoint Platf...
Deep Dive on Continuous Integration and Continuous Delivery in Anypoint Platf...
 
Provisioning Servers Made Easy
Provisioning Servers Made EasyProvisioning Servers Made Easy
Provisioning Servers Made Easy
 
Introduction to micro-services @DevOps pune Meetup
Introduction to micro-services @DevOps pune Meetup Introduction to micro-services @DevOps pune Meetup
Introduction to micro-services @DevOps pune Meetup
 
A microservice architecture based on golang
A microservice architecture based on golangA microservice architecture based on golang
A microservice architecture based on golang
 
Containers - (Austin Cloud Meetup April 2016)
Containers - (Austin Cloud Meetup April 2016)Containers - (Austin Cloud Meetup April 2016)
Containers - (Austin Cloud Meetup April 2016)
 
Docker in Production, Look No Hands! by Scott Coulton
Docker in Production, Look No Hands! by Scott CoultonDocker in Production, Look No Hands! by Scott Coulton
Docker in Production, Look No Hands! by Scott Coulton
 
Beginner's Guide to Angular 2.0
Beginner's Guide to Angular 2.0Beginner's Guide to Angular 2.0
Beginner's Guide to Angular 2.0
 
Rundeck's History and Future
Rundeck's History and FutureRundeck's History and Future
Rundeck's History and Future
 
OpenShift for Java EE Developers
OpenShift for Java EE DevelopersOpenShift for Java EE Developers
OpenShift for Java EE Developers
 
calmio-cicd-containers
calmio-cicd-containerscalmio-cicd-containers
calmio-cicd-containers
 
Docker Container Lifecycles, Problem or Opportunity? by Baruch Sadogursky, JFrog
Docker Container Lifecycles, Problem or Opportunity? by Baruch Sadogursky, JFrogDocker Container Lifecycles, Problem or Opportunity? by Baruch Sadogursky, JFrog
Docker Container Lifecycles, Problem or Opportunity? by Baruch Sadogursky, JFrog
 
Running containerized application in AWS ECS
Running containerized application in AWS ECSRunning containerized application in AWS ECS
Running containerized application in AWS ECS
 
How Docker simplifies CI/CD
How Docker simplifies CI/CDHow Docker simplifies CI/CD
How Docker simplifies CI/CD
 
DockerCon SF 2015: Enabling Microservices @Orbitz
DockerCon SF 2015: Enabling Microservices @OrbitzDockerCon SF 2015: Enabling Microservices @Orbitz
DockerCon SF 2015: Enabling Microservices @Orbitz
 
Javantura v4 - Support SpringBoot application development lifecycle using Ora...
Javantura v4 - Support SpringBoot application development lifecycle using Ora...Javantura v4 - Support SpringBoot application development lifecycle using Ora...
Javantura v4 - Support SpringBoot application development lifecycle using Ora...
 
Drone CI
Drone CIDrone CI
Drone CI
 

Andere mochten auch

Student Pipeline to Open Source Communities using HFOSS
Student Pipeline to Open Source Communities using HFOSSStudent Pipeline to Open Source Communities using HFOSS
Student Pipeline to Open Source Communities using HFOSSAll Things Open
 
Building the Right Platform Architecture for Hadoop
Building the Right Platform Architecture for HadoopBuilding the Right Platform Architecture for Hadoop
Building the Right Platform Architecture for HadoopAll Things Open
 
Contribution & Confidence
Contribution & ConfidenceContribution & Confidence
Contribution & ConfidenceAll Things Open
 
Civic Hacking 201: Successful techniques for civic tech
Civic Hacking 201: Successful techniques for civic techCivic Hacking 201: Successful techniques for civic tech
Civic Hacking 201: Successful techniques for civic techAll Things Open
 
Modern Container Orchestration (Without Breaking the Bank)
Modern Container Orchestration (Without Breaking the Bank)Modern Container Orchestration (Without Breaking the Bank)
Modern Container Orchestration (Without Breaking the Bank)All Things Open
 
Scaling Your Logging Infrastructure With Syslog-NG
Scaling Your Logging Infrastructure With Syslog-NGScaling Your Logging Infrastructure With Syslog-NG
Scaling Your Logging Infrastructure With Syslog-NGAll Things Open
 
The Many Ways to Test Your React App
The Many Ways to Test Your React AppThe Many Ways to Test Your React App
The Many Ways to Test Your React AppAll Things Open
 
Angular 2 &amp; nativescript… chau híbrido
Angular 2 &amp; nativescript… chau híbridoAngular 2 &amp; nativescript… chau híbrido
Angular 2 &amp; nativescript… chau híbridomelidevelopers
 
Hochschule Darmstadt: NZSE/ENA Gastvortrag Xamarin/Fuse
Hochschule Darmstadt: NZSE/ENA Gastvortrag Xamarin/FuseHochschule Darmstadt: NZSE/ENA Gastvortrag Xamarin/Fuse
Hochschule Darmstadt: NZSE/ENA Gastvortrag Xamarin/FuseJens Becker
 
Open Source
Open SourceOpen Source
Open Sourcenqfaq
 
You Don't Have to Moodle: Ways to leverage the power of Wordpress for online ...
You Don't Have to Moodle: Ways to leverage the power of Wordpress for online ...You Don't Have to Moodle: Ways to leverage the power of Wordpress for online ...
You Don't Have to Moodle: Ways to leverage the power of Wordpress for online ...All Things Open
 
Cross Platform Mobile Application Development Using Xamarin and C#
Cross Platform Mobile Application Development Using Xamarin and C#Cross Platform Mobile Application Development Using Xamarin and C#
Cross Platform Mobile Application Development Using Xamarin and C#EastBanc Tachnologies
 
Cross Platform Mobile Development with Xamarin
Cross Platform Mobile Development with XamarinCross Platform Mobile Development with Xamarin
Cross Platform Mobile Development with Xamarinbryan costanich
 
360 Flex Atlanta
360 Flex Atlanta360 Flex Atlanta
360 Flex Atlantartretola
 
03 cross platform design
03 cross platform design03 cross platform design
03 cross platform designmemeapps
 
Cross platform mobile developement introduction
Cross platform mobile developement   introductionCross platform mobile developement   introduction
Cross platform mobile developement introductionMarcel de Vries
 
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
 
IBM MobileFirst - Hybrid App Development
IBM MobileFirst - Hybrid App DevelopmentIBM MobileFirst - Hybrid App Development
IBM MobileFirst - Hybrid App DevelopmentWim Tobback
 

Andere mochten auch (20)

Student Pipeline to Open Source Communities using HFOSS
Student Pipeline to Open Source Communities using HFOSSStudent Pipeline to Open Source Communities using HFOSS
Student Pipeline to Open Source Communities using HFOSS
 
Building the Right Platform Architecture for Hadoop
Building the Right Platform Architecture for HadoopBuilding the Right Platform Architecture for Hadoop
Building the Right Platform Architecture for Hadoop
 
Contribution & Confidence
Contribution & ConfidenceContribution & Confidence
Contribution & Confidence
 
Civic Hacking 201: Successful techniques for civic tech
Civic Hacking 201: Successful techniques for civic techCivic Hacking 201: Successful techniques for civic tech
Civic Hacking 201: Successful techniques for civic tech
 
Modern Container Orchestration (Without Breaking the Bank)
Modern Container Orchestration (Without Breaking the Bank)Modern Container Orchestration (Without Breaking the Bank)
Modern Container Orchestration (Without Breaking the Bank)
 
Scaling Your Logging Infrastructure With Syslog-NG
Scaling Your Logging Infrastructure With Syslog-NGScaling Your Logging Infrastructure With Syslog-NG
Scaling Your Logging Infrastructure With Syslog-NG
 
DevOps for Managers
DevOps for ManagersDevOps for Managers
DevOps for Managers
 
Data Encryption at Rest
Data Encryption at RestData Encryption at Rest
Data Encryption at Rest
 
The Many Ways to Test Your React App
The Many Ways to Test Your React AppThe Many Ways to Test Your React App
The Many Ways to Test Your React App
 
Angular 2 &amp; nativescript… chau híbrido
Angular 2 &amp; nativescript… chau híbridoAngular 2 &amp; nativescript… chau híbrido
Angular 2 &amp; nativescript… chau híbrido
 
Hochschule Darmstadt: NZSE/ENA Gastvortrag Xamarin/Fuse
Hochschule Darmstadt: NZSE/ENA Gastvortrag Xamarin/FuseHochschule Darmstadt: NZSE/ENA Gastvortrag Xamarin/Fuse
Hochschule Darmstadt: NZSE/ENA Gastvortrag Xamarin/Fuse
 
Open Source
Open SourceOpen Source
Open Source
 
You Don't Have to Moodle: Ways to leverage the power of Wordpress for online ...
You Don't Have to Moodle: Ways to leverage the power of Wordpress for online ...You Don't Have to Moodle: Ways to leverage the power of Wordpress for online ...
You Don't Have to Moodle: Ways to leverage the power of Wordpress for online ...
 
Cross Platform Mobile Application Development Using Xamarin and C#
Cross Platform Mobile Application Development Using Xamarin and C#Cross Platform Mobile Application Development Using Xamarin and C#
Cross Platform Mobile Application Development Using Xamarin and C#
 
Cross Platform Mobile Development with Xamarin
Cross Platform Mobile Development with XamarinCross Platform Mobile Development with Xamarin
Cross Platform Mobile Development with Xamarin
 
360 Flex Atlanta
360 Flex Atlanta360 Flex Atlanta
360 Flex Atlanta
 
03 cross platform design
03 cross platform design03 cross platform design
03 cross platform design
 
Cross platform mobile developement introduction
Cross platform mobile developement   introductionCross platform mobile developement   introduction
Cross platform mobile developement introduction
 
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
 
IBM MobileFirst - Hybrid App Development
IBM MobileFirst - Hybrid App DevelopmentIBM MobileFirst - Hybrid App Development
IBM MobileFirst - Hybrid App Development
 

Ähnlich wie Cross-platform Mobile Development on Open Source

Hybrid Mobile Applications
Hybrid Mobile ApplicationsHybrid Mobile Applications
Hybrid Mobile ApplicationsRuwan Ranganath
 
Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and Ryan Cuprak
 
Building Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGap
Building Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGapBuilding Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGap
Building Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGapNick Landry
 
NCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile AppsNCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile AppsJohn M. Wargo
 
Cross Platform Mobile Development
Cross Platform Mobile DevelopmentCross Platform Mobile Development
Cross Platform Mobile DevelopmentManesh Lad
 
Introduction to hybrid application development
Introduction to hybrid application developmentIntroduction to hybrid application development
Introduction to hybrid application developmentKunjan Thakkar
 
Introduction to Phonegap
Introduction to PhonegapIntroduction to Phonegap
Introduction to PhonegapAndrei Firoiu
 
Build Your First iPhone or Android App with Telerik AppBuilder
Build Your First iPhone or Android App with Telerik AppBuilderBuild Your First iPhone or Android App with Telerik AppBuilder
Build Your First iPhone or Android App with Telerik AppBuilderJeffrey T. Fritz
 
Developing Great Apps with Apache Cordova
Developing Great Apps with Apache CordovaDeveloping Great Apps with Apache Cordova
Developing Great Apps with Apache CordovaShekhar Gulati
 
Introduction to the cordova framework for developing mobile apps1
Introduction to the cordova framework for developing mobile apps1Introduction to the cordova framework for developing mobile apps1
Introduction to the cordova framework for developing mobile apps1Lisa Brown
 
Developing cross platforms mobile applications using the Apache Cordova
Developing cross platforms mobile applications using the Apache CordovaDeveloping cross platforms mobile applications using the Apache Cordova
Developing cross platforms mobile applications using the Apache CordovaMahmoud Tolba
 
Getting Acquainted with PhoneGap
Getting Acquainted with PhoneGapGetting Acquainted with PhoneGap
Getting Acquainted with PhoneGapJoseph Labrecque
 
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)Ryan Cuprak
 
I knew there had to be a better way to build mobile apps
I knew there had to be a better way to build mobile appsI knew there had to be a better way to build mobile apps
I knew there had to be a better way to build mobile appsAlius Petraška
 
What to choose for Mobile app development- React Native vs Native.
What to choose for Mobile app development- React Native vs Native.What to choose for Mobile app development- React Native vs Native.
What to choose for Mobile app development- React Native vs Native.Techugo
 
Workshop on Hybrid App Development with Ionic Framework
Workshop on Hybrid App Development with Ionic FrameworkWorkshop on Hybrid App Development with Ionic Framework
Workshop on Hybrid App Development with Ionic FrameworkAayush Shrestha
 
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
 

Ähnlich wie Cross-platform Mobile Development on Open Source (20)

Hybrid Mobile Applications
Hybrid Mobile ApplicationsHybrid Mobile Applications
Hybrid Mobile Applications
 
Talk (2)
Talk (2)Talk (2)
Talk (2)
 
Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and
 
Building Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGap
Building Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGapBuilding Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGap
Building Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGap
 
NCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile AppsNCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile Apps
 
Cross Platform Mobile Development
Cross Platform Mobile DevelopmentCross Platform Mobile Development
Cross Platform Mobile Development
 
Introduction to hybrid application development
Introduction to hybrid application developmentIntroduction to hybrid application development
Introduction to hybrid application development
 
Introduction to Phonegap
Introduction to PhonegapIntroduction to Phonegap
Introduction to Phonegap
 
Build Your First iPhone or Android App with Telerik AppBuilder
Build Your First iPhone or Android App with Telerik AppBuilderBuild Your First iPhone or Android App with Telerik AppBuilder
Build Your First iPhone or Android App with Telerik AppBuilder
 
Developing Great Apps with Apache Cordova
Developing Great Apps with Apache CordovaDeveloping Great Apps with Apache Cordova
Developing Great Apps with Apache Cordova
 
Introduction to the cordova framework for developing mobile apps1
Introduction to the cordova framework for developing mobile apps1Introduction to the cordova framework for developing mobile apps1
Introduction to the cordova framework for developing mobile apps1
 
Developing cross platforms mobile applications using the Apache Cordova
Developing cross platforms mobile applications using the Apache CordovaDeveloping cross platforms mobile applications using the Apache Cordova
Developing cross platforms mobile applications using the Apache Cordova
 
Getting Acquainted with PhoneGap
Getting Acquainted with PhoneGapGetting Acquainted with PhoneGap
Getting Acquainted with PhoneGap
 
Apache Cordova 4.x
Apache Cordova 4.xApache Cordova 4.x
Apache Cordova 4.x
 
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
 
Mobile Web Apps
Mobile Web AppsMobile Web Apps
Mobile Web Apps
 
I knew there had to be a better way to build mobile apps
I knew there had to be a better way to build mobile appsI knew there had to be a better way to build mobile apps
I knew there had to be a better way to build mobile apps
 
What to choose for Mobile app development- React Native vs Native.
What to choose for Mobile app development- React Native vs Native.What to choose for Mobile app development- React Native vs Native.
What to choose for Mobile app development- React Native vs Native.
 
Workshop on Hybrid App Development with Ionic Framework
Workshop on Hybrid App Development with Ionic FrameworkWorkshop on Hybrid App Development with Ionic Framework
Workshop on Hybrid App Development with Ionic Framework
 
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
 

Mehr von All Things Open

Building Reliability - The Realities of Observability
Building Reliability - The Realities of ObservabilityBuilding Reliability - The Realities of Observability
Building Reliability - The Realities of ObservabilityAll Things Open
 
Modern Database Best Practices
Modern Database Best PracticesModern Database Best Practices
Modern Database Best PracticesAll Things Open
 
Open Source and Public Policy
Open Source and Public PolicyOpen Source and Public Policy
Open Source and Public PolicyAll Things Open
 
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...All Things Open
 
The State of Passwordless Auth on the Web - Phil Nash
The State of Passwordless Auth on the Web - Phil NashThe State of Passwordless Auth on the Web - Phil Nash
The State of Passwordless Auth on the Web - Phil NashAll Things Open
 
Total ReDoS: The dangers of regex in JavaScript
Total ReDoS: The dangers of regex in JavaScriptTotal ReDoS: The dangers of regex in JavaScript
Total ReDoS: The dangers of regex in JavaScriptAll Things Open
 
What Does Real World Mass Adoption of Decentralized Tech Look Like?
What Does Real World Mass Adoption of Decentralized Tech Look Like?What Does Real World Mass Adoption of Decentralized Tech Look Like?
What Does Real World Mass Adoption of Decentralized Tech Look Like?All Things Open
 
How to Write & Deploy a Smart Contract
How to Write & Deploy a Smart ContractHow to Write & Deploy a Smart Contract
How to Write & Deploy a Smart ContractAll Things Open
 
Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow
 Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow
Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlowAll Things Open
 
DEI Challenges and Success
DEI Challenges and SuccessDEI Challenges and Success
DEI Challenges and SuccessAll Things Open
 
Scaling Web Applications with Background
Scaling Web Applications with BackgroundScaling Web Applications with Background
Scaling Web Applications with BackgroundAll Things Open
 
Supercharging tutorials with WebAssembly
Supercharging tutorials with WebAssemblySupercharging tutorials with WebAssembly
Supercharging tutorials with WebAssemblyAll Things Open
 
Using SQL to Find Needles in Haystacks
Using SQL to Find Needles in HaystacksUsing SQL to Find Needles in Haystacks
Using SQL to Find Needles in HaystacksAll Things Open
 
Configuration Security as a Game of Pursuit Intercept
Configuration Security as a Game of Pursuit InterceptConfiguration Security as a Game of Pursuit Intercept
Configuration Security as a Game of Pursuit InterceptAll Things Open
 
Scaling an Open Source Sponsorship Program
Scaling an Open Source Sponsorship ProgramScaling an Open Source Sponsorship Program
Scaling an Open Source Sponsorship ProgramAll Things Open
 
Build Developer Experience Teams for Open Source
Build Developer Experience Teams for Open SourceBuild Developer Experience Teams for Open Source
Build Developer Experience Teams for Open SourceAll Things Open
 
Deploying Models at Scale with Apache Beam
Deploying Models at Scale with Apache BeamDeploying Models at Scale with Apache Beam
Deploying Models at Scale with Apache BeamAll Things Open
 
Sudo – Giving access while staying in control
Sudo – Giving access while staying in controlSudo – Giving access while staying in control
Sudo – Giving access while staying in controlAll Things Open
 
Fortifying the Future: Tackling Security Challenges in AI/ML Applications
Fortifying the Future: Tackling Security Challenges in AI/ML ApplicationsFortifying the Future: Tackling Security Challenges in AI/ML Applications
Fortifying the Future: Tackling Security Challenges in AI/ML ApplicationsAll Things Open
 
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...All Things Open
 

Mehr von All Things Open (20)

Building Reliability - The Realities of Observability
Building Reliability - The Realities of ObservabilityBuilding Reliability - The Realities of Observability
Building Reliability - The Realities of Observability
 
Modern Database Best Practices
Modern Database Best PracticesModern Database Best Practices
Modern Database Best Practices
 
Open Source and Public Policy
Open Source and Public PolicyOpen Source and Public Policy
Open Source and Public Policy
 
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...
 
The State of Passwordless Auth on the Web - Phil Nash
The State of Passwordless Auth on the Web - Phil NashThe State of Passwordless Auth on the Web - Phil Nash
The State of Passwordless Auth on the Web - Phil Nash
 
Total ReDoS: The dangers of regex in JavaScript
Total ReDoS: The dangers of regex in JavaScriptTotal ReDoS: The dangers of regex in JavaScript
Total ReDoS: The dangers of regex in JavaScript
 
What Does Real World Mass Adoption of Decentralized Tech Look Like?
What Does Real World Mass Adoption of Decentralized Tech Look Like?What Does Real World Mass Adoption of Decentralized Tech Look Like?
What Does Real World Mass Adoption of Decentralized Tech Look Like?
 
How to Write & Deploy a Smart Contract
How to Write & Deploy a Smart ContractHow to Write & Deploy a Smart Contract
How to Write & Deploy a Smart Contract
 
Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow
 Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow
Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow
 
DEI Challenges and Success
DEI Challenges and SuccessDEI Challenges and Success
DEI Challenges and Success
 
Scaling Web Applications with Background
Scaling Web Applications with BackgroundScaling Web Applications with Background
Scaling Web Applications with Background
 
Supercharging tutorials with WebAssembly
Supercharging tutorials with WebAssemblySupercharging tutorials with WebAssembly
Supercharging tutorials with WebAssembly
 
Using SQL to Find Needles in Haystacks
Using SQL to Find Needles in HaystacksUsing SQL to Find Needles in Haystacks
Using SQL to Find Needles in Haystacks
 
Configuration Security as a Game of Pursuit Intercept
Configuration Security as a Game of Pursuit InterceptConfiguration Security as a Game of Pursuit Intercept
Configuration Security as a Game of Pursuit Intercept
 
Scaling an Open Source Sponsorship Program
Scaling an Open Source Sponsorship ProgramScaling an Open Source Sponsorship Program
Scaling an Open Source Sponsorship Program
 
Build Developer Experience Teams for Open Source
Build Developer Experience Teams for Open SourceBuild Developer Experience Teams for Open Source
Build Developer Experience Teams for Open Source
 
Deploying Models at Scale with Apache Beam
Deploying Models at Scale with Apache BeamDeploying Models at Scale with Apache Beam
Deploying Models at Scale with Apache Beam
 
Sudo – Giving access while staying in control
Sudo – Giving access while staying in controlSudo – Giving access while staying in control
Sudo – Giving access while staying in control
 
Fortifying the Future: Tackling Security Challenges in AI/ML Applications
Fortifying the Future: Tackling Security Challenges in AI/ML ApplicationsFortifying the Future: Tackling Security Challenges in AI/ML Applications
Fortifying the Future: Tackling Security Challenges in AI/ML Applications
 
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...
 

Kürzlich hochgeladen

Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 

Kürzlich hochgeladen (20)

Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 

Cross-platform Mobile Development on Open Source

  • 1. CROSS-PLATFORM MOBILE DEVELOPMENT ON OPEN SOURCE John M. Wargo @johnwargo www.johnwargo.com Slides: http://johnwargo.com/files/jmw-ato2016-cross-platform-mobile.pptx
  • 2. ABSTRACT There’s a lot of ways to deliver mobile apps: native, web, commercial mobile app development platforms, and more. In between those options are popular open source projects that provide robust, alternative approaches. In this session, you’ll learn about the venerable Apache Cordova project, the project that defined the hybrid mobile development approach, plus new upstarts like Telerik’s NativeScript, Facebook’s React Native and Microsoft’s Xamarin that take hybrid to the next level, giving developers the ability to create compelling, performant native apps using JavaScript or other languages. Expect a fast-paced, high-energy session with lots of content as John Wargo introduces you to a different way to do mobile using open source tools.
  • 3. SOFTWARE DEVELOPER, WRITER, PRESENTER, HUSBAND, FATHER, GEEK • Software developer • Former Forrester analyst • Actively seeking full-time employment • Author of 6+1 books • Contributor to the Apache Cordova Project • Doing mostly IoT things lately • Worked at AT&T, BlackBerry, BoxTone, Forrester, SAP
  • 5. AGENDA • A quick chat about mobile development and mobile development approaches • Defining mobile hybrid development (an introduction to Apache Cordova and perhaps Adobe PhoneGap too) • The problem(s) with hybrid development • The evolution of hybrid development • Open source, cross-platform development (a look at NativeScript, ReactNative, Tabris.js, Titanium, Xamarin)
  • 7. NATIVE MOBILE DEVELOPMENT IS HARD • No common language across popular platforms • No single IDE that can be used for all popular platforms • Hard to be an expert on more than one platform • Requires a Macintosh computer
  • 8. MOBILE DEVELOPMENT IS EXPENSIVE Fickle and finicky users drive dev organizations to deliver frequent updates which forces a furious pace of development leading to the requirements for: • Continuous Integration • Automated testing (manual testing can no longer keep up) • Testing that never ends • More to test than just whether the code ‘works’ • Device farms
  • 9. AVAILABLE APPROACHES • Web • Native • Hybrid • JavaScript-driven native* • Adjacent native* • Mobile application development platforms * Terms I coined as an Analyst at Forrester Research
  • 11. APACHE CORDOVA An open source framework for building cross-platform mobile applications using
  • 12. HISTORY • Started at the 2008 iPhoneDevCamp by Nitobi • Started with iOS, quickly added Android and BlackBerry support later • In 2011, project was donated to Apache Software Foundation • First as Apache Callback • Then as Apache DeviceReady • Finally as Apache Cordova • Very quickly thereafter (the next day), Nitobi acquired by Adobe • Expectation that Cordova will become obsolete over time as mobile browsers become more capable*
  • 13. CONTRIBUTORS • The smartphone industry is heavily involved in the Cordova project • Adobe • Amazon • Google • IBM • Microsoft • Mozilla • Samsung • Ubuntu
  • 14. CONSUMERS & SUPPORTERS • IBM MobileFirst Platform (Formerly IBM WorkLight) • SAP HANA Cloud Platform mobile services (Formerly SAP Mobile Platform) • Oracle Mobile Platform • Salesforce App Cloud • Alpha Software Alpha Anywhere • and many, many, many more!
  • 15. APACHE CORDOVA An open source framework for building cross- platform mobile applications using HTML5
  • 16. WEBVIEW • Web application content is rendered within the native application window using a native WebView component • The content is NOT converted in any way • Pretty much allows ANY web content to run (just like a browser) • On older devices, the WebView is not always exactly the same as the browser (for older Android devices, look at the Intel Crosswalk project) • Pluggable WebViews enable you to use whatever one you want
  • 17. SUPPORTED HTML & JAVASCRIPT FRAMEWORKS • All of them (pretty much) • There are even Hybrid-specific frameworks: • Ionic • Onsen UI • Framework7
  • 19. TOOLS? • Cordova Command Line Interface (CLI) • Use whatever tools you want to design & code your applications • Use the native SDKs or the PhoneGap Build service to ‘build’ your applications • Can use the CLI with either
  • 20. THIRD-PARTY TOOLS? • Microsoft Visual Studio Tools for Apache COrdova (TACO) • Intel XDK • Eclipse THyM • AppGyver, GapDebug, many more • Cordova-aware IDEs: Brackets, Dreamweaver, WebStorm & many more
  • 21. APP STORES • A Cordova application is a Native Mobile application • So, Yes Virginia, Cordova apps can be published in App Stores (even Apple’s)
  • 22. ADOBE PHONEGAP • PhoneGap is just a distribution of Cordova, but they are not synonyms • Adobe added on some additional features on top: • PhoneGap Build Service • Hydration • PhoneGap Developer App • PhoneGap Enterprise • Integration with Dreamweaver & other Adobe tools • Commercial Product Support Which to use: Cordova or PhoneGap (http://www.informit.com/articles/article.aspx?p=2478076)
  • 23. ANATOMY OF A CORDOVA APPLICATION
  • 24. HELLO WORLD (SIMPLE) <!DOCTYPE HTML> <html> <head> <title>Hello World</title> </head> <body> <h1>Hello World</h1> <p>This is a simple web application</p> </body> </html>
  • 25. HELLO WORLD (INTERESTING) <!DOCTYPE html> <html> <head> <script type="text/javascript" charset="utf-8“ src="cordova.js"></script> <script type="text/javascript" charset="utf-8"> function onBodyLoad() { document.addEventListener("deviceready", onDeviceReady, false); } function onDeviceReady() { navigator.notification.alert("Cordova is ready!"); } </script> </head> <body onload="onBodyLoad()"> <h1>Hello World</h1> <p>This is a sample Cordova application.</p> </body> </html>
  • 26. THE CORDOVA APIS • Originally custom APIs created by the dev team • Inconsistently implemented across mobile platforms • Migrated (where possible) to implementations of device-specific APIs based on formal standards (WWWC, Device APIs Working Group and so on) • APIs not implemented on platforms where the capability already exists in the browser • APIs removed from a platform when the platform adds the API to the browser • APIs could be maintained after formal standard is abandoned (File API) • Most of the APIs are implemented as plugins (some exist in the core)
  • 27.
  • 28. HELLO WORLD (DOES SOMETHING) (PART 1) <body onload="onBodyLoad()"> <h1>Hello World</h1> <p>This is a Cordova application that makes calls to the Cordova Device API.</p> <p id="appInfo">Waiting for Cordova Initialization to complete</p> </body>
  • 29. HELLO WORLD (DOES SOMETHING) (PART 2) function onDeviceReady() { //HTML break tag br = "<br />"; //Get the appInfo DOM element var element = document.getElementById('appInfo'); //replace it with specific information about the device //running the application element.innerHTML = 'Cordova Version: ' + device.cordova + br + 'Platform: ' + device.platform + br + 'Model: ' + device.model + br + 'OS Version: ' + device.version; }
  • 31. USING THE CAMERA API • First open a terminal window and add the camera plugin to your Cordova application: cordova plugin add cordova-plugin-camera • Next add the following line to your web application’s JavaScript code: navigator.camera.getPicture( successCallback, errorCallback, cameraOptions); • Success and error callback functions deal with results • Camera Options object controls what happens when the picture is taken
  • 32. CAMERA OPTIONS Optional parameters to customize the camera settings. var cameraOptions = { quality : 75, destinationType : Camera.DestinationType.DATA_URL, sourceType : Camera.PictureSourceType.CAMERA, allowEdit : true, encodingType: Camera.EncodingType.JPEG, targetWidth: 100, targetHeight: 100, popoverOptions: CameraPopoverOptions, saveToPhotoAlbum: false };
  • 34. INSTALLATION • Configure one or more native development environments • Install NodeJS (http://nodejs.org/) • Open a terminal window and type: • npm install –g cordova
  • 37. THE PERCEIVED PROBLEMS WITH HYBRID DEVELOPMENT
  • 38. HYBRID PROBLEMS • The WebView is too slow (it was) • You can’t have a native looking UI in a hybrid app (not true) • You can’t have native controls in a hybrid app (not true, stay tuned)
  • 41. HYBRID EVOLVES • For years, developers have wanted something better than Cordova • Cross-platform development framework that enables them to craft an app for multiple platforms using a single code base • Something that enables them to use their web development skills to build native mobile apps • Something that enables them to have access to native mobile APIs • Something that enables them to build native UIs using web technologies
  • 42. OPEN SOURCE, CROSS- PLATFORM MOBILE DEVELOPMENT
  • 43. JAVASCRIPT-DRIVEN NATIVE APPS • Native mobile apps • Native app UI • Coded entirely, or almost entirely, in JavaScript • Don’t rely upon WebViews to display content • Reasonable % of code reusable across platforms (well, sort-of) • Multiple options available to developers • Released under open source license; most are ‘free, but’ frameworks
  • 44. APPCELERATOR TITANIUM • Oldest tool in the JavaScript-driven native toolbox • Has wallowed under a multitude of ‘free’ options since 2009 • Commercial product, community edition available at www.appcelerator.org • Code business logic and UI in JavaScript • Abstract away UI code through Alloy MVC framework • Can display content in a WebView if you want • Delivers native apps with native UI performance • Offers their own IDE through Eclipse fork Aptana • Appcelerator really just wants to sell you their mobile development platform
  • 45. REACT NATIVE • Facebook’s plan to deliver a more consistent interface for, well, Facebook • Open source project led by Facebook, supported by the community • https://facebook.github.io/react-native/ • Limited code re-use • Separate UI APIs for Android vs. iOS • No strings attached, Facebook isn’t trying to sell you anything
  • 48. REACT NATIVE EXAMPLE • Lets look at some code
  • 49. NATIVESCRIPT • Open source framework from Telerik, available from www.nativescript.org • Code in pure JavaScript or use TypeScript with Angular • JavaScript interface to native APIs (UI and other functionality) • Claims a high % of code reuse • Free, free, totally free! • But, Telerik really just wants to sell you their mobile development platform
  • 52. NATIVESCRIPT EXAMPLE • Lets look at some code
  • 53. TABRIS.JS • Native UI extension for Apache Cordova • Implemented as Cordova plugins you add to your project to expose the native UI (similar to Cordova ACE) • Available at https://tabrisjs.com • Basically exposes a set of native UI components through a JavaScript bridge • No tooling (CLI or IDE for example) but there is a cloud build service • Free, free, totally free!
  • 54. SUMMARY • Lots of options available to leverage your existing web development skills (well, OK, JavaScript and CSS skills) to build native mobile applications.
  • 55. ADJACENT NATIVE APPS • Native mobile applications, but not written in the native tongue • There used to be two options: • Xamarin • RoboVM
  • 57. ADJACENT NATIVE HISTORY • Founders of Mono split from Novell, create Xamarin • Xamarin creates commercial offering designed to simplify mobile development • Customers reluctant to buy because of newness of concept (and company) • Xamarin buys RoboVM • Microsoft buys Xamarin • Xamarin kills RoboVM • Xamarin converts RoboVM development team to Xamarin development • Microsoft open sources everything • Free, free, totally free • Microsoft even bundles Xamarin to Visual Studio Community Edition
  • 58. ADJACENT NATIVE • Code your app in C# • During compilation, magic happens and out spits a native mobile application • Native app, native performance, native UI • Claims 75% code reuse, independent testing says much, much less • Can abstract cross-platform UI away using Xamarin Forms • Supports • Android • iOS • Windows