Friday 1 August 2014

Oh 'Appy Day!

Apologies for the terrible pun. It's probably a good thing I didn't become a serious journalist.

I wanted to write a post about mobile development for several reasons - I got very confused by this initially and I'm probably still pretty confused (if anybody wants to correct the technical info in this post please do!), but I had a wonderful conversation with a CTO yesterday and thought it was worth pondering with my new found revelations!

Essentially there are three main ways to develop mobile applications, Native, HTML(5) or Hybrid, which sort of straddles both.

HTML(5) Applications are quick and easy to create because they are written as normal web app. They will be available over multiple devices, but will probably have performance issues as available only via the web browser.

So you can wrap them, to create a Hybrid Application, using a wrapper like PhoneGap/Cordova (probably best known) to embed it into a native app. Worth thinking about how you want to market your app, because apparently (I was told during my degree never to reference Wikipedia...) the wrapper sometimes doesn't make the performance sufficient for it to be 'native' enough for the Apple store.

Native Applications run faster than web (HTML) apps because they use a specific language for a specific platform (so Java, C, C#). No translating or compiling has to be done to make this happen. The disadvantage is you have to build separately for iOS and android if marketing your product to both platforms, but result will be fast and more responsive.

Useful chart

If you're interested in reading in more detail than this snapshot, then this is a great article! 'Appy Developing Folks!

2 comments:

  1. One thing to bear in mind is that web apps aren't always really slow. When Mozilla used ASM.js to port the Unreal Engine over to JS they were getting almost native speeds, which is pretty impressive for 3D graphics. This was using webGL, but then those APIs are available on most mobile platforms.

    Personally I think the main problem with web at the moment is that we provide the stylesheets and poly-fills etc for all of the possible layouts/platforms, along with poorly sized and optimized images. Code and content bloat really does affect us more than any other platform. Give it a few years until the APIs for detecting connection speeds and hardware and such are available and we might be able to tailor what we delivery to each platform, and then provide enhancements if/when those statistics change. Another approach might be to deliver "core" features, just enough for it to work/look OK, with the initial load and then add the "enhancements" asynchronously.

    A nice "little" project might be to create a UI framework with webGL or 2d canvas for displaying the app, and have that manipulating/triggering HTML forms hidden off screen. Then you'd get GPU accelerated animations and rendering. Granted older browsers would require a fall-back... but they could get the basic app.

    Something I have noticed on a fair few sites is that they use longish tweening times on their animations, which makes it feel like the site is less responsive, or that the browser is struggling to keep up. Keeping animations in the 200-300 ms range seems best.

    ReplyDelete
  2. Hello Charlotte,

    I understand what you had in mind by separating Native/Hybrid with HTML5, but if you have a chance of looking into Firefox OS, all the applications are HTML5, and bonus points that you can access the camera and contacts. Although being realistic you can access the camera with HTML5, think about Google Hangouts for instance in your browser. Although yes you can refute that the Google Hangouts for iOS is a native application (which performs and works better in my opinion). Also if more people used the local storage provided by HTML5 you could have an offline web app.

    All the best,
    David Silva

    ReplyDelete