It’s almost the end of 2016, and apps are everywhere. If you’re looking to create one of your own, you’re in luck! There are an abundance of choices for where to start. Some of our developers attended a talk given by Mike Cerny, a C# expert and mobile developer. At this talk, Cerny discussed five different ways of developing a mobile app, each with different levels of performance, access to device functions, and ease of development.
Here are the five ways to develop a mobile app in order of performance (starting with the fastest):
- Native Platform—using Swift or Objective C in iOS, or Java in Android.
- Cross-compiled Native Code—write in another language that you like, and compile it for the platform of your choice. Xamarin is the most popular option here!
- Hybrid Applications—built using standard web technologies HTML, CSS, and JS, and compiled using apps such as Adobe’s PhoneGap, Ionic, or Telerik.
- Progressive Web Apps—streamlined websites that act like apps (currently only works in Chrome).
Of course, there’s no one best method for developing any app. However, there may be a best method for you and the specific app that you want to build. What method you use depends on your expertise, timeline, and requirements for the app.
Some things to keep in mind include:
- Is speed of the utmost importance?
- What language are you most comfortable and most adept at developing in?
- How much of the device internals (GPS, camera, microphone, etcetera) do you need to access?
- Is security a major concern?
- How far back do you want to support old OS versions?
Writing an app directly for its operating system provides the most opportunity to make it efficient and gives you full access to the device internals. This includes background processes such as Google Maps giving you directions even after you’ve switched to another app. Writing directly to a device also gives you tighter control over security, and it will put you in a better position to support older devices. However, developing a native app not only requires expertise in the programming language of your device of choice, but if you decide to offer the app for both iOS and Android, you’re essentially writing two apps.
+ Speed, security, full device access.
– Length of development, required languages, required development environments.
Cross-compiled native code allows you to write a mobile app in a language you’re more comfortable in.
There are a few options available:
- J2ObjC—allows you to port your Java code for an Android app to an iOS app.
- RubyMotion—lets you compile Ruby code into either iOS or Android.
- Xamarin—by far the most popular and powerful option, Xamarin lets you write code in C# or F#, both of which are cross-platform languages. Xamarin has a whole host of features we encourage you to check out, but among them is full support from IDE’s such as Visual Studio. Apps written using Xamarin can also be written as OS-specific, or using Xamarin Forms, which outputs multiple device UIs based on a single set of code. Xamarin-written apps, typically, are not noticeably slower than native apps.
+ cross-platform, well-supported, has most of the benefits of Native.
– Requires knowledge of C#, still requires a Mac to publish to Apple App Store.
+ cross-platform, has most of the benefits of Native.
+ cross-platform, fast development, easy to develop, many framework options.
– Slower performance, doesn’t have 100% access to device.
Progressive Web App
One of the least enjoyable parts of app development is waiting for approval from the app stores. Progressive Web Apps get around that by simply asking users to install them from a website they visit often. Spearheaded by Google, Progressive Web Apps are just websites with a manifest file that tell the browser they can be installed to the device. They also have access to background services, push notifications, and can be added as an icon to a mobile desktop, so they can run very similarly to normal apps. However, they are currently only supported in Android, where Google has a vested interest in pushing web services over native apps. Apple benefits from a robust and popular App Store, so future support for Progressive Web Apps on the iPhone is doubtful.
+ Cross-platform, fast development, easiest to develop, doesn’t require App Store.
– Slower performance on old devices, doesn’t have 100% access to device, not supported on iOS.
Some caveats of the above options can be mitigated. For instance, there are cloud services that will build your iOS app without the requirement that you purchase your own Mac.
At Twin State, we have developed apps in both Native and Hybrid approaches. Check out our Products Page to see some of the apps we’ve developed!