AeroGear

Enterprise Mobile Made Simple

@qmx


http://qmx.me

disclaimer

the story

enterprise?

BORING?

CRUD

REST

WSDL/SOAP survivors, rejoice

Auth

Cache

Web

Mobile Web?

going mobile

fake, but proves the point

I want my Java Back

well, actually...

multiple platforms

going polyglot

there's

NO

silver language

Java

Ruby

node.js

Objective-C

Android

JavaScript

the

choice

paradox

gauging

approaches

back to basics

is Mobile Development

really

that

hard?

the market

Web

Development

request

response

STATELESS

Mobile App

STATEFUL

Patterns?

OHWAIT

because the best refactoring is

deleting code

several

platforms?

one vocabulary

to rule them all

abstracts

connection handling

JSON parsing

mundane tasks

away

AeroGear.js

Aerogear.js

  • uses jQuery internally ($.ajax and $.extend)
  • custom download builder

AeroGear.js


// create an empty pipeline:
var myPipeline = AeroGear.Pipeline();

// Add a connection/pipe object:
myPipeline.add("projects");

// Reading data from the 'myprojects' connection:
myPipeline.pipes['projects'].read({

   	success: function( data ) {...}

});
					

AeroGear iOS

AeroGear iOS

  • built on top of AFNetworking

AeroGear iOS


NSURL *journalURL = [NSURL URLWithString:@"http://192.168.1.200:3000/"];
AGPipeline *journal = [AGPipeline pipelineWithBaseURL:journalURL];

id entriesPipe = [journal pipe:^(id config) {
		[config setName:@"entries"];
}];

[entriesPipe read:^(id responseObject) {
		_entries = [responseObject objectForKey:@"entries"];
		[self.tableView reloadData];
} failure:^(NSError *error) {
		NSLog(@"An error has occured during fetch! \n%@", error);
}];
					

AeroGear Android

AeroGear Android

  • Uses the new Loader infrastructure
  • hides all the HttpClient+JSONStringer

AeroGear Android


protected void onCreate(Bundle savedInstanceState) {
	Pipeline pipeline = new Pipeline("http://192.168.1.200:3000");
	pipeline.pipe(Journal.class);
	LoaderPipe entriesPipeWithLoader = pipeline.get("journal", this);
	entriesPipeWithLoader.read(new JournalCallBack());
}

private class JournalCallBack extends AbstractActivityCallback> {
	public void onSuccess(List data) {
	// Put data on list view
	}
	public void onFailure(Exception e) {
	// Notify user ...
	}
}
					

show me the

code

back to the

future

AeroGear.next

AeroGear.next

unified push

AeroGear.next

data sync

AeroGear.next

offline support

AeroGear.next

security

thanks!