I’m getting into development for mobile devices specifically iOS and Android devices. The first thing a developer needs to ask themselves when going down this road is: What language am I going to use? From the time that the iPhone came out up until recently (Fall 2010) the answer was easy. If you wanted to give your users the best experience, you went native. Whether it be iOS or Android: Native was the only way to develop a decent app.
However 3 recent developments have changed the game: 1) HTML5, 2) The introduction of version 1.0 of the Sencha Touch framework, and 3) Major performance increases in WebKit and Google V8 based browsers. When you combine these technology introductions/improvements with the improvement in wrapper technologies like PhoneGap and Titanium from Appcelerator and we now have real alternatives when it comes to developing applications for Mobile devices. Even venerated application design shops like 37Signals have switched over to Web-based applications for mobile.
The benefits are obvious and many others have written very nice articles explaining the differences and pros/cons (One of my favs). However here is my two cents (after all, that’s why you’re here). Write Once/Deploy Anywhere is great and no app stores is great but to me the primary benefit is Fun! I’m a Java programmer in my day job, and it’s a great language for paying the bills. But it is not a fun language for coding.
Full disclosure: My Android programming experience amounts to coding along with some tutorials… And it sucked! Writing XML is horrible and coding esoteric handlers in Java with inner classes to handle behavior and UI rendering is non-intuitive at its best and absolutely confusing and non-understandable at its worst. After one day I was so sick of writing android:blah blah blah. I’ve coded Windows Mobile apps in C# with the same feelings. It is not fun at all. These languages are great as powerhouse engines in IT back rooms but they are not great for Consumer facing UI design.
Contrast that with the Sencha Touch framework where within a couple hundreds lines of code you can have a beautiful UI complete WITH connectivity to a Web-based data store that runs on iOS and Android and there’s no comparison. Now that the supporting technologies (HTML5 and WebKit) are catching up it’s wonderful to have real alternatives.
In my next post I’ll walk through a Sencha Touch application with a Ruby on Rails backend. It is a simple contacts application that stores data locally and syncronizes to a Rails Web Store. Check back soon…
Thanks for reading
One thought on “Mobile Apps: Native v Web-based”
We were developing a JavaFX based app until we discovered all that has been going on with HTHL5! Now we are looking at a hybrid solution and deciding what features move into the HTML5 side and what should stay native.
We have come to the realization that iPad, Android and JavaFX all have webview related components based on Webkit. With your background in Java and interest in hybrid solutions we would be interested in learning more about your expertise in making this unprecedented quantum leap forward to truly cross platform development and getting our solution on track in this new exciting paradigm.