Developing Mobile Applications: Web, Native, or Hybrid?
By Michelle Kimihira on Oct 24, 2012
Authors: Joe Huang, Senior Principal Product Manager, Oracle Mobile Application Development Framework and Carlos Chang, Senior Principal Product Director
The proliferation of mobile devices and platforms represents a game-changing technology shift on a number of levels. Companies must decide not only the best strategic use of mobile platforms, but also how to most efficiently implement them. Inevitably, this conversation devolves to the developers, who face the task of developing and supporting mobile applications—not a simple task in light of the number of devices and platforms.
Essentially, developers can choose from the following three different application approaches, each with its own set of pros and cons.
Native Applications: This refers to apps built for and installed on a specific platform, such as iOS or Android, using a platform-specific software development kit (SDK). For example, apps for Apple’s iPhone and iPad are designed to run specifically on iOS and are written in Xcode/Objective-C. Android has its own variation of Java, Windows uses C#, and so on. Native apps written for one platform cannot be deployed on another. Native apps offer fast performance and access to native-device services but require additional resources to develop and maintain each platform, which can be expensive and time consuming.
Hybrid Applications: As the name implies, hybrid apps combine technologies from native and mobile Web apps to gain the benefits each. For example, these apps are installed on a device, like their pure native app counterparts, while the user interface (UI) is based on HTML5. This UI runs locally within the native container, which usually leverages the device’s browser engine. The advantage of using HTML5 is a consistent, cross-platform UI that works well on most devices. Combining this with the native container, which is installed on-device, provides mobile users with access to local device services, such as camera, GPS, and local device storage. Native apps may offer greater flexibility in integrating with device native services. However, since hybrid applications already provide device integrations that typical enterprise applications need, this is typically less of an issue. The new Oracle ADF Mobile release is an HTML5 and Java hybrid framework that targets mobile app development to iOS and Android from one code base.
So, Which is the Best Approach?
The short answer is – the best choice depends on the type of application you are developing. For instance, animation-intensive apps such as games would favor native apps, while hybrid applications may be better suited for enterprise mobile apps because they provide multi-platform support. Just for starters, the following issues must be considered when choosing a development path.
Application Complexity: How complex is the application? A quick app that accesses a database or Web service for some data to display? You can keep it simple, and a mobile Web app may suffice. However, for a mobile/field worker type of applications that supports mission critical functionality, hybrid or native applications are typically needed.
Richness of User Interactivity: What type of user experience is required for the application? Mobile browser-based app that’s optimized for mobile UI may suffice for quick lookup or productivity type of applications. However, hybrid/native application would typically be required to deliver highly interactive user experiences needed for field-worker type of applications. For example, interactive BI charts/graphs, maps, voice/email integration, etc. In the most extreme case like gaming applications, native applications may be necessary to deliver the highly animated and graphically intensive user experience.
Performance: What type of performance is required by the application functionality? For instance, for real-time look up of data over the network, mobile app performance depends on network latency and server infrastructure capabilities. If consistent performance is required, data would typically need to be cached, which is supported on hybrid or native applications only.
Connectivity and Availability: What sort of connectivity will your application require? Does the app require Web access all the time in order to always retrieve the latest data from the server? Or do the requirements dictate offline support? While native and hybrid apps can be built to operate offline, Web mobile apps require Web connectivity.
Multi-platform Requirements: The terms “consumerization of IT” and BYOD (bring your own device) effectively mean that the line between the consumer and the enterprise devices have become blurred. Employees are bringing their personal mobile devices to work and are often expecting that they work in the corporate network and access back-office applications. Even if companies restrict access to the big dogs: (iPad, iPhone, Android phones and tablets, possibly Windows Phone and tablets), trying to support each platform natively will require increasing resources and domain expertise with each new language/platform. And let’s not forget the maintenance costs, involved in upgrading new versions of each platform. Where multi-platform support is needed, Web mobile or hybrid apps probably have the advantage. Going native, and trying to support multiple operating systems may be cost prohibitive with existing resources and developer skills.
Device-Services Access: If your app needs to access local device services, such as the camera, contacts app, accelerometer, etc., then your choices are limited to native or hybrid applications.
Fragmentation: Apple controls Apple iOS and the only concern is what version iOS is running on any given device. Not so Android, which is open source. There are many, many versions and variants of Android running on different devices, which can be a nightmare for app developers trying to support different devices running different flavors of Android. (Is it an Amazon Kindle Fire? a Samsung Galaxy? A Barnes & Noble Nook?) This is a nightmare scenario for native apps—on the other hand, a mobile Web or hybrid app, when properly designed, can shield you from these complexities because they are based on common frameworks.
Resources: How many developers can you dedicate to building and supporting mobile application development? What are their existing skills sets? If you’re considering native application development due to the complexity of the application under development, factor the costs of becoming proficient on a each platform’s OS and programming language. Add another platform, and that’s another language, another SDK. On the other side of the equation, Web mobile or hybrid applications are simpler to make, and readily support more platforms, but there may be performance trade-offs.
This only scratches the surface. However, I hope to have suggested some food for thought in choosing your mobile development strategy. Do your due diligence, search the Web, read up on mobile, talk to peers, attend events. The development team at Oracle is working hard on mobile technologies to help customers extend enterprise applications to mobile faster and effectively. To learn more on what Oracle has to offer, check out the Oracle ADF Mobile (hybrid) and ADF Faces/ADF Mobile browser (Web Mobile) solutions from Oracle.