SlideShare a Scribd company logo
APACHE SLING & FRIENDS TECH MEETUP 
BERLIN, 22-24 S EPTEMBER 2014 
Mobile app development with Apache Cordova and AEM 
Bruce Lefebvre, Adobe
Hello 
@brucelefebvre 
adaptTo() 2014 2
<% 
agenda.jsp 
out.println("<h1> 
AGENDA 
</h1>" 
+ 
"<ul> 
" 
+ 
" 
<li> 
Problem? 
</li>" 
+ 
" 
<li> 
Solution 
" 
+ 
" 
<ul> 
" 
+ 
" 
<li> 
Cordova 
</li>" 
+ 
" 
<li> 
+ 
Sling 
</li>" 
+ 
" 
<li> 
+ 
AEM 
</li>" 
+ 
" 
</ul> 
" 
+ 
" 
</li> 
" 
+ 
"</ul> 
"); 
%> 
adaptTo() 2014 3
4 
Problem?
Java 
C#, 
C++ 
Objec3ve-­‐C 
Java 
2014 
adaptTo() 2014 5
????? 
2016 
adaptTo() 2014 6
Goal: Avoid proprietary vendor traps 
adaptTo() 2014 7
The Open Web 
§ Opinion: The web solved crossed platform 
§ Open & standardized (for the most part) 
adaptTo() 2014 8
Goal: Presence in app store(s) 
adaptTo() 2014 9
Enter Hybrid Applications 
§ Web app wrapped in a device native shell 
§ Write once, run everywhere* 
§ *aka “the promised land” 
Na3ve 
SDKs 
adaptTo() 2014 10
But… Web vs. Native! 
§ Both built on the same set of technologies 
§ Web capabilities sufficient for most apps 
“If a browser doesn’t do something its not because it can’t; 
it’s just because we haven’t gotten around to implementing that part yet.” 
-Brian LeRoux 
adaptTo() 2014 11
But the web can’t… 
§ Access device features, like: 
§ Camera 
§ Device motion 
§ File system 
§ Location 
§ Provide background notifications 
§ Render without connectivity 
§ or even poor connectivity 
§ Or can it? 
adaptTo() 2014 12
Enter Apache Cordova 
Build apps with web tech you know and love 
adaptTo() 2014 13
Cordova 
§ A cross-platform app framework 
§ Initially PhoneGap, created by Nitobi 
§ Donated to ASF in 2011 as Cordova 
§ of which PhoneGap is a distribution 
adaptTo() 2014 14
Cordova 
§ Supported platforms 
§ iOS 
§ Android 
§ BB10 
§ WP7, WP8, Windows 8 
§ Amazon Fire OS 
§ Tizen 
§ and more… 
adaptTo() 2014 15
Cordova Plugins 
§ Device APIs: 
§ Camera 
§ Geoloca3on 
§ Accelerometer 
§ File 
§ Contacts 
§ Events 
§ Connec3on 
§ No3fica3on 
§ Storage 
§ InAppBrowser 
§ Device 
§ Compass 
§ Globaliza3on 
adaptTo() 2014 16
Cordova CLI 
§ Command line interface features 
§ Bootstrap a new app 
§ build/install/run app on a 
specific platform 
§ Locally 
or 
via 
PhoneGap 
build 
§ Manage plugins 
adaptTo() 2014 17
Let’s give it a try 
adaptTo() 2014 18
Cordova CLI at a glance 
§ Create your app: 
cordova create helloAdaptTo 
§ Add a platform: 
cd helloAdaptTo 
cordova platform add ios 
§ Run your app on a simulator: 
cordova emulate ios 
adaptTo() 2014 19
Cordova + Sling 
§ Goals: 
§ Repurpose existing content 
§ Fetch & present data with 
minimum server side 
customization 
§ Authenticate with the server 
adaptTo() 2014 20
Cordova + Sling 
§ Bonus goals 
§ Post content from device 
§ Be indistinguishable from 
a native app 
§ Offline access to content 
adaptTo() 2014 21
Less talk, more action 
bit.ly/blog-­‐app 
adaptTo() 2014 22
Goal: Repurpose existing content 
§ server/espblog/[…]/apps/espblog/json.esp 
{ 
"title": "<%=post.title%>", 
"link": "<%= serverURI %><%=post%>.json", 
"description": "<%=post.posttext%>", 
"pubDate": "<%=df.format(post.created.getTime())%>", 
"resources": { 
"attachments": [ 
<% renderMedia(post, "attachments"); %> 
] 
} 
} 
adaptTo() 2014 23
Goal: Fetch & present data 
§ www/js/controllers.js 
$http.get(slingHostURI + '/content/espblog/posts.list.json') 
.success(function(data, status) { 
$scope.connected = true; 
$scope.blogPostList = data.posts; 
}) 
.error(function(data, status) { 
$scope.connected = false; 
console.error('Blog post list fetch failed’); 
}); 
adaptTo() 2014 24
Goal: Authenticate with the server 
§ www/js/controllers.js 
$http({ 
method: 'POST', 
url: slingHostURI + '/j_security_check', 
data: formData, 
headers: { 
'Content-Type': undefined 
}, 
transformRequest: formDataObject 
}) 
… 
basicAuthentication.setCredentials(formData.j_username, formData.j_password); 
adaptTo() 2014 25
Cordova + Sling 
§ Reuse existing content 
§ Reuse existing infra 
§ Reuse existing web skills 
§ Write once, run cross-platform 
adaptTo() 2014 26
Cordova + AEM --- PhoneGap Enterprise 
adaptTo() 2014 27
PhoneGap Enterprise 
§ Highlights 
§ Update app content w/o writing code 
§ Integration with Adobe Mobile Services 
§ Over the Air content updates 
§ AngularJS integration 
§ Geometrixx reference implementation 
adaptTo() 2014 28
PhoneGap Enterprise 
adaptTo() 2014 29
PhoneGap Enterprise demo 
bit.ly/aem-­‐pg 
adaptTo() 2014 30
Recap 
§ Problem? 
§ Solution 
§ Cordova 
§ + Sling 
§ + AEM 
adaptTo() 2014 31
bit.ly/blog-­‐app 
bit.ly/aem-­‐pg 
Questions? 
@brucelefebvre 
adaptTo() 2014 32
Appendix 
adaptTo() 2014 33
Resources 
§ Cordova + Sling blog app Github repository 
§ PhoneGap Kitchen Sink Github repository 
§ PhoneGap Beliefs, Goals, and Philosophy – Brian LeRoux 
§ PhoneGap, Cordova, and what’s in a name? – Brian LeRoux 
§ PhoneGap Documentation – v. 3.5.0 
adaptTo() 2014 34
Creative Resources 
§ ‘But the web can’t’ slide 
http://www.designcaffeine.com/uncategorized/mobile-magic-moments-transform-the-trivial/ 
§ ‘Cordova CLI’ slide http://www.stradiji.com/wp-content/uploads/2013/03/swiss-army-knife.png 
§ ‘Cordova Plugins’ slide http://www.freshtilledsoil.com/native-app-vs-mobile-website/ 
§ Apache httpd http://httpd.apache.org/ 
§ ECMA logo http://en.wikipedia.org/wiki/Ecma_International 
§ W3C http://www.w3.org/ 
§ WHATWG http://www.whatwg.org/ 
§ AngularJS https://angularjs.org/ 
§ Sling http://sling.apache.org/ 
§ HTML http://en.wikipedia.org/wiki/HTML 
adaptTo() 2014 35

More Related Content

What's hot

IBM Bluemix Cloud Platform Application Development with Eclipse IDE
IBM Bluemix Cloud Platform Application Development with Eclipse IDEIBM Bluemix Cloud Platform Application Development with Eclipse IDE
IBM Bluemix Cloud Platform Application Development with Eclipse IDE
hkbhadraa
 
Adobe CS6 Volume Licensing for Education
Adobe CS6 Volume Licensing for EducationAdobe CS6 Volume Licensing for Education
Adobe CS6 Volume Licensing for Education
Eduserv
 
Xamarin vs react native features comparison
Xamarin vs react native features comparisonXamarin vs react native features comparison
Xamarin vs react native features comparison
SameerShaik43
 
EventPilot Conference App Editions - the right event app for any meeting
EventPilot Conference App Editions - the right event app for any meetingEventPilot Conference App Editions - the right event app for any meeting
EventPilot Conference App Editions - the right event app for any meeting
ATIV Software
 
Why APIs Call for 2xs the DevOps
Why APIs Call for 2xs the DevOpsWhy APIs Call for 2xs the DevOps
Why APIs Call for 2xs the DevOps
Postman
 
Google Firebase
Google FirebaseGoogle Firebase
Google Firebase
Mukul parmar
 
Open Web Apps - State of the Browser 2014
Open Web Apps - State of the Browser 2014Open Web Apps - State of the Browser 2014
Open Web Apps - State of the Browser 2014
Christian Heilmann
 
DevOps Days Singapore 2018 Ignite - Bringing Your Applications into the Futur...
DevOps Days Singapore 2018 Ignite - Bringing Your Applications into the Futur...DevOps Days Singapore 2018 Ignite - Bringing Your Applications into the Futur...
DevOps Days Singapore 2018 Ignite - Bringing Your Applications into the Futur...
Matt Ray
 
6 Reasons Why You Should Create React Native Apps For Your Enterprise in 2021
6 Reasons Why You Should Create React Native Apps For Your Enterprise in 20216 Reasons Why You Should Create React Native Apps For Your Enterprise in 2021
6 Reasons Why You Should Create React Native Apps For Your Enterprise in 2021
Claritus Consulting
 
Udi Google Dev Day
Udi Google Dev DayUdi Google Dev Day
Udi Google Dev DayUdi Bauman
 
How to optimize your react native app performance
How to optimize your react native app performance How to optimize your react native app performance
How to optimize your react native app performance
Katy Slemon
 
Android
Android Android
Android
nirajsimulanis
 
Xamarin Test Cloud – Automating Testing Effectively
Xamarin Test Cloud – Automating Testing EffectivelyXamarin Test Cloud – Automating Testing Effectively
Xamarin Test Cloud – Automating Testing Effectively
Ajeet Singh
 
New Amazing Things about AngularJS 2.0
New Amazing Things about AngularJS 2.0New Amazing Things about AngularJS 2.0
New Amazing Things about AngularJS 2.0
Mike Taylor
 
Here are the Most Useful Tools for Mobile App Development
Here are the Most Useful Tools for Mobile App DevelopmentHere are the Most Useful Tools for Mobile App Development
Here are the Most Useful Tools for Mobile App Development
IndianAppDevelopers
 
Android Firebase - Edukite
Android Firebase - EdukiteAndroid Firebase - Edukite
Android Firebase - Edukite
EduKite
 
"Native App & Hybrid App, what is at stake?" by Olivier Berni
"Native App & Hybrid App, what is at stake?" by Olivier Berni"Native App & Hybrid App, what is at stake?" by Olivier Berni
"Native App & Hybrid App, what is at stake?" by Olivier Berni
TheFamily
 
Integrating with Adobe Marketing Cloud - Summit 2014
Integrating with Adobe Marketing Cloud - Summit 2014Integrating with Adobe Marketing Cloud - Summit 2014
Integrating with Adobe Marketing Cloud - Summit 2014
Paolo Mottadelli
 
Heading towards the great release of angular 8.0 development observe the uno...
Heading towards the great release of angular 8.0 development  observe the uno...Heading towards the great release of angular 8.0 development  observe the uno...
Heading towards the great release of angular 8.0 development observe the uno...
Concetto Labs
 
How to Make a Truck Inspection App
How to Make a Truck Inspection AppHow to Make a Truck Inspection App
How to Make a Truck Inspection App
AppSheet
 

What's hot (20)

IBM Bluemix Cloud Platform Application Development with Eclipse IDE
IBM Bluemix Cloud Platform Application Development with Eclipse IDEIBM Bluemix Cloud Platform Application Development with Eclipse IDE
IBM Bluemix Cloud Platform Application Development with Eclipse IDE
 
Adobe CS6 Volume Licensing for Education
Adobe CS6 Volume Licensing for EducationAdobe CS6 Volume Licensing for Education
Adobe CS6 Volume Licensing for Education
 
Xamarin vs react native features comparison
Xamarin vs react native features comparisonXamarin vs react native features comparison
Xamarin vs react native features comparison
 
EventPilot Conference App Editions - the right event app for any meeting
EventPilot Conference App Editions - the right event app for any meetingEventPilot Conference App Editions - the right event app for any meeting
EventPilot Conference App Editions - the right event app for any meeting
 
Why APIs Call for 2xs the DevOps
Why APIs Call for 2xs the DevOpsWhy APIs Call for 2xs the DevOps
Why APIs Call for 2xs the DevOps
 
Google Firebase
Google FirebaseGoogle Firebase
Google Firebase
 
Open Web Apps - State of the Browser 2014
Open Web Apps - State of the Browser 2014Open Web Apps - State of the Browser 2014
Open Web Apps - State of the Browser 2014
 
DevOps Days Singapore 2018 Ignite - Bringing Your Applications into the Futur...
DevOps Days Singapore 2018 Ignite - Bringing Your Applications into the Futur...DevOps Days Singapore 2018 Ignite - Bringing Your Applications into the Futur...
DevOps Days Singapore 2018 Ignite - Bringing Your Applications into the Futur...
 
6 Reasons Why You Should Create React Native Apps For Your Enterprise in 2021
6 Reasons Why You Should Create React Native Apps For Your Enterprise in 20216 Reasons Why You Should Create React Native Apps For Your Enterprise in 2021
6 Reasons Why You Should Create React Native Apps For Your Enterprise in 2021
 
Udi Google Dev Day
Udi Google Dev DayUdi Google Dev Day
Udi Google Dev Day
 
How to optimize your react native app performance
How to optimize your react native app performance How to optimize your react native app performance
How to optimize your react native app performance
 
Android
Android Android
Android
 
Xamarin Test Cloud – Automating Testing Effectively
Xamarin Test Cloud – Automating Testing EffectivelyXamarin Test Cloud – Automating Testing Effectively
Xamarin Test Cloud – Automating Testing Effectively
 
New Amazing Things about AngularJS 2.0
New Amazing Things about AngularJS 2.0New Amazing Things about AngularJS 2.0
New Amazing Things about AngularJS 2.0
 
Here are the Most Useful Tools for Mobile App Development
Here are the Most Useful Tools for Mobile App DevelopmentHere are the Most Useful Tools for Mobile App Development
Here are the Most Useful Tools for Mobile App Development
 
Android Firebase - Edukite
Android Firebase - EdukiteAndroid Firebase - Edukite
Android Firebase - Edukite
 
"Native App & Hybrid App, what is at stake?" by Olivier Berni
"Native App & Hybrid App, what is at stake?" by Olivier Berni"Native App & Hybrid App, what is at stake?" by Olivier Berni
"Native App & Hybrid App, what is at stake?" by Olivier Berni
 
Integrating with Adobe Marketing Cloud - Summit 2014
Integrating with Adobe Marketing Cloud - Summit 2014Integrating with Adobe Marketing Cloud - Summit 2014
Integrating with Adobe Marketing Cloud - Summit 2014
 
Heading towards the great release of angular 8.0 development observe the uno...
Heading towards the great release of angular 8.0 development  observe the uno...Heading towards the great release of angular 8.0 development  observe the uno...
Heading towards the great release of angular 8.0 development observe the uno...
 
How to Make a Truck Inspection App
How to Make a Truck Inspection AppHow to Make a Truck Inspection App
How to Make a Truck Inspection App
 

Similar to adaptTo() 2014 - Mobile app dev with Cordova, Sling, and AEM

Mobile Vue.js – From PWA to Native
Mobile Vue.js – From PWA to NativeMobile Vue.js – From PWA to Native
Mobile Vue.js – From PWA to Native
MartinSotirov
 
Hybrid HTML5 Apps
Hybrid HTML5 AppsHybrid HTML5 Apps
Hybrid HTML5 Apps
Hugo Rodrigues
 
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
Hazem Saleh
 
Building Cross-Platform Mobile Apps
Building Cross-Platform Mobile AppsBuilding Cross-Platform Mobile Apps
Building Cross-Platform Mobile Apps
Troy Miles
 
Getting Acquainted with PhoneGap
Getting Acquainted with PhoneGapGetting Acquainted with PhoneGap
Getting Acquainted with PhoneGap
Joseph Labrecque
 
Salesforce1 dev week UYSDUG 2014 - the force canvas spark
Salesforce1 dev week UYSDUG 2014 - the force canvas sparkSalesforce1 dev week UYSDUG 2014 - the force canvas spark
Salesforce1 dev week UYSDUG 2014 - the force canvas spark
Aldo Fernandez
 
Cordova Tutorial
Cordova TutorialCordova Tutorial
Cordova Tutorial
Jacky Chen
 
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
Aayush Shrestha
 
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
Mahmoud Tolba
 
Apache Cordova 4.x
Apache Cordova 4.xApache Cordova 4.x
Apache Cordova 4.x
Ivano Malavolta
 
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova
Hazem Saleh
 
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
Hazem Saleh
 
Cross-platform Mobile Development on Open Source
Cross-platform Mobile Development on Open SourceCross-platform Mobile Development on Open Source
Cross-platform Mobile Development on Open Source
All Things Open
 
[Devoxx Morocco 2015] Apache Cordova In Action
[Devoxx Morocco 2015] Apache Cordova In Action[Devoxx Morocco 2015] Apache Cordova In Action
[Devoxx Morocco 2015] Apache Cordova In Action
Hazem Saleh
 
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlantaPlugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlantaAlexandre Gouaillard
 
Apache Cordova - State of the Union 2014
Apache Cordova  - State of the Union 2014Apache Cordova  - State of the Union 2014
Apache Cordova - State of the Union 2014
Shazron Abdullah
 
Bridging the Gap: Single-Page Apps and AEM
Bridging the Gap: Single-Page Apps and AEMBridging the Gap: Single-Page Apps and AEM
Bridging the Gap: Single-Page Apps and AEM
rbl002
 
Dreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile designDreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile design
Dee Sadler
 
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...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Cross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic FrameworkCross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic Framework
Troy Miles
 

Similar to adaptTo() 2014 - Mobile app dev with Cordova, Sling, and AEM (20)

Mobile Vue.js – From PWA to Native
Mobile Vue.js – From PWA to NativeMobile Vue.js – From PWA to Native
Mobile Vue.js – From PWA to Native
 
Hybrid HTML5 Apps
Hybrid HTML5 AppsHybrid HTML5 Apps
Hybrid HTML5 Apps
 
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
 
Building Cross-Platform Mobile Apps
Building Cross-Platform Mobile AppsBuilding Cross-Platform Mobile Apps
Building Cross-Platform Mobile Apps
 
Getting Acquainted with PhoneGap
Getting Acquainted with PhoneGapGetting Acquainted with PhoneGap
Getting Acquainted with PhoneGap
 
Salesforce1 dev week UYSDUG 2014 - the force canvas spark
Salesforce1 dev week UYSDUG 2014 - the force canvas sparkSalesforce1 dev week UYSDUG 2014 - the force canvas spark
Salesforce1 dev week UYSDUG 2014 - the force canvas spark
 
Cordova Tutorial
Cordova TutorialCordova Tutorial
Cordova Tutorial
 
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
 
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
 
Apache Cordova 4.x
Apache Cordova 4.xApache Cordova 4.x
Apache Cordova 4.x
 
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova
 
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
 
Cross-platform Mobile Development on Open Source
Cross-platform Mobile Development on Open SourceCross-platform Mobile Development on Open Source
Cross-platform Mobile Development on Open Source
 
[Devoxx Morocco 2015] Apache Cordova In Action
[Devoxx Morocco 2015] Apache Cordova In Action[Devoxx Morocco 2015] Apache Cordova In Action
[Devoxx Morocco 2015] Apache Cordova In Action
 
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlantaPlugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
 
Apache Cordova - State of the Union 2014
Apache Cordova  - State of the Union 2014Apache Cordova  - State of the Union 2014
Apache Cordova - State of the Union 2014
 
Bridging the Gap: Single-Page Apps and AEM
Bridging the Gap: Single-Page Apps and AEMBridging the Gap: Single-Page Apps and AEM
Bridging the Gap: Single-Page Apps and AEM
 
Dreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile designDreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile design
 
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...
 
Cross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic FrameworkCross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic Framework
 

Recently uploaded

Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
informapgpstrackings
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptxText-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
ShamsuddeenMuhammadA
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
Neo4j
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
Cyanic lab
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
Enterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptxEnterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptx
QuickwayInfoSystems3
 

Recently uploaded (20)

Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptxText-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
Enterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptxEnterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptx
 

adaptTo() 2014 - Mobile app dev with Cordova, Sling, and AEM

  • 1. APACHE SLING & FRIENDS TECH MEETUP BERLIN, 22-24 S EPTEMBER 2014 Mobile app development with Apache Cordova and AEM Bruce Lefebvre, Adobe
  • 3. <% agenda.jsp out.println("<h1> AGENDA </h1>" + "<ul> " + " <li> Problem? </li>" + " <li> Solution " + " <ul> " + " <li> Cordova </li>" + " <li> + Sling </li>" + " <li> + AEM </li>" + " </ul> " + " </li> " + "</ul> "); %> adaptTo() 2014 3
  • 5. Java C#, C++ Objec3ve-­‐C Java 2014 adaptTo() 2014 5
  • 7. Goal: Avoid proprietary vendor traps adaptTo() 2014 7
  • 8. The Open Web § Opinion: The web solved crossed platform § Open & standardized (for the most part) adaptTo() 2014 8
  • 9. Goal: Presence in app store(s) adaptTo() 2014 9
  • 10. Enter Hybrid Applications § Web app wrapped in a device native shell § Write once, run everywhere* § *aka “the promised land” Na3ve SDKs adaptTo() 2014 10
  • 11. But… Web vs. Native! § Both built on the same set of technologies § Web capabilities sufficient for most apps “If a browser doesn’t do something its not because it can’t; it’s just because we haven’t gotten around to implementing that part yet.” -Brian LeRoux adaptTo() 2014 11
  • 12. But the web can’t… § Access device features, like: § Camera § Device motion § File system § Location § Provide background notifications § Render without connectivity § or even poor connectivity § Or can it? adaptTo() 2014 12
  • 13. Enter Apache Cordova Build apps with web tech you know and love adaptTo() 2014 13
  • 14. Cordova § A cross-platform app framework § Initially PhoneGap, created by Nitobi § Donated to ASF in 2011 as Cordova § of which PhoneGap is a distribution adaptTo() 2014 14
  • 15. Cordova § Supported platforms § iOS § Android § BB10 § WP7, WP8, Windows 8 § Amazon Fire OS § Tizen § and more… adaptTo() 2014 15
  • 16. Cordova Plugins § Device APIs: § Camera § Geoloca3on § Accelerometer § File § Contacts § Events § Connec3on § No3fica3on § Storage § InAppBrowser § Device § Compass § Globaliza3on adaptTo() 2014 16
  • 17. Cordova CLI § Command line interface features § Bootstrap a new app § build/install/run app on a specific platform § Locally or via PhoneGap build § Manage plugins adaptTo() 2014 17
  • 18. Let’s give it a try adaptTo() 2014 18
  • 19. Cordova CLI at a glance § Create your app: cordova create helloAdaptTo § Add a platform: cd helloAdaptTo cordova platform add ios § Run your app on a simulator: cordova emulate ios adaptTo() 2014 19
  • 20. Cordova + Sling § Goals: § Repurpose existing content § Fetch & present data with minimum server side customization § Authenticate with the server adaptTo() 2014 20
  • 21. Cordova + Sling § Bonus goals § Post content from device § Be indistinguishable from a native app § Offline access to content adaptTo() 2014 21
  • 22. Less talk, more action bit.ly/blog-­‐app adaptTo() 2014 22
  • 23. Goal: Repurpose existing content § server/espblog/[…]/apps/espblog/json.esp { "title": "<%=post.title%>", "link": "<%= serverURI %><%=post%>.json", "description": "<%=post.posttext%>", "pubDate": "<%=df.format(post.created.getTime())%>", "resources": { "attachments": [ <% renderMedia(post, "attachments"); %> ] } } adaptTo() 2014 23
  • 24. Goal: Fetch & present data § www/js/controllers.js $http.get(slingHostURI + '/content/espblog/posts.list.json') .success(function(data, status) { $scope.connected = true; $scope.blogPostList = data.posts; }) .error(function(data, status) { $scope.connected = false; console.error('Blog post list fetch failed’); }); adaptTo() 2014 24
  • 25. Goal: Authenticate with the server § www/js/controllers.js $http({ method: 'POST', url: slingHostURI + '/j_security_check', data: formData, headers: { 'Content-Type': undefined }, transformRequest: formDataObject }) … basicAuthentication.setCredentials(formData.j_username, formData.j_password); adaptTo() 2014 25
  • 26. Cordova + Sling § Reuse existing content § Reuse existing infra § Reuse existing web skills § Write once, run cross-platform adaptTo() 2014 26
  • 27. Cordova + AEM --- PhoneGap Enterprise adaptTo() 2014 27
  • 28. PhoneGap Enterprise § Highlights § Update app content w/o writing code § Integration with Adobe Mobile Services § Over the Air content updates § AngularJS integration § Geometrixx reference implementation adaptTo() 2014 28
  • 30. PhoneGap Enterprise demo bit.ly/aem-­‐pg adaptTo() 2014 30
  • 31. Recap § Problem? § Solution § Cordova § + Sling § + AEM adaptTo() 2014 31
  • 32. bit.ly/blog-­‐app bit.ly/aem-­‐pg Questions? @brucelefebvre adaptTo() 2014 32
  • 34. Resources § Cordova + Sling blog app Github repository § PhoneGap Kitchen Sink Github repository § PhoneGap Beliefs, Goals, and Philosophy – Brian LeRoux § PhoneGap, Cordova, and what’s in a name? – Brian LeRoux § PhoneGap Documentation – v. 3.5.0 adaptTo() 2014 34
  • 35. Creative Resources § ‘But the web can’t’ slide http://www.designcaffeine.com/uncategorized/mobile-magic-moments-transform-the-trivial/ § ‘Cordova CLI’ slide http://www.stradiji.com/wp-content/uploads/2013/03/swiss-army-knife.png § ‘Cordova Plugins’ slide http://www.freshtilledsoil.com/native-app-vs-mobile-website/ § Apache httpd http://httpd.apache.org/ § ECMA logo http://en.wikipedia.org/wiki/Ecma_International § W3C http://www.w3.org/ § WHATWG http://www.whatwg.org/ § AngularJS https://angularjs.org/ § Sling http://sling.apache.org/ § HTML http://en.wikipedia.org/wiki/HTML adaptTo() 2014 35