SlideShare a Scribd company logo
1 of 49
Download to read offline
1
Gearing Up for Mobile
Development with AeroGear
Prajod Vettiyattil
@prajods
in.linkedin.com/in/prajod

2

Naveen Raj Balasubramaniam
@Naveenrajbala
in.linkedin.com/in/naveenraj
Agenda
A walk with AeroGear
Simplify mobile development

Front end development support
Server side development support
The Road Ahead

Summary
3
A walk with AeroGear

4
Mobile Development Framework
Local Data
Management

User Interaction
Management

Authentication /
Authorization

Communication
Framework

Native API handler

Patch / Version
Management

Management

Monitoring

UI Framework
Data
Management

Request
Processing

Authentication /
Authorization

Device Variant
Management

Communication
Framework

Metering /
Billing

Patch / Version
Management

Monitoring

Management

Server side Framework
5

User / Device
Registration
Mobile Development Framework
AeroGear features
Local Data
Management

User Interaction
Management

Authentication /
Authorization

Communication
Framework

Native API handler

Patch / Version
Management

Management

Monitoring

UI Framework
Data
Management

Request
Processing

Authentication /
Authorization

Device Variant
Management

Communication
Framework

Metering /
Billing

Patch / Version
Management

Monitoring

Management

Server side Framework
6

User / Device
Registration
Mobile web Development
There many mobile
phone operating systems
in the market.

7
And there are Frameworks
•
•

There are lot of technologies for every platform
Native and non–native technologies

8
Overview of AeroGear
AeroGear is for mobile development
• A set of libraries
•
•
•
•

Android library, iOS library, JavaScript Library
AeroGear Connectivity
AeroGear Controller, Security
AeroGear Persistence

• Unified approach to development
• Multi-platform support
• Out of the box push notification and
security

9
Browser support in Aerogear
Currently AeroGear supports the following desktop
web browsers
• Firefox
• Chrome
• IE
• Safari
Currently AeroGear Supports the following mobile web
browsers.
• Android Browser
• Safari
In General all the web browsers with html5 support
will support Aerogear apps too
10
Mobile development options

Option 1: Mobile Browser app
Mobile Brower

HTML5,
CSS3, JS

11

• Mobile browser app(web
app)
• HTML5 + CSS3 +
javascript
• Most portable
• Platform independent
code
• No access to native
APIs
Mobile development options

Option 2: Native App
• Native apps
Native App

Native Device
APIs

12

• Platform dependent
• Uses native APIs
• Most powerful, least
portable
• Most popular among
users
• Best user experience
Mobile development options

Option 3: Hybrid App
• Hybrid apps, plugins
Native Shell
Mobile Brower
HTML5, CSS3,
JS

Bridge code

Native Device APIs

13

Developed as web apps
Deployed and run as native apps
Javascript calls the bridge code
Plugins for direct access to native
APIs
• Looks like a native app
• Has limitations in accessing native
APIs
• Cordova, PhoneGap, Appcelerator,
Sencha
•
•
•
•
Comparing the options
Mobile Brower

Native Shell
Mobile Brower

Native App
HTML5,
CSS3, JS

HTML5, CSS3,
JS

Bridge code

Native Device
APIs

Browser only
14

Native Device APIs

Native only

Hybrid(browser+native)
Which option is AeroGear for ?
• Primarily
• Client-server type of apps
• Browser only apps
• Hybrid apps

• Also
• Native apps
• The communication and server side
features
15
Simplify mobile development
with AeroGear

16
AeroGear Mobile Development
Aerogear makes front end development easier and
unified in the following platforms
• Android
• iOS
• Mobile web

For the server side, AeroGear touches the following areas
• Push Notification (Android, JS, iOS)
• Security
• More coming up…
17
Unified Development
Libraries for different platforms
• Java for Android
• JavaScript for web browsers
• Objective-C for iOS
• Unified approach
• Single application for multiple Mobile platforms
• Same deployment can be viewed by both mobile device
browsers and desktop browsers

18
Push Notification
Notifications are a popular method of communication
Push = messaging
from Server side

The why and how of notification
• Alert apps about events, updates
• High scalability
• Lightweight messages
App 7

Server

Push
Service

Push

19
Push: The platform concept

Push
Servers

20
Security
Authentication

Authorization

• OTP: One Time Password
• HTTPS: SSL
• General: username /password (encrypted transmission)
• Single Sign On
• Federated Identity Management using external Identity
Managers

21
Support for
front end development

22
User Interface Development
• UI Coding: Use HTML 5, CSS3 and
Javascript
• aerogear.js: javascript library
• REST: used for communications

23
AeroGear Development
Communication and Storage
Pipe
•
•

A connection made to the server
Connectivity to asynchronous data sources

Pipeline
pipe

Pipeline
•
•

A wrapper for a set of pipes
Has management features for pipes

DataManager
•
•
•

Data connections
Data models
Data connection is represented as a Store

Store
•
•

24

Data Stores on the mobile platform
Eg: SQLite(iOS, Android), Web Storage(HTML5)

Data Manager
iOS
Store

Android
Store

Web
Store
JavaScript Development
Creating Pipeline and Pipes
Instantiate a Pipeline
Add pipes to the Pipeline

Name

URL

Using Data Manager and Store
Instantiate a DataManager
Adding stores to the DataManager

25

Type
JavaScript Development
Creating Pipeline and Pipes
var memberPipe = AeroGear.Pipeline([{
name: “2014",
settings: {
baseURL: “JUDCon/“
}
}
]).pipes.members;
The pipe’s URL will then look like:

URL

Instantiate a data manager

var dataManager = AeroGear.DataManager(
"membersStore" ),
MemberStore =
dataManager.stores["membersStore"];

26

pipe’s name

http://localhost/application_name/JUDCon/2014

Using Data Manager and Store

Assign a store

Instantiate a pipe

//Create a custom local store
var dManage =
AeroGear.DataManager({
name: "mySessionStorage",
type: "SessionLocal",
id: "customID"
});
Android Development
Pipeline and Pipes
public class MyActivity extends ListActivity {

Pipeline pipeline;
void onCreate() {
pipeline = new Pipeline("http://www.judcon.com");
pipeline.pipe(Car.class);
}

Pipeline
Operations
•
•
•
•

Read
Save
Update
Remove

void onStart() {
LoaderPipe<Car> pipe = pipeline.get("car", this);
pipe.read(new MyCallback());
}
}

27
Android Development contd…
SQLStore

Memory Store

28

Operations
StoreConfig sqlStoreConfig = new StoreConfig();
sqlStoreConfig.setContext(getApplicationContext());
sqlStoreConfig.setType(SQL);
sqlStoreConfig.setKlass(Data.class);
Store store = dataManager.store("sqlStore",
sqlStoreConfig);
((SQLStore))store).open(/*callback*/);

•
•
•
•
•

Read
Save
Remove
Filter
Reset

StoreConfig memoryStoreConfig = new StoreConfig();
memoryStoreConfig.setContext(getApplicationContext());
memoryStoreConfig.setType(MEMORY);
memoryStoreConfig.setKlass(Data.class);
Store store = dataManager.store("memoryStore", memoryStoreConfig);
iOS Development
Pipeline and Pipes
// NSURL object:
NSURL* serverURL = [NSURL URLWithString:@"http://todoaerogear.rhcloud.com/todo-server/"];

Pipeline
Operations
•
•
•
•

29

Read
Save
Update
Remove

// create the 'todo' pipeline, which points to the baseURL
of the REST application
AGPipeline* todo = [AGPipeline
pipelineWithBaseURL:serverURL];
// Add a REST pipe for the 'projects' endpoint
id<AGPipe> projects = [todo pipe:^(id<AGPipeConfig>
config) {
[config setName:@"projects"];
// this is the default, can be emitted
[config setType:@"REST"];
}];
iOS Development contd…
SQLite

Memory Store

30

// create the datamanager
AGDataManager* dm = [AGDataManager manager];
// add a new (default) store object:
id<AGStore> store = [dm store:^(id<AGStoreConfig>
config) {
[config setName:@"tasks"];
[config setType:@"SQLITE"];
}];

Data
Operations
•
•
•
•
•

Read
Save
Remove
Filter
Reset

// create the datamanager
AGDataManager* dm = [AGDataManager manager];
// add a new (default) store object:
id<AGStore> myStore = [dm store:^(id<AGStoreConfig> config) {
[config setName:@"tasks"];
}];
The server side components

AeroGear Controller
AeroGear Security
UnifiedPush

31
AeroGear Controller
What is the AeroGear Controller ?
• A lean MVC implemented in java
• Routes HTTP requests to plain Java Object endpoint, and
handles the results
• Can be deployed on any container supporting CDI(Context and
Dependency Injection)
public class Routes extends AbstractRoutingModule {
@Override
public void configuration() {
route()
.from("/").roles("admin")
.on(RequestMethod.GET)
.consumes(JSON)
.produces(JSP, JSON)
.to(Home.class).index();
}
}
32
AeroGear Controller continued…
Routes
public class Routes extends AbstractRoutingModule {
@Override
public void configuration() {
route()
.from("/").roles("admin")
.on(RequestMethod.GET)
.consumes(JSON)
.produces(JSP, JSON)
.to(Home.class).index();
}
}

33
AeroGear Controller continued…
Pagination
•
•

If a page is too long for the screen
Returns a limited number of elements

Sample code returning a page in AeroGear controller, with pagination
route()
.from("/cars")
.on(RequestMethod.GET)
.produces(JSON)
.to(Cars.class).findCarsBy(param(PaginationInfo.class), param("color"));

Error Handling
route()
.on(YourException.class)
.to(ExceptionHandler.class).errorPage();
34
Push Notification: Registration
1

2 User

Developer

Push Notification Server
Application
Registration
Storage
Sender

JBoss AS backend server
35
Push Notification: Runtime
Push Notification
Server

5

Application
Registration

Simple Push

Storage

4
Sender

GCM

APN

3
JBoss AS backend server
36
Push for web clients

http

37
Push for Android

XMPP

38
Push for iOS

39
Push Notification: feature list
AeroGear Unified Push Notification Server
App 7

• Single unified push notification
• Single server for multiple apps and mobile platforms
• Currently supports Google Cloud Messaging, Apple
Push Notification
• Web push based on Mozilla’s Simple Push

Unified Push Administration Console
•
•
•
•
40

A single place to manage configurations
Register new push apps
Register variants of platforms
Currently supported: Android, iOS and Simple push
variants
Security

Hawk

Java OTP

PicketLink

iOS OTP

Shiro

41
Security
AeroGear Security Implementation
• Providing integration with security providers like
PicketLink, Shiro
• Completely decoupled from the AeroGear controller
import org.jboss.aerogear.controller.spi.SecurityProvider;

public class AeroGearSecurityProvider implements SecurityProvider {
@Inject
private IdentityManagement identityManagement;
@Override
public void isRouteAllowed(Route route) throws ServletException {
if (!identityManagement.hasRoles(route.getRoles())) {
throw new AeroGearSecurityException(HttpStatus.AUTHENTICATION_FAILED);
}
}
42

}
Security: Filters and HSTS
Filters

• A security mechanism with many applications
• Eg: prevent ClickJacking
HSTS
• HTTP Strict Transport Security
• Force https usage
• Optional in AeroGear
43
Security: OTP

AeroGear OTP
• One time password
• Increased security while executing transaction
• OTP and AeroGear Security can be used together or
separately
// Get a user’s otp

// verify the user’s otp

public class Otp {

public User otp(SimpleUser user, String otp) {

@Inject
@Secret
private Instance<String> secret;

Totp totp = new Totp(secret.get());
boolean result = totp.verify(otp);
if (!result)
throw new RuntimeException("Invalid OTP");

@Inject
@LoggedUser
private Instance<String> loggedInUserName;

return user;
}

public String secret() {
return new
Totp(secret.get()).uri(loggedInUserName.get());
}

44

}
The Road Ahead

45
Road Ahead
Browser Support
•
•
•

Windows Mobile
Mobile Chrome
Opera Mobile and Desktop

Push Notification
•
•

46

MQTT
STOMP
Summary
• What is Aerogear
• Supported platforms
• Front end development
• AeroGear Libraries for each platform

• Server side development
• AeroGear Push Notification
• AeroGear Security

47
Useful Links
AeroGear References
• http://aerogear.org

External References
• http://www.markus-falk.com/mobile-frameworks-comparisonchart/
• http://www.infoq.com/articles/javaee-mobile-applicationdevelopment-aerogear
• http://www.slideshare.net/lfryc/the-gear-you-need-to-gomobile-with-java-enterprise
• http://www.slideshare.net/jaxlondon2012/html-alchemy-thesecrets-of-mixing-javascript-and-java-ee
• http://www.ohloh.net/p?ref=homepage&q=aerogear
48
Thank You
@prajods

@Naveenrajbala

Start Gearing…

49

More Related Content

What's hot

Android Introduction
Android IntroductionAndroid Introduction
Android Introductionaswapnal
 
Vaadin - Rich Web Applications in Server-side Java without Plug-ins or JavaSc...
Vaadin - Rich Web Applications in Server-side Java without Plug-ins or JavaSc...Vaadin - Rich Web Applications in Server-side Java without Plug-ins or JavaSc...
Vaadin - Rich Web Applications in Server-side Java without Plug-ins or JavaSc...Joonas Lehtinen
 
Oracle WebCenter Solutions
Oracle WebCenter SolutionsOracle WebCenter Solutions
Oracle WebCenter SolutionsReiner Ernst
 
Asp interview Question and Answer
Asp interview Question and Answer Asp interview Question and Answer
Asp interview Question and Answer home
 
Creating personalized cross platform mobile apps with the Sitecore Mobile SDK
Creating personalized cross platform mobile apps with the Sitecore Mobile SDKCreating personalized cross platform mobile apps with the Sitecore Mobile SDK
Creating personalized cross platform mobile apps with the Sitecore Mobile SDKMark van Aalst
 
Sid K
Sid KSid K
Sid KSid K
 
Nokia Web-Runtime Presentation (Phong Vu)
Nokia Web-Runtime Presentation (Phong Vu)Nokia Web-Runtime Presentation (Phong Vu)
Nokia Web-Runtime Presentation (Phong Vu)Daniel Appelquist
 
IBM WebSphere Portal 6.1 Preview - What's New
IBM WebSphere Portal 6.1 Preview - What's NewIBM WebSphere Portal 6.1 Preview - What's New
IBM WebSphere Portal 6.1 Preview - What's NewDvir Reznik
 
MongoDB.local Sydney: Evolving your Data Access with MongoDB Stitch
MongoDB.local Sydney: Evolving your Data Access with MongoDB StitchMongoDB.local Sydney: Evolving your Data Access with MongoDB Stitch
MongoDB.local Sydney: Evolving your Data Access with MongoDB StitchMongoDB
 
Drupal Commerce, DrupalCamp Colorado 2010
Drupal Commerce, DrupalCamp Colorado 2010Drupal Commerce, DrupalCamp Colorado 2010
Drupal Commerce, DrupalCamp Colorado 2010Ryan Szrama
 
Frontend APIs powering fast paced product iterations
Frontend APIs powering fast paced product iterationsFrontend APIs powering fast paced product iterations
Frontend APIs powering fast paced product iterationsKarthik Ramgopal
 
C# .NET Developer Portfolio
C# .NET Developer PortfolioC# .NET Developer Portfolio
C# .NET Developer Portfoliocummings49
 
Integrating ASP.NET AJAX with SharePoint
Integrating ASP.NET AJAX with SharePointIntegrating ASP.NET AJAX with SharePoint
Integrating ASP.NET AJAX with SharePointRob Windsor
 
Oracle web center
Oracle web centerOracle web center
Oracle web centerEast Le
 
Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...
Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...
Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...jaxconf
 
Understanding SharePoint 2013 Code Deployment Models - Apps vs Solutions - Sh...
Understanding SharePoint 2013 Code Deployment Models - Apps vs Solutions - Sh...Understanding SharePoint 2013 Code Deployment Models - Apps vs Solutions - Sh...
Understanding SharePoint 2013 Code Deployment Models - Apps vs Solutions - Sh...Nik Patel
 
Sitecore xDB - Architecture and Configuration
Sitecore xDB - Architecture and ConfigurationSitecore xDB - Architecture and Configuration
Sitecore xDB - Architecture and ConfigurationCodersCenter
 
Tech p22 integrating sap with web sphere portal
Tech p22 integrating sap with web sphere portalTech p22 integrating sap with web sphere portal
Tech p22 integrating sap with web sphere portalmlech23
 
Web API 2 Token Based Authentication
Web API 2 Token Based AuthenticationWeb API 2 Token Based Authentication
Web API 2 Token Based Authenticationjeremysbrown
 

What's hot (20)

Android Introduction
Android IntroductionAndroid Introduction
Android Introduction
 
Vaadin - Rich Web Applications in Server-side Java without Plug-ins or JavaSc...
Vaadin - Rich Web Applications in Server-side Java without Plug-ins or JavaSc...Vaadin - Rich Web Applications in Server-side Java without Plug-ins or JavaSc...
Vaadin - Rich Web Applications in Server-side Java without Plug-ins or JavaSc...
 
Oracle WebCenter Solutions
Oracle WebCenter SolutionsOracle WebCenter Solutions
Oracle WebCenter Solutions
 
Asp interview Question and Answer
Asp interview Question and Answer Asp interview Question and Answer
Asp interview Question and Answer
 
Creating personalized cross platform mobile apps with the Sitecore Mobile SDK
Creating personalized cross platform mobile apps with the Sitecore Mobile SDKCreating personalized cross platform mobile apps with the Sitecore Mobile SDK
Creating personalized cross platform mobile apps with the Sitecore Mobile SDK
 
Sid K
Sid KSid K
Sid K
 
Nokia Web-Runtime Presentation (Phong Vu)
Nokia Web-Runtime Presentation (Phong Vu)Nokia Web-Runtime Presentation (Phong Vu)
Nokia Web-Runtime Presentation (Phong Vu)
 
Oracle ADF Case Study
Oracle ADF Case StudyOracle ADF Case Study
Oracle ADF Case Study
 
IBM WebSphere Portal 6.1 Preview - What's New
IBM WebSphere Portal 6.1 Preview - What's NewIBM WebSphere Portal 6.1 Preview - What's New
IBM WebSphere Portal 6.1 Preview - What's New
 
MongoDB.local Sydney: Evolving your Data Access with MongoDB Stitch
MongoDB.local Sydney: Evolving your Data Access with MongoDB StitchMongoDB.local Sydney: Evolving your Data Access with MongoDB Stitch
MongoDB.local Sydney: Evolving your Data Access with MongoDB Stitch
 
Drupal Commerce, DrupalCamp Colorado 2010
Drupal Commerce, DrupalCamp Colorado 2010Drupal Commerce, DrupalCamp Colorado 2010
Drupal Commerce, DrupalCamp Colorado 2010
 
Frontend APIs powering fast paced product iterations
Frontend APIs powering fast paced product iterationsFrontend APIs powering fast paced product iterations
Frontend APIs powering fast paced product iterations
 
C# .NET Developer Portfolio
C# .NET Developer PortfolioC# .NET Developer Portfolio
C# .NET Developer Portfolio
 
Integrating ASP.NET AJAX with SharePoint
Integrating ASP.NET AJAX with SharePointIntegrating ASP.NET AJAX with SharePoint
Integrating ASP.NET AJAX with SharePoint
 
Oracle web center
Oracle web centerOracle web center
Oracle web center
 
Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...
Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...
Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...
 
Understanding SharePoint 2013 Code Deployment Models - Apps vs Solutions - Sh...
Understanding SharePoint 2013 Code Deployment Models - Apps vs Solutions - Sh...Understanding SharePoint 2013 Code Deployment Models - Apps vs Solutions - Sh...
Understanding SharePoint 2013 Code Deployment Models - Apps vs Solutions - Sh...
 
Sitecore xDB - Architecture and Configuration
Sitecore xDB - Architecture and ConfigurationSitecore xDB - Architecture and Configuration
Sitecore xDB - Architecture and Configuration
 
Tech p22 integrating sap with web sphere portal
Tech p22 integrating sap with web sphere portalTech p22 integrating sap with web sphere portal
Tech p22 integrating sap with web sphere portal
 
Web API 2 Token Based Authentication
Web API 2 Token Based AuthenticationWeb API 2 Token Based Authentication
Web API 2 Token Based Authentication
 

Similar to JUDCon 2014: Gearing up for mobile development with AeroGear

Case Study For Track Revenue Reports of Casino through Google App Engine
Case Study For Track Revenue Reports of Casino through Google App EngineCase Study For Track Revenue Reports of Casino through Google App Engine
Case Study For Track Revenue Reports of Casino through Google App EngineMike Taylor
 
Ibm xamarin gtruty
Ibm xamarin gtrutyIbm xamarin gtruty
Ibm xamarin gtrutyRon Favali
 
Summit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan Wright
Summit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan WrightSummit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan Wright
Summit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan WrightAndrew Ly
 
Mobile game architecture on GCP
Mobile game architecture on GCPMobile game architecture on GCP
Mobile game architecture on GCP명근 최
 
Simple stock market analysis
Simple stock market analysisSimple stock market analysis
Simple stock market analysislynneblue
 
Mobile Web Applications using HTML5 [IndicThreads Mobile Application Develop...
Mobile Web Applications using HTML5  [IndicThreads Mobile Application Develop...Mobile Web Applications using HTML5  [IndicThreads Mobile Application Develop...
Mobile Web Applications using HTML5 [IndicThreads Mobile Application Develop...IndicThreads
 
Developer’s Independence Day: Introducing the SharePoint App Model
Developer’s Independence Day:Introducing the SharePoint App ModelDeveloper’s Independence Day:Introducing the SharePoint App Model
Developer’s Independence Day: Introducing the SharePoint App Modelbgerman
 
Serverless in Azure with Functions
Serverless in Azure with FunctionsServerless in Azure with Functions
Serverless in Azure with FunctionsChristos Matskas
 
300 - Multiplatform Apps on Google Cloud Platform
300 - Multiplatform Apps on Google Cloud Platform300 - Multiplatform Apps on Google Cloud Platform
300 - Multiplatform Apps on Google Cloud PlatformMobileMonday Tel-Aviv
 
MongoDB.local Atlanta: Introduction to Serverless MongoDB
MongoDB.local Atlanta: Introduction to Serverless MongoDBMongoDB.local Atlanta: Introduction to Serverless MongoDB
MongoDB.local Atlanta: Introduction to Serverless MongoDBMongoDB
 
SPCA2013 - Developing SharePoint 2013 Apps with Visual Studio 2012
SPCA2013 - Developing SharePoint 2013 Apps with Visual Studio 2012SPCA2013 - Developing SharePoint 2013 Apps with Visual Studio 2012
SPCA2013 - Developing SharePoint 2013 Apps with Visual Studio 2012NCCOMMS
 
Made for Mobile - Let Office 365 Power Your Mobile Apps
Made for Mobile - Let Office 365 Power Your Mobile AppsMade for Mobile - Let Office 365 Power Your Mobile Apps
Made for Mobile - Let Office 365 Power Your Mobile AppsSPC Adriatics
 
The future of web development write once, run everywhere with angular js an...
The future of web development   write once, run everywhere with angular js an...The future of web development   write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular js an...Mark Leusink
 
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...Mark Roden
 
Cloud Powered Mobile Apps with Azure
Cloud Powered Mobile Apps  with AzureCloud Powered Mobile Apps  with Azure
Cloud Powered Mobile Apps with AzureKris Wagner
 
Developing SharePoint 2013 apps with Visual Studio 2012 - SharePoint Connecti...
Developing SharePoint 2013 apps with Visual Studio 2012 - SharePoint Connecti...Developing SharePoint 2013 apps with Visual Studio 2012 - SharePoint Connecti...
Developing SharePoint 2013 apps with Visual Studio 2012 - SharePoint Connecti...Bram de Jager
 
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...MongoDB
 
Connecting Xamarin Apps with IBM Worklight in Bluemix
Connecting Xamarin Apps with IBM Worklight in BluemixConnecting Xamarin Apps with IBM Worklight in Bluemix
Connecting Xamarin Apps with IBM Worklight in BluemixIBM
 

Similar to JUDCon 2014: Gearing up for mobile development with AeroGear (20)

Case Study For Track Revenue Reports of Casino through Google App Engine
Case Study For Track Revenue Reports of Casino through Google App EngineCase Study For Track Revenue Reports of Casino through Google App Engine
Case Study For Track Revenue Reports of Casino through Google App Engine
 
Ibm xamarin gtruty
Ibm xamarin gtrutyIbm xamarin gtruty
Ibm xamarin gtruty
 
Summit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan Wright
Summit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan WrightSummit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan Wright
Summit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan Wright
 
Mobile web development
Mobile web developmentMobile web development
Mobile web development
 
Mobile game architecture on GCP
Mobile game architecture on GCPMobile game architecture on GCP
Mobile game architecture on GCP
 
Simple stock market analysis
Simple stock market analysisSimple stock market analysis
Simple stock market analysis
 
Mobile Web Applications using HTML5 [IndicThreads Mobile Application Develop...
Mobile Web Applications using HTML5  [IndicThreads Mobile Application Develop...Mobile Web Applications using HTML5  [IndicThreads Mobile Application Develop...
Mobile Web Applications using HTML5 [IndicThreads Mobile Application Develop...
 
Developer’s Independence Day: Introducing the SharePoint App Model
Developer’s Independence Day:Introducing the SharePoint App ModelDeveloper’s Independence Day:Introducing the SharePoint App Model
Developer’s Independence Day: Introducing the SharePoint App Model
 
Serverless in Azure with Functions
Serverless in Azure with FunctionsServerless in Azure with Functions
Serverless in Azure with Functions
 
300 - Multiplatform Apps on Google Cloud Platform
300 - Multiplatform Apps on Google Cloud Platform300 - Multiplatform Apps on Google Cloud Platform
300 - Multiplatform Apps on Google Cloud Platform
 
Fire up your mobile app!
Fire up your mobile app!Fire up your mobile app!
Fire up your mobile app!
 
MongoDB.local Atlanta: Introduction to Serverless MongoDB
MongoDB.local Atlanta: Introduction to Serverless MongoDBMongoDB.local Atlanta: Introduction to Serverless MongoDB
MongoDB.local Atlanta: Introduction to Serverless MongoDB
 
SPCA2013 - Developing SharePoint 2013 Apps with Visual Studio 2012
SPCA2013 - Developing SharePoint 2013 Apps with Visual Studio 2012SPCA2013 - Developing SharePoint 2013 Apps with Visual Studio 2012
SPCA2013 - Developing SharePoint 2013 Apps with Visual Studio 2012
 
Made for Mobile - Let Office 365 Power Your Mobile Apps
Made for Mobile - Let Office 365 Power Your Mobile AppsMade for Mobile - Let Office 365 Power Your Mobile Apps
Made for Mobile - Let Office 365 Power Your Mobile Apps
 
The future of web development write once, run everywhere with angular js an...
The future of web development   write once, run everywhere with angular js an...The future of web development   write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular js an...
 
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...
 
Cloud Powered Mobile Apps with Azure
Cloud Powered Mobile Apps  with AzureCloud Powered Mobile Apps  with Azure
Cloud Powered Mobile Apps with Azure
 
Developing SharePoint 2013 apps with Visual Studio 2012 - SharePoint Connecti...
Developing SharePoint 2013 apps with Visual Studio 2012 - SharePoint Connecti...Developing SharePoint 2013 apps with Visual Studio 2012 - SharePoint Connecti...
Developing SharePoint 2013 apps with Visual Studio 2012 - SharePoint Connecti...
 
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
 
Connecting Xamarin Apps with IBM Worklight in Bluemix
Connecting Xamarin Apps with IBM Worklight in BluemixConnecting Xamarin Apps with IBM Worklight in Bluemix
Connecting Xamarin Apps with IBM Worklight in Bluemix
 

More from prajods

Apache Cassandra and Python for Analyzing Streaming Big Data
Apache Cassandra and Python for Analyzing Streaming Big Data Apache Cassandra and Python for Analyzing Streaming Big Data
Apache Cassandra and Python for Analyzing Streaming Big Data prajods
 
Big Data visualization with Apache Spark and Zeppelin
Big Data visualization with Apache Spark and ZeppelinBig Data visualization with Apache Spark and Zeppelin
Big Data visualization with Apache Spark and Zeppelinprajods
 
Event Driven Architecture with Apache Camel
Event Driven Architecture with Apache CamelEvent Driven Architecture with Apache Camel
Event Driven Architecture with Apache Camelprajods
 
RedHat MRG and Infinispan for Large Scale Integration
RedHat MRG and Infinispan for Large Scale IntegrationRedHat MRG and Infinispan for Large Scale Integration
RedHat MRG and Infinispan for Large Scale Integrationprajods
 
Apache Spark: The Next Gen toolset for Big Data Processing
Apache Spark: The Next Gen toolset for Big Data ProcessingApache Spark: The Next Gen toolset for Big Data Processing
Apache Spark: The Next Gen toolset for Big Data Processingprajods
 
Enabling Data as a Service with the JBoss Enterprise Data Services Platform
Enabling Data as a Service with the JBoss Enterprise Data Services PlatformEnabling Data as a Service with the JBoss Enterprise Data Services Platform
Enabling Data as a Service with the JBoss Enterprise Data Services Platformprajods
 
Apache Camel: The Swiss Army Knife of Open Source Integration
Apache Camel: The Swiss Army Knife of Open Source IntegrationApache Camel: The Swiss Army Knife of Open Source Integration
Apache Camel: The Swiss Army Knife of Open Source Integrationprajods
 

More from prajods (7)

Apache Cassandra and Python for Analyzing Streaming Big Data
Apache Cassandra and Python for Analyzing Streaming Big Data Apache Cassandra and Python for Analyzing Streaming Big Data
Apache Cassandra and Python for Analyzing Streaming Big Data
 
Big Data visualization with Apache Spark and Zeppelin
Big Data visualization with Apache Spark and ZeppelinBig Data visualization with Apache Spark and Zeppelin
Big Data visualization with Apache Spark and Zeppelin
 
Event Driven Architecture with Apache Camel
Event Driven Architecture with Apache CamelEvent Driven Architecture with Apache Camel
Event Driven Architecture with Apache Camel
 
RedHat MRG and Infinispan for Large Scale Integration
RedHat MRG and Infinispan for Large Scale IntegrationRedHat MRG and Infinispan for Large Scale Integration
RedHat MRG and Infinispan for Large Scale Integration
 
Apache Spark: The Next Gen toolset for Big Data Processing
Apache Spark: The Next Gen toolset for Big Data ProcessingApache Spark: The Next Gen toolset for Big Data Processing
Apache Spark: The Next Gen toolset for Big Data Processing
 
Enabling Data as a Service with the JBoss Enterprise Data Services Platform
Enabling Data as a Service with the JBoss Enterprise Data Services PlatformEnabling Data as a Service with the JBoss Enterprise Data Services Platform
Enabling Data as a Service with the JBoss Enterprise Data Services Platform
 
Apache Camel: The Swiss Army Knife of Open Source Integration
Apache Camel: The Swiss Army Knife of Open Source IntegrationApache Camel: The Swiss Army Knife of Open Source Integration
Apache Camel: The Swiss Army Knife of Open Source Integration
 

Recently uploaded

#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
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
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 

Recently uploaded (20)

#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
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?
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 

JUDCon 2014: Gearing up for mobile development with AeroGear

  • 1. 1
  • 2. Gearing Up for Mobile Development with AeroGear Prajod Vettiyattil @prajods in.linkedin.com/in/prajod 2 Naveen Raj Balasubramaniam @Naveenrajbala in.linkedin.com/in/naveenraj
  • 3. Agenda A walk with AeroGear Simplify mobile development Front end development support Server side development support The Road Ahead Summary 3
  • 4. A walk with AeroGear 4
  • 5. Mobile Development Framework Local Data Management User Interaction Management Authentication / Authorization Communication Framework Native API handler Patch / Version Management Management Monitoring UI Framework Data Management Request Processing Authentication / Authorization Device Variant Management Communication Framework Metering / Billing Patch / Version Management Monitoring Management Server side Framework 5 User / Device Registration
  • 6. Mobile Development Framework AeroGear features Local Data Management User Interaction Management Authentication / Authorization Communication Framework Native API handler Patch / Version Management Management Monitoring UI Framework Data Management Request Processing Authentication / Authorization Device Variant Management Communication Framework Metering / Billing Patch / Version Management Monitoring Management Server side Framework 6 User / Device Registration
  • 7. Mobile web Development There many mobile phone operating systems in the market. 7
  • 8. And there are Frameworks • • There are lot of technologies for every platform Native and non–native technologies 8
  • 9. Overview of AeroGear AeroGear is for mobile development • A set of libraries • • • • Android library, iOS library, JavaScript Library AeroGear Connectivity AeroGear Controller, Security AeroGear Persistence • Unified approach to development • Multi-platform support • Out of the box push notification and security 9
  • 10. Browser support in Aerogear Currently AeroGear supports the following desktop web browsers • Firefox • Chrome • IE • Safari Currently AeroGear Supports the following mobile web browsers. • Android Browser • Safari In General all the web browsers with html5 support will support Aerogear apps too 10
  • 11. Mobile development options Option 1: Mobile Browser app Mobile Brower HTML5, CSS3, JS 11 • Mobile browser app(web app) • HTML5 + CSS3 + javascript • Most portable • Platform independent code • No access to native APIs
  • 12. Mobile development options Option 2: Native App • Native apps Native App Native Device APIs 12 • Platform dependent • Uses native APIs • Most powerful, least portable • Most popular among users • Best user experience
  • 13. Mobile development options Option 3: Hybrid App • Hybrid apps, plugins Native Shell Mobile Brower HTML5, CSS3, JS Bridge code Native Device APIs 13 Developed as web apps Deployed and run as native apps Javascript calls the bridge code Plugins for direct access to native APIs • Looks like a native app • Has limitations in accessing native APIs • Cordova, PhoneGap, Appcelerator, Sencha • • • •
  • 14. Comparing the options Mobile Brower Native Shell Mobile Brower Native App HTML5, CSS3, JS HTML5, CSS3, JS Bridge code Native Device APIs Browser only 14 Native Device APIs Native only Hybrid(browser+native)
  • 15. Which option is AeroGear for ? • Primarily • Client-server type of apps • Browser only apps • Hybrid apps • Also • Native apps • The communication and server side features 15
  • 17. AeroGear Mobile Development Aerogear makes front end development easier and unified in the following platforms • Android • iOS • Mobile web For the server side, AeroGear touches the following areas • Push Notification (Android, JS, iOS) • Security • More coming up… 17
  • 18. Unified Development Libraries for different platforms • Java for Android • JavaScript for web browsers • Objective-C for iOS • Unified approach • Single application for multiple Mobile platforms • Same deployment can be viewed by both mobile device browsers and desktop browsers 18
  • 19. Push Notification Notifications are a popular method of communication Push = messaging from Server side The why and how of notification • Alert apps about events, updates • High scalability • Lightweight messages App 7 Server Push Service Push 19
  • 20. Push: The platform concept Push Servers 20
  • 21. Security Authentication Authorization • OTP: One Time Password • HTTPS: SSL • General: username /password (encrypted transmission) • Single Sign On • Federated Identity Management using external Identity Managers 21
  • 22. Support for front end development 22
  • 23. User Interface Development • UI Coding: Use HTML 5, CSS3 and Javascript • aerogear.js: javascript library • REST: used for communications 23
  • 24. AeroGear Development Communication and Storage Pipe • • A connection made to the server Connectivity to asynchronous data sources Pipeline pipe Pipeline • • A wrapper for a set of pipes Has management features for pipes DataManager • • • Data connections Data models Data connection is represented as a Store Store • • 24 Data Stores on the mobile platform Eg: SQLite(iOS, Android), Web Storage(HTML5) Data Manager iOS Store Android Store Web Store
  • 25. JavaScript Development Creating Pipeline and Pipes Instantiate a Pipeline Add pipes to the Pipeline Name URL Using Data Manager and Store Instantiate a DataManager Adding stores to the DataManager 25 Type
  • 26. JavaScript Development Creating Pipeline and Pipes var memberPipe = AeroGear.Pipeline([{ name: “2014", settings: { baseURL: “JUDCon/“ } } ]).pipes.members; The pipe’s URL will then look like: URL Instantiate a data manager var dataManager = AeroGear.DataManager( "membersStore" ), MemberStore = dataManager.stores["membersStore"]; 26 pipe’s name http://localhost/application_name/JUDCon/2014 Using Data Manager and Store Assign a store Instantiate a pipe //Create a custom local store var dManage = AeroGear.DataManager({ name: "mySessionStorage", type: "SessionLocal", id: "customID" });
  • 27. Android Development Pipeline and Pipes public class MyActivity extends ListActivity { Pipeline pipeline; void onCreate() { pipeline = new Pipeline("http://www.judcon.com"); pipeline.pipe(Car.class); } Pipeline Operations • • • • Read Save Update Remove void onStart() { LoaderPipe<Car> pipe = pipeline.get("car", this); pipe.read(new MyCallback()); } } 27
  • 28. Android Development contd… SQLStore Memory Store 28 Operations StoreConfig sqlStoreConfig = new StoreConfig(); sqlStoreConfig.setContext(getApplicationContext()); sqlStoreConfig.setType(SQL); sqlStoreConfig.setKlass(Data.class); Store store = dataManager.store("sqlStore", sqlStoreConfig); ((SQLStore))store).open(/*callback*/); • • • • • Read Save Remove Filter Reset StoreConfig memoryStoreConfig = new StoreConfig(); memoryStoreConfig.setContext(getApplicationContext()); memoryStoreConfig.setType(MEMORY); memoryStoreConfig.setKlass(Data.class); Store store = dataManager.store("memoryStore", memoryStoreConfig);
  • 29. iOS Development Pipeline and Pipes // NSURL object: NSURL* serverURL = [NSURL URLWithString:@"http://todoaerogear.rhcloud.com/todo-server/"]; Pipeline Operations • • • • 29 Read Save Update Remove // create the 'todo' pipeline, which points to the baseURL of the REST application AGPipeline* todo = [AGPipeline pipelineWithBaseURL:serverURL]; // Add a REST pipe for the 'projects' endpoint id<AGPipe> projects = [todo pipe:^(id<AGPipeConfig> config) { [config setName:@"projects"]; // this is the default, can be emitted [config setType:@"REST"]; }];
  • 30. iOS Development contd… SQLite Memory Store 30 // create the datamanager AGDataManager* dm = [AGDataManager manager]; // add a new (default) store object: id<AGStore> store = [dm store:^(id<AGStoreConfig> config) { [config setName:@"tasks"]; [config setType:@"SQLITE"]; }]; Data Operations • • • • • Read Save Remove Filter Reset // create the datamanager AGDataManager* dm = [AGDataManager manager]; // add a new (default) store object: id<AGStore> myStore = [dm store:^(id<AGStoreConfig> config) { [config setName:@"tasks"]; }];
  • 31. The server side components AeroGear Controller AeroGear Security UnifiedPush 31
  • 32. AeroGear Controller What is the AeroGear Controller ? • A lean MVC implemented in java • Routes HTTP requests to plain Java Object endpoint, and handles the results • Can be deployed on any container supporting CDI(Context and Dependency Injection) public class Routes extends AbstractRoutingModule { @Override public void configuration() { route() .from("/").roles("admin") .on(RequestMethod.GET) .consumes(JSON) .produces(JSP, JSON) .to(Home.class).index(); } } 32
  • 33. AeroGear Controller continued… Routes public class Routes extends AbstractRoutingModule { @Override public void configuration() { route() .from("/").roles("admin") .on(RequestMethod.GET) .consumes(JSON) .produces(JSP, JSON) .to(Home.class).index(); } } 33
  • 34. AeroGear Controller continued… Pagination • • If a page is too long for the screen Returns a limited number of elements Sample code returning a page in AeroGear controller, with pagination route() .from("/cars") .on(RequestMethod.GET) .produces(JSON) .to(Cars.class).findCarsBy(param(PaginationInfo.class), param("color")); Error Handling route() .on(YourException.class) .to(ExceptionHandler.class).errorPage(); 34
  • 35. Push Notification: Registration 1 2 User Developer Push Notification Server Application Registration Storage Sender JBoss AS backend server 35
  • 36. Push Notification: Runtime Push Notification Server 5 Application Registration Simple Push Storage 4 Sender GCM APN 3 JBoss AS backend server 36
  • 37. Push for web clients http 37
  • 40. Push Notification: feature list AeroGear Unified Push Notification Server App 7 • Single unified push notification • Single server for multiple apps and mobile platforms • Currently supports Google Cloud Messaging, Apple Push Notification • Web push based on Mozilla’s Simple Push Unified Push Administration Console • • • • 40 A single place to manage configurations Register new push apps Register variants of platforms Currently supported: Android, iOS and Simple push variants
  • 42. Security AeroGear Security Implementation • Providing integration with security providers like PicketLink, Shiro • Completely decoupled from the AeroGear controller import org.jboss.aerogear.controller.spi.SecurityProvider; public class AeroGearSecurityProvider implements SecurityProvider { @Inject private IdentityManagement identityManagement; @Override public void isRouteAllowed(Route route) throws ServletException { if (!identityManagement.hasRoles(route.getRoles())) { throw new AeroGearSecurityException(HttpStatus.AUTHENTICATION_FAILED); } } 42 }
  • 43. Security: Filters and HSTS Filters • A security mechanism with many applications • Eg: prevent ClickJacking HSTS • HTTP Strict Transport Security • Force https usage • Optional in AeroGear 43
  • 44. Security: OTP AeroGear OTP • One time password • Increased security while executing transaction • OTP and AeroGear Security can be used together or separately // Get a user’s otp // verify the user’s otp public class Otp { public User otp(SimpleUser user, String otp) { @Inject @Secret private Instance<String> secret; Totp totp = new Totp(secret.get()); boolean result = totp.verify(otp); if (!result) throw new RuntimeException("Invalid OTP"); @Inject @LoggedUser private Instance<String> loggedInUserName; return user; } public String secret() { return new Totp(secret.get()).uri(loggedInUserName.get()); } 44 }
  • 46. Road Ahead Browser Support • • • Windows Mobile Mobile Chrome Opera Mobile and Desktop Push Notification • • 46 MQTT STOMP
  • 47. Summary • What is Aerogear • Supported platforms • Front end development • AeroGear Libraries for each platform • Server side development • AeroGear Push Notification • AeroGear Security 47
  • 48. Useful Links AeroGear References • http://aerogear.org External References • http://www.markus-falk.com/mobile-frameworks-comparisonchart/ • http://www.infoq.com/articles/javaee-mobile-applicationdevelopment-aerogear • http://www.slideshare.net/lfryc/the-gear-you-need-to-gomobile-with-java-enterprise • http://www.slideshare.net/jaxlondon2012/html-alchemy-thesecrets-of-mixing-javascript-and-java-ee • http://www.ohloh.net/p?ref=homepage&q=aerogear 48