There are several ways to create a mobile application. Do 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?
After the introduction of the iPhone and it's software development kit, the mobile space went through a revolution. Today, there are millions of mobile applications, countless platforms, and dozens of frameworks 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 that it really depends on exactly what you're trying to do. In order 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. Unlike other apps, a web application isn't something you can download from somewhere, it's simply available on any device which can load web pages (or has a web browser). A web application is nothing more than a website, acting and behaving as an application. Before the introduction of the iOS SDK, for example, 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 without the use of any proprietary SDKs.
Are there any downsides?
As with any types of applications, there are a few downsides of web development. 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, check out some of our other content here on Envato Tuts+:
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 like 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:
-
iOSiOS From Scratch With Swift: Understanding the iOS Ecosystem
-
AndroidAndroid From Scratch: An Overview of Android Application Development
-
React NativeGet Started With React Native
-
React NativeCreating a Dictionary App Using React Native for Android
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 if you can do it, I definitely recommend it. The mobile space evolves at a rapid pace, and if you choose native development, then that should be your goal, to become very, very familiar with the platform you're targeting.
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.
Ask Yourself
To decide what approach you'd like to take in developing your mobile application, ask yourself these questions. As I mentioned earlier, choosing the type of
Is performance critical?
If so, native is your best option. You may also want to look into Unreal Engine if you plan to develop a game. As opposed to Unity, they only charge you 5% of the revenue you make instead of a monthly fee.
When we discussed native applications, we saw that they're able to utilize the device capabilities, and a good example of this is how Apple takes graphics performance to the next level using Metal by giving developers almost full access to the GPU on the device.
If you aren't familiar with Metal, here's what Apple has to say about it:
Metal 2 provides near-direct access to the graphics processing unit (GPU), enabling you to maximize the graphics and compute potential of your apps on iOS, macOS, and tvOS.
Now, if performance doesn't matter, you're free to choose cross-platform or hybrid apps, whichever suit your needs better based on the following few questions. Anyway, though, if you have the resources to build native apps, that's always the best option overall.
Is cross-platform support important?
If not, you should consider the native route. Native apps, as mentioned above, are definitely the best way to go for a solid user experience and best performance possible.
If cross-platform support is vital, and you cannot get native apps for all your platforms, 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. My personal favorite, though, is Ionic because it gives a good deal of on-device functionalities while still having a wide enough umbrella to cover most development
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 like it this way; I think Apple is disrupting the mobile development field, and it gives you a lot of tools as a developer. By focusing on one platform, in my case, iOS, tvOS, watchOS, and macOS, 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 a hybrid or web app 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 giving some of the options I listed a try. Play around with Cordova or take a learn 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:
-
App Templates15 Best Android App Templates of 2017
-
iOS SDK15 Best iOS App Templates of 2017
-
Mobile App10 Best React Native App Templates of 2017
No comments:
Post a Comment