How to Create an App

There are several ways to create a mobile application. You want to know what the best way is? It depends. What technologies do you have experience with? What platforms are you targeting? How much time do you want to spend building your application?

The mobile space went through a revolution after the introduction of the iPhone in 2007. In 2008, Apple introduced the native SDK (Software Development Kit), which only added more fuel to this revolution. Fast-forward to today, there are millions of mobile applications, dozens of platforms, and countless frameworks, platforms, and tools to create mobile applications.

How do you decide what is right for you? Answering that question is the focus of this article. I discuss the types of mobile applications you find in the wild, the advantages of native and hybrid applications, and I list some of the more popular platforms.

Application Types

Mobile applications can be broken down into three broad categories:

  • web applications
  • hybrid applications
  • native applications

Each of these types has its pros and cons. If you were to ask me which type best fits your needs then my answer would be "It depends." To justify my answer, I first need to tell you about each application type. Let's start with web applications.

Web Applications

You may already be familiar with web applications. A web application is nothing more than a website, acting and behaving as an application. Before the introduction of the iOS SDK in 2008, web applications were the only option for developers wanting to create applications for the original iPhone.

Web applications have a number of distinct advantages, the most important one being development time. Because a web application is a website, it is built once and accessible on every platform that runs a web browser. For some companies, this is a very appealing solution since native development, which we discuss in a moment, can be costly and time consuming. You could say that web applications are by definition cross-platform.

Another important advantage is the learning curve for developing web applications. To develop a web application, you rely on web technologies that you may already have experience with, such as HTML, CSS, and JavaScript. If you do, then you will be up and running in no time.

Great. No downsides? There are a few downsides. The two most important drawbacks are performance and access to device capabilities. If you are planning to develop a game, then a web application isn't your best option. It is possible, but performance won't be stellar. Websites, and web applications, have limited access to the capabilities of the device, such as the camera, location services, etc. This has significantly improved over the years, but it isn't up to par with native applications.

If you want to limit the development and maintenance costs of your mobile application and performance isn't the most important aspect, then a web application is certainly worth considering.

If you want to understand what web applications are about and how to get started, then this tutorial is a good place to start with, for example, Laravel:

Hybrid Applications

Hybrid applications were and still are incredibly popular. They combine some of the best things of both worlds, that is, web and native. The technologies used to create hybrid applications are identical to the ones used to create web applications, HTML, CSS, and JavaScript. The reason is obvious if you understand how hybrid applications work.

A hybrid application is a web application that runs in a web view of a native application. Put differently, a hybrid application uses a native application as its container to make it look as a native application. This means that, to the user, a hybrid application looks and feels native ... more or less. The user can download it from the platform's mobile store and the application icon appears on their home screen.

Any downsides? Because hybrid applications rely on web technologies and run in a web view, hybrid applications suffer from most of the same problems web applications do. Performance is not up to par with native applications. This is improving, though, every year performance gets better and better. It is impressive how JavaScript performance has improved during the past decade.

The most popular solution for developing hybrid applications is Apache Cordova, Cordova for short. When Adobe acquired PhoneGap a few years ago, they open sourced most of the code base and Cordova was born. PhoneGap still exists and is Cordova's commercial cousin.

To speed up development, developers often use Cordova in combination with other frameworks, such as Ionic and Onsen UI.

To learn more about hybrid applications, I recommend checking out some of the tutorials we have published on Cordova:

Native Applications

Choosing for native development is choosing for performance and reliability. Why does native development scare off so many developers? Let's take the iOS platform as an example. If you want to build a native iOS application, you need to learn a new language, Objective-C or Swift. You also need to become familiar with Xcode, Apple's IDE (Integrated Development Environment). A native application generally takes longer to build simply because you are working closer to the metal so to speak. Objective-C and JavaScript are two very different languages.

What do you get in return? Performance is probably the most compelling advantage of native applications. Native applications feel snappy and, especially for games, they can take full advantage of the resources of the device and operating system. Every feature and capability of the device that is exposed through the SDK's APIs is accessible to the developer. This is another key advantage native has over hybrid and web.

There are a number of hybrid approaches that make native application development accessible to more developers. The solution is simple, write code in the language of your choice and compile it to a native application. The most popular solutions at the time of writing are Xamarin and React Native.

Xamarin lets developers write native applications for iOS, Android, and Windows Phone using C#. The Xamarin tools leverage the Mono open source project. React Native has its roots at Facebook and enables developers to write native applications using JavaScript.

Envato Tuts+ covers a broad range of platforms, including iOS, Android, Xamarin, and React Native. Take a look at these tutorials to become familiar with them:

Native or Hybrid

What is the best solution? Native? Or hybrid? Or a web application? There is no one answer. It depends on several factors. If you are a developer, then the answer is less complicated. What technologies are you already familiar with? Do you want to focus on one platform or create applications for multiple platforms?

It is becoming a true challenge to stay on top of iOS, Android, and Windows Phone. Some developers write native applications for multiple platforms, but it is challenging and I don't recommend it. The mobile space evolves at a rapid pace and it is almost impossible to know every platform inside out. If you choose for native development, then that should be your goal, become very, very familiar with the platform you're targeting. That should be your  goal as a native developer.

This is one of the reasons many developers choose a hybrid solution. If you are a seasoned web developer, then you will be up and running in no time. Apache Cordova, in combination with Ionic or Onsen UI, can speed up development significantly.

Web applications are certainly something to keep in mind. They are a different category, though. By creating a web application, you have no intention of having an application in any of the mobile stores. Many companies chose this path several years ago. Nowadays, if the budget and resources are available, native and hybrid approaches are more popular.

Questions to Answer

I'd like to end this article by asking you some questions to help you decide what approach may work best for you.

Is performance critical?

Native is your best option. You may also want to look into Unity if you plan to develop a game.

Is cross-platform support important?

No? Then you should consider the native route. If cross-platform support is vital, then a hybrid native or hybrid web approach is your best bet. Take a look at Xamarin or React Native if performance and device capabilities are equally important.

Is this your next big thing?

If your goal is to become a mobile developer, then my suggestion would be to choose a native approach. This is very personal, though. I am an iOS developer and I wouldn't want it any other way. By focusing on one platform (iOS, tvOS, watchOS, and OS X), I have the time to become very familiar with the platform. This is an important aspect of mobile development if you want to create compelling applications and a great user experience.

If you have a background in web development, then native is still an option. However, if you want to get something out the door quickly, then hybrid or web is the fastest solution.

Conclusion

If you were expecting a clear-cut answer, then I may have disappointed you. If you haven't made up your mind yet, then I suggest to give some of the options I listed a try. Play around with Cordova or take a quick course about Swift and see how you like it. Don't take the easiest or quickest path to your goal. Make sure you also enjoy the journey because that's where the fun is.

If you already know what approach is the best for you, then you may want to speed up the development of your next application with some of these iOS and Android templates. Check them out on Envato Market:

Tags:

Comments

Related Articles