Last month in our “Mobile Apps: An Overview” post, I mentioned we’d take a look at the differences in native vs. web vs. hybrid apps in a future blog post. Well, my friends, the future is now.

As mentioned, native apps are written in a specific language such as Java or Objective-C depending on the operating system. Web apps are designed to work across multiple operating systems (“cross-platform”) using a single codebase powered by HTML 5, JavaScript and CSS, but don’t have all of the functionality of native apps. Hybrid apps are built to reduce duplication across platforms by using HTML as much as possible, but they rely on at least a native shell to package the app and probably one or more native plug-ins, or wrappers, to interact with the device hardware and give a user a more native-like experience. Finally, apps developed in Appcelerator Titanium, Xamarin, RubyMotion, etc., use a single codebase to compile “native” apps.

Let’s dig a little deeper into the different types of mobile apps.

mobile apps
Apps illustrated: native vs. web vs. hybrid (by Worklight, 2011a)

Native applications live on your device and can be used offline. You download them from the Apple App Store, Google Play, Windows Apps & Games Store or from BlackBerry World, depending on your device. Because a native app is developed strictly for one platform, it can take advantage of all of the device’s features – GPS, camera, notification system, gestures, your contacts, etc. Native is written in a language specific to the device’s platform with an SDK and other tools usually provided by Apple or by Android or Windows. Every feature and function can be written natively without the use of any third-party plugins. Most important to the user, a native app is developed while keeping native behavior in mind – which differs from platform to platform.

“Cross-platform” covers several types of apps and even websites. Simply, the experience of an application or a website that is designed to work on any device.

Web apps work inside a browser and are very similar to websites, except that they do something. To most people, Gmail.com is a website. However, Gmail does far more than just display information, it actually does stuff. Sends emails, sorts information into folders, allows you to interact with your contacts or chat with a friend. Facebook.com or Google Docs are both highly sophisticated web applications that you use from a browser. These all display like websites. A lot of native purists don’t think of web applications as applications – they just lump them in with websites. This is unfair to many web app developers who are doing very complex things (like at Google) within a browser.

Many people praise how a web app can look just like a native app, swipe horizontally like an app, detect portrait or landscape orientation, forego typical look and feel of a browser, etc., but at the end of the day, it is still displayed within a browser and can’t call on a lot of the features native to a device such as notifications, complex gestures, run in the background, camera, etc.

A hybrid app is similar to native in that it is downloaded from one of the app stores and its content is displayed within a native app environment. It has a square icon that lives on your device’s home page, just like a native application.

Hybrid apps can be thought of in a couple of ways. For the most part, a hybrid app is written using a cross-platform tool such as PhoneGap (now Apache Cordova), in HTML5 or CSS or JavaScript. They run inside of a native app instead of in a browser like a web app (though the browser is embedded within the app). There is an abstraction layer between the web code and the native code that allows a native app to access certain device features (APIs) that a web app can’t access. This abstraction layer is what sets the hybrid apart from the web app (in addition to its rendering within a native app environment).

A hybrid app can also refer to a native app that is developed in Java for Android or Objective-C for iPhone that also calls some content from the web. For instance, if you pull up your privacy policy or user agreement in many applications, your native app actually calls up a web page where that information is housed. The web page is displayed in the app itself, not in a separate web browser.

There are also some development options that result in “native” apps but involve translating from non-native code bases into a native package. Apps created using Titanium or Xamarin allow a developer to use a single language like C# to create native apps that can be deployed across all platforms. The majority of the code is applied across all platforms, but not all. Some of the code is written specifically for each platform to create a native interface that leverages the same behaviors users identify with as being specific to their platform of choice.

Which kind of mobile apps are right for your business?

mobile apps

Web apps don’t have to be launched through an app store; they are pulled up from your browser window. They will show up in an organic online search. They don’t require installation and maintenance is simple. As mentioned before, they don’t have access to all of the APIs resident on a smart device. But they are truly cross-platform. And there are millions of web developers out there who have the skills necessary to develop for the mobile environment.

Hybrid apps can be a cost-effective method when targeting multiple mobile platforms. They allow you to access some of the native APIs like your device’s camera. They also work offline and don’t require internet connectivity. One of the downsides of hybrid app development is the reliance on a third-party tool required to cause the web, abstraction and native layers to talk to each other. Hybrids also don’t have the advanced graphic performance of a native app and tend not to have the same level of speed as a native app.

When it comes to mobile apps, we really tend to be native purists, but that doesn’t mean that other options don’t have value. Aside from having access to all of the APIs native to a device, native apps have faster graphics performance, don’t require connectivity and offer a superior user experience. The downside of native development (if there really is one) is that you have to develop each app independently for each platform. But if you are looking for a superior performing app that serves as a major brand touch point with your customer base, you should carefully consider going native. Part of what contributes to native development’s premium status is that developers who deliver an end-to-end competency need to be masters of their platforms. At stable/kernel, we are thrilled to have attracted some of the top talent in our industry. It means we can ensure our clients offer their users the highest performing native app experience possible.

Leave a Reply

Your email address will not be published. Required fields are marked *