A RoadMap to Application Development

Written by abelkuruvilla | Published 2017/11/09
Tech Story Tags: mobile-app-development | tutorial | developer | programming | mobile

TLDRvia the TL;DR App

Hey all… This article is the second phase to my previous article “A RoadMap to become a Web Developer”. There, we discussed the three paths a developer could take, to be an expert web developer. I hope it was educative for some of you.

This time we will be focusing on mobile application development. This area of development has grown as the number of mobile users rise exponentially each year. Many applications have been developed to aid the user in different tasks.

Even applications like Whatsapp, Facebook and Gmail have become an integral part of our life even without us realizing it.

Well, enough chitchat. Let’s get on …

The 3 Paths for You to choose

The pathways for a developer

The first question you have to ask yourself is, “Why am I developing this application ? What are its use-cases?”.

If you are focusing on building the application for the users of a single platform, then the most efficient way would be to develop using the technologies native to that platform (which we will discuss later).

Applications requiring much hardware access would have to built individually for each platform. For example, if you are trying to build an application to manage the RAM utilization of the device, then you will have to develop for each platform independently. You won’t be able to develop this application using cross-platform development tools.

But if your mobile application is to act as an interface for users for non-hardware dependent tasks, then you can use the cross-platform development tools for efficiency.This will highly reduce your total development time in creating applications for each platform.

There are two types of tools for developing cross-platform applications : Hybrid Applications and Native Applications. We will be discussing this later.

Single Platform Development

Here we would talk about developing applications for each mobile operating systems individually using their own native tools.

Inarguably, the major leading operating systems for mobile devices are: Android, iOS and Windows Phone.

There are other Operating Systems like FireFox Mobile and Ubuntu Mobile OS, but none of them has picked up fame as the former three giants.

According to IDC in 2017, almost 83.4% mobile users are Android, 15.4% are iOS and 0.8% are Windows.

Therefore Android users dominate the market share and thus most developers focus their technology for this platform. Android OS, being an open source OS by Google add as a great factor for the development in this platform. However ,iOS OS by Apple is widely renowned for its stability and well functional hardware (not to mention their skyrocketing price ).

Android

As I already stated Android has the largest installed base of any mobile operating system, and thus the number of applications developed for Android exceeds the rest. An Android OS uses a Linux kernel with some higher-level APIs, which are written in C.

However, the most native applications developed in Android are programed in Java, and run on top of a Dalvik virtual machine, using a just-in-time compilation and ahead-of-time compilation to translate the Java bytecode into Dalvik dex-code. Most developers use Android Studio IDE by Google to develop their application. However, you can also use Eclipse IDE for the same using Android SDK.

However since early 2017, there is an early rising trend in the use of Kotlin for programing Android applications. For those who do not know what Kotlin is, it is a statically-typed programing language that runs on JVM(Java Virtual Machine). Even Google is urging developers to change their development to use Kotlin instead of Java.

My personal recommendation: Learn Kotlin if you want to keep up with the rising trend, or use Java if you are looking for strong tutorials.

Check here for an awesome list of links for android

iOS Mobile

Apple’s iOS is the 2nd largest mobile OS that is widely used. Needless to say being an Apple product, the OS is not open-sourced. However, application development is done using the iOS SDK (Software Development Kit) that Apple provides.

You can use either Swift or Objective-C language to program a native iOS application on XCODE IDE

Swift is a programing language developed by Apple exclusively for application development itself.

A major restriction to develop an iOS application is that you will need an Apple Mac device to compile the application.

Check here for an awesome list of links to iOS tutorials

Windows Phone

Windows phone is the 3rd largest mobile OS to be widely used. However, Microsoft recently stated that they are no longer going develop on Windows Phone (Check here). They changed their strategy from simple mobile phones to handheld Surface Tablets which are somehow gaining popularity.

The latest Windows 10 has a feature known as Universal Windows Platform(UWP), which defines a single base platform for all the devices supporting the OS. Thus we can develop applications that work simultaneously on PC, tablet, phone and Xbox.

Windows provides Windows SDK to develop windows application. We use XAML to design the application and program it using C# language in Visual Studio IDE.

Cross-Platform Development

If you are planning to develop a single mobile application across two or more platforms, then cross-platform development tools will certainly help you.

The two types of cross-platform development techniques are: Hybrid Applications and Native Applications

All the tools that we are going to discuss now would require specific SDKs for the platform that the application has to be compiled.

Compiling an application to iOS would strictly require a Macbook device.

Hybrid application development tools were actually created to help existing web developers to easily develop and deploy applications to the mobile platforms. Hybrid application development is actually developing an HTML5 app for mobile platform.

Hybrid applications are programed using HTML5, CSS and Javascript and deployed using some wrapper around it for each mobile OS.

Hybrid applications are of great use for companies and startups, who have a web application and want to deploy native mobile applications for the same. These applications cannot access much hardware features of the device but can act as an easy user interface. Most hybrid application development tools just impose some wrapper around the HTML5 application that the developer builds and deploy it to mobile platforms.

An example of a Hybrid application that you can easily find is the Amazon’s mobile application. The application in your phone is just a wrapper around the HTML5 app behind it.

Let us discuss some of the tools and frameworks used to develop Hybrid applications

Apache Cordova

It is a free and Open source platform to build applications for multiple mobile platforms with a single codebase

You can build an application using HTML, CSS and Javascript and then deploy it to Android, iOS, Windows, FirefoxOS and much more. It is surely the topmost choice for developers if you wish to build a hybrid application. There are also many plugins and extensions available that will help you access certain hardware features like Camera, Sound, etc. to a certain level. Adobe has forked this project to its own version, called as PhoneGap.

Framework7

Framework7 — is a free and open source mobile HTML framework to develop hybrid mobile apps or web apps with iOS & Android native look and feel. It is also an indispensable prototyping apps tool to show working app prototype as soon as possible in case you need to.

Framework7 is actually a framework to build a Hybrid application on top of Cordova. But it is actually iOS specific. It was initially created for iOS platforms, and thus is more flavoured towards it

Ionic Framework

Ionic Framework is a free and open source software development kit (SDK) for hybrid mobile app development. It is developed on top of Angular.js and Apache Cordova, and provides developers with state-of-art tools and services for developing apps using various web languages like HTML5, CSS and Sass.

There are many extensions available which will help you avail Bluetooth, Camera, etc.

jQuery Mobile

jQuery Mobile is a robust framework to develop cross-platform mobile apps. It supports a wide range of platforms for app development like desktops, smartphones, tablets and ebook reading devices like Kindle

jQuery is a module based framework , which allows you to create as many custom builds as you need

Onsen UI

Onsen UI is another framework which lets you build Hybrid mobile applications using popular javascript frameworks like Angular.js , React.js and Vue.js .

Native Application

We have already seen what a Hybrid application is: “a web app with a covered layer over it”. However there is another method to create cross platform application.

Native application compilation tools help you program your application in one specific language, and then provides tools for you to compile the application too native components for each platform.

Applications built using these tools are found to be much hardware efficient than hybrid applications since it uses native components itself. Hybrid applications may sometimes produce unpleasant bugs, and cannot access hardware features with much efficiency.

Let us discuss some of the major tools and libraries in this field:

React Native

React-Native is one of the most famous cross-platform application development framework created by Facebook.

React Native lets you build mobile apps using only JavaScript. It uses the same design as React, letting you compose a rich mobile UI from declarative components.

With React Native, you don’t build a “mobile web app”, an “HTML5 app”, or a “hybrid app”. You build a real mobile app that’s indistinguishable from an app built using Objective-C or Java. React Native uses the same fundamental UI building blocks as regular iOS and Android apps. You just put those building blocks together using JavaScript and React.

If you look at applications build using React-Native , you could see its potential. Some of them are Facebook App, Instagram, Airbnb, Flipkart App, and thus the list goes on. It is by far one of the most famous framework and the demand for developers are high in this area too.

Xamarin

Xamarin lets you build native mobile applications for Android, iOS and Windows using a single codebase.

Xamarin lets you build native apps for multiple platforms on a shared C# codebase. Use the same IDE, language, and APIs everywhere.

Xamarin along with its SDK provides you its own test clouds and education sources for you to learn. Recently, Xamarin was bought by Microsoft. Xamarin is an apt choice for developers who like to program their application using C# as their base.

Some famous examples of applications made using Xamarin are Pinterest App, Slack App, Cognizent App, Bosch App, etc.

NativeScript

NativeScript is another open source platform which lets you compile native mobile applications built using Javascript. According to their official website,

“NativeScript is how you build cross-platform, native iOS and Android apps without web views. Use Angular, TypeScript, or modern JavaScript to get truly native UI and performance while sharing skills and code with the web. Get 100% access to native APIs via JavaScript and reuse of packages from NPM, CocoaPods, and Gradle. Open source and backed by Progress.”

I know its a much to digest, but modestly it is another tool you can try. It just recently got famous around the net, but not as popular as the former two. It is preferred for developers who are familiar with Angular.js

Special Consideration — for Game Developers

All this time, I’ve been talking about application development as in general. If you are a game developer and would like to create games for mobile platforms, then these tools may not provide the best solution for you.

I have 2 recommendations for you :

Unity Game Engine:

Unity3D is one of the most famous Game Engine available. If you are a game developer, surely you know the stuff, or if you are new to this, them I’m sure this will be the first name you are going to here.

Unity helps you design, build and deploy highly interactive games to multiple platforms with single codebase. You can program the game logic using Javascript, C# or Go lang.

Once you develop the game, it provides you the option to export the game to any platform you specify. It can be Android, iOS, Windows phone, FirefoxOS, etc. It even deploys the same game to Windows PC or Linux. You can also build Augmented Reality and Virtual Reality applications using it. There are many plugins and extensions available for Unity that can help you in developing your game.

If you look at the list of games created using Unity you’ll be amazed. I’m going to save that suspense for you ..

Unreal Engine

Unreal Engine is another famous game engine which provides you with best features. According to their website,

Unreal engine is a complete suite of creation tools designed to meet ambitious artistic visions while being flexible enough to ensure success for teams of all sizes.

It is a complete C++ engine which lets you develop and deploy games to any platform that you desire. You can now watch out for games you have played developed using this engine

Time to Wrap Up…

That’s it folks ... It took days of research and effort to complete this.I hope you found this informative.I have personal experience working with some of the tools above such as ReactNative, Android Java and Cordova. The rest are based on research and information from other developers.

If you have any queries, please contact me on Facebook, Linkedin or Twitter


Published by HackerNoon on 2017/11/09