There is undoubtedly no profession that changes faster than ours. New tools and frameworks seem to emerge every day, and it can be easy to get lost in the sea of ingenuity. It's wonderful that the boundaries are constantly being moved, but that requires us as developers to be experts at hitting a moving target.
Icenium is a new tool in the aforementioned sea, so lets get down to brass tacks. Let's ditch the hype and the marketing speak for a bit and take a look at what Icenium really is.
Any new tool created is designed to solve a problem, or a specific set of problems. Icenium exists as an end-to-end solution for creating hybrid mobile applications using Cordova. Cordova is the foundation on which PhoneGap is built. If this is confusing for you, make sure to read Jim's post on "Demystifying Cordova and PhoneGap".
But why do you even need Icenium? What problem needs to be solved? Let me put it this way: Have you ever felt like this?
You have a remote for the TV, a remote for the DVD Player, a remote for the surround sound, a remote for the Bluray, and remote for the Playstation and if you are like Jim Cowart, you still have a VCR so you have a remote for that too. All of these devices are made by different vendors and while they all work well together, it ends up being a complicated, convoluted and downright maddening process just to be able to do the single solitary thing that you have all this stuff for - watching some TV.
Building a hybrid application can give you some serious remote control deja vu.
It usually involves creating a PhoneGap application, opening a web IDE, testing in the browser, opening in the native IDE to get to the simulator, running in a device simulator, finding some obscure setting in your project configuration that is causing the whole thing to fail and then the process repeats itself and you find yourself on the outskirts of crazytown.
Simply put, Icenium is a development platform that integrates all of the disparate libraries and fragmented processes so that you can concentrate on building your application. It exists to make it easy for you to build hybrid mobile applications with Cordova, and get them into the app stores.
Icenium is one environment, but has several main areas of functionality:
If you are going to be writing any piece of software at all, you are going to be needing an editor. You probably already have your favorite editor, be it Visual Studio, Sublime Text 2 or even VIM if you consider yourself hardcore.
Your entrance point into Icenium is it's IDE. Icenium actually provides 2 IDE's for you to choose from:
Mist is a lightweight IDE that runs in all modern browsers and contains many of the popular features that you would expect from a desktop IDE including code completion, auto-indentation, syntax highlighting and more.
The project drawer is on the right and the editor is on the left. Double-click a file to open it and start coding. Ctrl/Cmd + S to save. Simple.
Graphite is a native Windows application that you install and run on your desktop. Being a native application, it provides some IDE features that the web version does not, including code navigation, refactoring and LiveSync which is something we'll discuss in a minute. Resist the urge to skip ahead!
It also features a wizard that lets you take your application directly from the IDE to the iOS or Play stores. Click the publish button, provide a few settings and Icenium will handle the rest. Simple.
Once you have opened the IDE of your choice, the very next thing you need to do is select which kind of project you want to build. You have 3 options as of the time of this writing:
Both the web and desktop versions of Icenium feature a simulator where you can run your application to see how it looks. The simulator will automatically reload every time you save so you don't have to constantly do it yourself.
The simluators feature different skins for iOS and Android, as well as the ability to simulate versions of the Operating System. They also allow you to view the application in portrait or landscape mode and provide some simulation of native features like Geolocation.
To launch the simlulator, you just select from either the Mist or Graphite IDE's which platform you want to run your app on and it launches. Your app, on a device, while you build it. Simple.
One of the most frustrating things about mobile development is the debugging story. It can seem nearly impossibly at times as you can't see your app as it will appear on the phone, and you can't debug it in that context.
Icenium will take care of packaging your application for you for both iOS and Android platforms. Don't have a Mac but want to write iOS apps? No problem. Just put your profile information into the Graphite client configuration and you can deploy to your iPhone from Windows. Really!
In this case of iOS, you may not have a developer account or a provisioning profile. In that case, we STILL have you covered. You can get the ION runtime application from the app store. All you need to do then is to select "Publish" from the menu and and choose Icenium Ion.
This gives you a QR code you can scan with your phone (provide you have installed ION already), and ION will launch with some instructions on how to use it.
Once you dimiss those instructions after reading them of course, your application comes up.
This allows you to run your application on iOS without ever having to get a developer account. It's absolutely perfect for testing and prototyping.
You can also deploy the application directly to your device. On Android it's as easy as allowing unknown sources. On iOS, it's a bit trickier as it involves provisioning profiles and certificates. It's not bad though and once you set it up, you don't have to touch it again.
Additionally, the Graphite IDE features LiveSync where you can run the application on your device and every time you save in the IDE, the application on your device updates. Your application, on your phone, as you build it. Simple.
I've broken Icenium down into it's main building blocks, but it knows all sorts of other tricks to cover that last 20% of your application that always seems so hard to complete.
Icenium integrates with our own backing Git store, or any GitHub repository that you specify. This makes collaboration on team projects simple. It also allows you to pull the code out of Icenium if you need to, giving you even more freedom.
Icenium has built-in support for Cordova plugins. Currently it supports ChildBrowser, SQLite, Barcode Scanner and Push Plugins. More are being added all the time, so chances are by the time you read this, we've already added more.
In the Graphite client, right-click the project and go to properties. Then you have access to the plugins page. Select the plugins that you want and start using them. Simple.
Hybrid mobile applications are a productivity multiplier because they allow you to re-use your existing web development skills to build mobile applications. Unfortunately, the fragmentation of the toolset across PhoneGap, Android, iOS and different IDE's and Operating Systems sucks that gained productivity right back out again.
Icenium is here to give it back to you. Get started with Icenium today. You concentrate on building the app, and we will jump through all the hoops for you to get you to where you need to ultimately be as quickly as possible, and that's the app store. See you there.
About the Author Burke Holland is a web developer living in Nashville, TN. He enjoys working with and meeting developers who are building mobile apps with jQuery / HTML5 and loves to hack on social API's. Burke works for Telerik as a Developer Evangelist focusing on Kendo UI. Burke is @burkeholland on Twitter.