By now, the word "app" has become common parlance in our everyday vernacular. Even Dictionary.com has a definition of the word to mean a "small, specialized program downloaded onto mobile devices." Everyone knows what an app is and almost everyone even has an idea for one.
However, how an app is developed is almost as important as what an app does, and there are various schools of thought on development kits, platforms, and other environments in which to develop an app. App developers need to answer several questions to help them map out a process. Should you make an app just for iOS or should it be cross-platform compatible? Which development kit should you use to make the app?
To find these answers, developers must first understand the nature of their app and then choose from one of the following methods, each having their own strengths and weaknesses.
1. Method 1 – Make a Native App
Building a native app means developing separately for each mobile device (Android, BlackBerry, iPhone). The advantage of designing an app entirely from the ground up for a native platform is that you can optimize the look and feel of each specific app for each device, pushing each device's hardware to the limit. The obvious drawback is that code must be developed for each platform independently and you'll be required to program the same app in multiple languages. This method costs the most and has the longest development time, but you have complete control over the user interface for each mobile device.
2. Method 2 – Make App with .NET Framework – Mono
Cross Platform – Mono
Developers familiar with Microsoft's .NET Framework do not need to switch to Objective-C in order to develop for iOS, Java / J2ME for android and other mobile device platforms. Instead, they can use the free and open source project, Mono, which can be run on Android, iOS, and many other operating systems. Mono users can develop using Visual Studio instead of Xcode and can use a PC instead of a Mac to develop for Apple's products. The ability to develop using a preferred language lowers the skill requirements and infrastructure overheads for developing for iOS and Android. The drawback is that since each mobile device uses different hardware and operating systems, the app might not be user-friendly and optimized for each native platform. However, the UI layer code can be built for each app device; and the business and data layers can remain consistent if you use right architecture.
3. Method 3 – Make a Cross-Platform App with a Development Platform
Now, if you do choose to go cross-platform and need a development environment that works for more operating systems than iOS or Android, then you need a cross-platform method with more options. There are three other major development platforms: PhoneGap, Titanium, and Rhomobile. The advantage of this method is that it is cost effective and requires little maintenance because a single code base is used. The disadvantage is that it is not very user-friendly and custom plugins are required to do device-specific coding.
4. Method 4 – Make a HTML5 Mobile Site
5. Method 5 – Make a Mobile Friendly Site
The mobile-friendly option simply means designing a simple site that just has the look and feel of a mobile app even though it is only a normal website. The site cannot call mobile specific SDK functions or be tailored for each native device. Out of all the solutions listed thus far, this is the one with the least amount of cost and development time. However, the solution will not have a lot of the user interface abilities and will probably lack the look and feel of a mobile app.
So how do you decide which of these three methods to use? As a general rule of thumb, it depends on whether you favor less cost and time or better UI. As the solutions move down this list and become more universal, the cost and development time decreases; and yet these universal solutions do not adhere as well to mobile-specific functions. Solutions near the top of the list take much longer but give the developer more power in designing features that take advantage of mobile specific functions.
In a nutshell, use HTML5 if the app is simple and does not require interaction with mobile SDK specific features. Apps developed in HTML5 should just be browser apps that are mobile-friendly. But use a cross-platform development environment when you have more complex programs that need a faster development time. For even more complex apps that make use of the very specific features of mobile devices, you should develop natively for each device.
Hopefully, this information will allow developers to make better decisions when planning app development. There will likely be an ongoing debate over which is best as these development environments change and even new ones emerge.