The AeroGear project is hiring, and we're looking for mobile native/hybrid/web developers to join our team. All the details are in my blog: Join the JBoss Team! If you are interested or know someone that is have them contact Jay Balunas (jbalunas at redhat dot com)!
We've got some other news as well! We're creating a new project site with more details on the project, and informaiton on the native client libraries that we are creating. All the details on this, and other updates in my blog Coming soon! New AeroGear Site & Other Updates
RichFaces and JavaServer Faces
- AeroGear JS 1.0.0 has landed!
It’s been a long time coming but the AeroGear team is pleased to announce the release of version 1.0.0 of the AeroGear.js library! This release provides simple yet robust and pluggable APIs for a number of the typical tasks developers must do when building a mobile application. From authentication to managing client side data to moving that data between server and client, AeroGear has you covered.
AeroGear.Auth provides simple methods for enrolling users and performing login/logout. Currently, if your server provides a REST interface to authentication, AeroGear.js will work with it.
AeroGear.DataManager (clever name, right?) is here to help developers manage their application’s data. Whether you’re data is just stored in memory or if you need a little more persistence with session or local storage, DataManager provides a single, easy to use API for storing, retrieving and querying that data.
Built on top of jQuery’s rock-solid AJAX method, AeroGear.Pipeline provides a simple, cross-browser API for persisting data to your server and retrieving that data either all at once or in manageable chunks with a standard based paging interface.
A Glimpse into the Future
With the solid foundation of AeroGear 1.0.0, we can now look into building features for more advanced web applications. The team is looking into ways to address important topics like data synchronization, offline access, websockets and push notifications, security, and a number of other things.
Check it Out
So go give it a test drive and let us know what you think! You can get the full version of AeroGear.js from our site or from Bower by running `bower install aerogear`. If you prefer a smaller version of AeroGear.js and only need certain features, check out our custom build tool. We also have a working demo showing off all of the features of AeroGear.js on OpenShift. Please report any issues or feature requests you may have in our JIRA instance.
- The Next Page in the Story of AeroGear
As we approach the 1.0.0-M3 release of AeroGear.js (and the 1.0.0-M8 umbrella release of AeroGear), I just wanted to highlight some of the newest editions to the library as well as a new tool to help you get the AeroGear you need for your project.
The biggest update since M2 is the addition of handling paged resources via Pipeline. Now, if the REST endpoint your pipe is interacting with can page the data into smaller chunks and give you information about how to get to the previous and next pages of information, Pipeline can help you easily make those page transitions.
A pipe can be configured to use one of three paging methods. This means that whether the server passes the paging information back to the client via Web Linking headers (default), custom headers or in the response body, Pipeline can handle it. Once you receive a paged response from the server, Pipeline adds a couple of methods (next() and previous()) to the array of data returned. So when you’re ready for more data, it’s as simple as calling .next() and providing callbacks to be run when the next set 0f data is returned.
To get more information about paging with AeroGear.js, specific API documentation and examples check out the following links:
The other big item coming in M3 is a custom download builder. Backed by a node.js app running on OpenShift, you can now build and download a custom version of AeroGear.js from the website. This means you can select only the pieces you need, and our custom grunt build will only combine the dependencies needed for the functionality you want. Though AeroGear.js isn’t a large library now, as it grows this will be a very useful tool to help our users keep their file sizes down. A big shout out to Lucas Holmquist (@sienaluke) for his work on this awesome new tool!
- AeroGear from a Different “Angle”
- My only experience with Angular was playing with it a bit but had not really dove into it nor built anything with it so I wanted to change that.
- I wanted to get an idea of how hard it would be to have AeroGear’s Pipeline and DataManager features supplement a framework like Angular.
I have to say, learning Angular was pretty easy. Having much more experience with Backbone.js, there was a bit of a learning curve as Angular is more “opinionated” about how you structure your app but once you get the hang of it, it’s actually really nice. The other thing that really helped me get off the ground with Angular is Yeoman. For those not aware, “Yeoman is a robust and opinionated set of tools, libraries, and a workflow that can help developers quickly build beautiful, compelling web apps.” (yeoman.io website) Basically, Yeoman does some scaffolding, building and even previewing of your app (among other things) for you so you can concentrate on making your app cool. You should definitely check it out. Also, with the latest release, we have added AeroGear.js to the Bower registry so now Yeoman can keep AeroGear.js up to date in your project and download it for you.
Once I got the basics of the app laid out, it was time to get to the meat of this experiment which was to incorporate AeroGear into the app. Today, we are releasing AeroGear 1.0.0.M7 which includes AeroGear.js 1.0.0.M2. In M2, some things were cleaned up from the previous milestone release, a new sessionStorage/localStorage adapter was added to DataManager as well as some more complex filtering capabilities, and the ability to read data from JSONP endpoints was added to Pipeline. I wanted to make an app that would highlight all of these new features and I settled on a mobile information site for the upcoming DevNexus conference.
AeroGear.Pipeline vs. $http
All of the info about the conference is provided via JSON, and now JSONP thanks to @summerspittman. Normally, with Angular you could use $http directly to access remote resources. What I did was created a Service which contains all of the Pipeline and DataManager instances I would need for the app and I inject that into each controller that needs it. Then, anywhere you would normally use $http, or the $http.get shortcut, to retrieve data, I use the read() method provided by the pipe associated with the data needed at that time. The API’s are actually quite similar but an advantage that AeroGear gives is that I can declare the pipes up front, then using a single Controller I can manage both the speaker and presentation data/views. This is possible because the config for each pipe has already been configured so I don’t need to update the endpoint URL or other parameters on the fly. You could do that with Angular too but to me, this feels cleaner.
The DataManager is where we get some real advantages from AeroGear. The DataManager provides a way to interact with a local copy of your data using a similar API to the Pipeline. So, once we have retrieved the data we want from the server, we can store it in memory, or in the case of this app we use localStorage which is a new feature of DataManager with this release as an extension to the Memory adapter. Now, even when the app is completely reloaded, we can get the performance increase and http request savings of pulling our data from the local store instead of the remote source. In the future, this will also help in our endeavors to provide simple APIs for taking your apps offline as well.
The other feature added to DataManager was an improvement to the filter() method. Now, filtering on data nested deep within objects is possible. In this app, this allows us to filter presentations based on the speaker and provide proper linking between the two.
Here is a list of links to things you can play with now or ways to get more information. Please check this stuff out and specifically for AeroGear, provide feedback by joining our mailing list or chatting with us via IRC in #aerogear on Freenode!
Which reminds me :-)
Our new project site launched a little while back with a new responsive design, docs, and project information! Check it out for all the details on AeroGear, our plans, and libraries!
As the AeroGear team and project have been expanding, so have our mobile efforts at Red Hat and JBoss! My time has been split between many different things across them all.
That is why, I've asked Qmx to take on the project lead role for AeroGear. He's has been with AeroGear since nearly the beginning and brings a wealth of open source, server and client based experience to the team! As is often the case he's already been doing the job for a while now, and doing great at it!
I'm not going anywhere, and will still be deeply involved in the AeroGear project as well as other mobile related efforts at JBoss!
Don't be shy!
And finally, as I've said, this isn't your father's JavaEE project, but Aerogear is certainly open source, and we're always looking for people to get involved, ask questions, or provide input! We'd appreciate your feedback! Stop by our IRC channel #firstname.lastname@example.org, or our community site and mailing list and see what we're up to!
- View more aerogear news