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 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 ).
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
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 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.
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 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
It is a free and Open source platform to build applications for multiple mobile platforms with a single codebase
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 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 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
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 is one of the most famous cross-platform application development framework created by Facebook.
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 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.
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.
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 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.