Mobile app development – The Ionic way

Callum FloumeWebLeave a Comment

Objectives of this post

  • Explain the existing method of creating applications and the advantages and disadvantages;
  • Describe my experience with a different way of approaching the task;
  • Share my ideas on some use cases;
  • Get feedback on my research and ideas.

“Traditional” method of app development

This is the method used by most developers when it comes to developing an app. The steps are as follows:

  1. Obtain the necessary hardware for development e.g a Mac for iPhone development;
  2. Detail all of the app’s requirements and designs;
  3. Research how you would implement these features on all of your desired platforms;
  4. Write native code to build your app on each platform;
  5. Test using separate platform tools;
  6. Deploy in the relevant app stores.

Advantages of the ‘traditional’ way

Here are the advantages of the traditional method:

  1. Better debugging facilities for platform specific problems;
  2. Complete access to all of the platform’s native features;
  3. Faster execution of code giving a better performing app;
  4. Graphical freedom.

Disadvantages of the ‘traditional’ way

After a quick review of the advantages we can see that there is a lot of freedom to do whatever you want with each platform. However this freedom comes at a price:

  1. Code has to be written specifically for each platform;
  2. You have to know the language for each platform;
  3. Multiple code bases to support once the app has gone live;
  4. Testing can become tedious with all of the different development tools.

Summary of the ‘traditional’ way

The traditional method has worked for a long time and there is no app that you can’t build using this approach. However, the disadvantages have huge implications on small teams meaning that large amounts of time are needed to research each platform and write the separate code bases.

Ultimately time=money and by requiring more time than necessary we could be in an unprofitable situation. This makes projects unachievable and reduces the chances of a company being able to offer competitive quotes.

So there are two options from this point:

  1. Ignore app development;
  2. Find a way that utilises existing skills and combats the disadvantages of “traditional” app development.

Finding another option

Having recently wanted to build a small mobile application myself out of interest I started researching cross-platform tools that allow a single code base for multiple platform deployments. Looking back at the disadvantages for the “traditional” way we can see that they all relate one way or another to having to develop and support separate code bases for separate platforms. Therefore a cross-platform tool would almost nullify all of the disadvantages.

There are plenty of environments that allow cross platform development, however most of them require a knowledge of C or C++. I needed something that used a language I was more familiar with.

In comes Ionic

I remembered seeing something on Github about a new cross-platform development tool created by the people at Apache. This tool was called “Cordova”. A bit of googling lead to me finding a more up-to-date tool based on Cordova called “Ionic”.

A brief explanation of how Ionic works:

Ionic uses a native application with a chromium based web engine embedded to allow you to write applications just as you would webpages. However it offers more than just web views it allows access to native phone functions using Javascript!

This met all of my requirements:

  • Cross platform development abilities;
  • Didn’t require locking myself in my darkened bedroom every night to learn C.

Development steps revisited

Below I have revised the development steps for developing an app with the Ionic framework as opposed to the traditional coding method:

  • Obtain the necessary hardware for development e.g a Mac for iPhone development;
  • Detail all of the app’s requirements and designs;
  • Research how you would implement these features on all of your desired platforms;
  • Write native code to build your app on each platform;
  • Test using separate platform tools;
  • Deploy in the relevant app stores.

Advantages

So the advantages of developing an app using Ionic are:

  1. A single code base and language for all of the platforms;
  2. Centralised testing;
  3. Easier to separate styling and core mechanics;
  4. No special hardware needed for development.

Disadvantages

Like every approach there are disadvantages to using Ionic, the disadvantages mainly highlight the advantages of using a native language approach:

  1. Debugging can be slightly tricky if you have a bespoke problem with a platform;
  2. Code will run slower;
  3. Not all of the platform’s functionality can be accessed through Javascript;
  4. Sometimes you may be slightly limited in what you can do graphically.

A summary of the Ionic way

Overall the huge advantage that an approach using something like the Ionic framework would give us is time. Less time needed to research and develop individual platforms shaves off a huge amount of resources needed.

This would mean more projects would be financially achievable and an increased profit margin at the end.

APL Mobile

After learning how to use Ionic and trying a few of the samples I decided to give making my own application a try.

I used a Javascript library created by Nick from Dyalog which implements an APL interpreter and embedded it in my app with a couple of controls. And the result of a couple of hours of research and coding: APL Mobile.

In Summary

The aim of my talk was to introduce a new way of thinking of app development and hopefully making it less daunting to think about offering or accepting an offer should an opportunity present itself.

I would like to do a bit more research into the area of Javascript cross-platform development tools as there are a lot of options available and it is not just mobile applications that are supported but desktop applications for Windows, Linux, etc. as well.

Further Reading

Leave a Reply

Your email address will not be published. Required fields are marked *