Advantages of Native Mobile App Development (Part 2)

The following is Part 2 of our article on the Advantages of Native Mobile App Development. Click here to read Part 1.

Cross-Platform Frameworks

A number of companies are producing cross-development frameworks for mobile applications that produce native mobile apps that can run on both iOS and Android from the same code base. These are not hybrid apps that utilize web components to achieve portability but truly native apps with full access to native platform capabilities.

Cross-development frameworks use different approaches, which they may combine, to achieve varying degrees of write-once-run-everywhere capabilities. Some take an LCD approach by creating more or less uniform abstraction of various platform capabilities into a single API, whereas others distinguish between target platforms via separate API interfaces, class abstraction or conditional compilation.

Xamarin

Development in Xamarin is solely in C# and the utilization of APIs that encapsulate shared behavior and specific capabilities between platforms in portable and platform-specific APIs. Where platforms diverge, the C# code is written using platform-specific code, which is conditionally compiled.

Xamarin uses Portable Class Libraries for platform-agnostic code plus Xamarin.iOS, Xamarin.Android libraries or .NET projects. Thus .NET apps can also be ported to iOS or Android using Xamarin. Xamarin’s IDE is Xamarin Studio, though a version also exists that can plug in directly to Microsoft Visual Studio. Xamarin claims they achieve between 60 and 100 percent code reusability and 100 percent native performance.

Appcelerator Titanium

Appcelerator Titanium is a free, open-source framework that supports cross-development on iOS, Android, Windows Phone, BlackBerry OS and Tizen. The Apache Titanium SDK, Apache MVC framework and a proprietary IDE called Titanium Studio are included.
Mobile application code is written in JavaScript, which is interpreted on the target platform by platform-specific JavaScript engines. This code is linked to native Titanium APIs that provide direct platform access. Thus, Appcelerator Titanium uses runtime evaluation versus cross-compilation of the mobile app.

Smartface App Studio

Smartface, Inc. offers an IDE for designing, coding and publishing native iOS and Android apps. Like Appcelerator Titanium, development is in JavaScript. The IDE includes a WYSIWYG design editor and device emulator that claims to support both Android and iOS UIs with a single design. Smartface App Studio runs on a Windows platform so that iOS developers are not tied to using a Mac machine.

Configure.IT

Configure.IT is a cloud-based environment supporting the cross-development of both iOS and Android mobile applications. Its tools enable automated code writing and standardization from start to app-store deployment. Even non-coders can use it to produce error-free native iOS and Android apps that are compiled from either Objective-C or Java, respectively. Although it includes a vast features library, custom code can also be written. It also accepts 3rd-party APIs from Facebook, Twitter, Paypal and many others. Configure.IT estimates that data-driven apps can be developed in 50 percent of the time taken by conventional coding methods.

Other Considerations and Disadvantages to Various Frameworks

Cost

Although many native, cross-development mobile app frameworks are free, some are not. Even with free frameworks, there may be additional tools or licenses that cost money.

Version Support

Since native applications do not take a lowest-common-denominator approach to a platform’s UI or specific hardware capabilities, they are more sensitive to platform advances such as new hardware, OS upgrades and UI improvements as compared to web-based apps. Thus, it is important to understand a particular framework’s policy toward supporting new hardware and software releases.

In this regard, Xamarin can boast the most responsive policy, which attempts to deliver platform version support within days if not hours. Other frameworks, such as Smartface, only offer upgrades quarterly. Since the framework is updated quarterly, developers who want to keep up with the latest changes in iOS or Android must experience up to a 3-month delay in obtaining these and re-releasing their app.

Execution Time

Any framework that utilizes JavaScript and native libraries will suffer from slower startup compared to a pure native application. This is because the JavaScript application, all the libraries it links to and the native interpreter must be completely loaded into memory before execution begins. Furthermore, some frameworks, such as Titanium have had issues regarding memory management and stability.

Coding Language

Because cross-platform frameworks must necessarily choose a single development language, their choice is not always a convenient one. For instance, even though C# is a relatively easy language to learn, it is not in as common use as, say, JavaScript. Thus, any organization wishing to use Xamarin for mobile apps must take into account the learning curve for non-C# coders.

Conclusion

Naturally, whether a company is producing an in-house mobile app, one that helps customers and partners interact with the company or one that generates direct revenue, that company would prefer that it run on as many platforms as possible. Currently, an app that can run on both iOS and Android has a potential marketplace covering 90 percent of mobile device users. That is the number one reason why cross-development mobile app frameworks are considered in the first place.

Although write-once-run-everywhere apps can be accomplished by using a web-based approach where the app is written in HTML5, CSS3 and JavaScript, these apps have several disadvantages compared to apps that can run natively on mobile devices. Because they run within a mobile web browser, their UIs do not blend as seamlessly as do native app UIs, nor can they access the full platform hardware capabilities. To some degree their performance also suffers.

Developers who wish to produce applications that provide a smoother user experience, tighter integration with platform hardware, full support for user preferences and increased user engagement will choose to develop native applications. These reasons are why both LinkedIn and Facebook traded in their web-based applications for native apps.

Truly native performance, however, is non-trivial to achieve in a cross-platform environment that also tries to mitigate disadvantages such as learning a new coding language, keeping up with platform changes and supplying native performance without limitations at a reasonable cost.

Fortunately, for the organization contemplating native cross-development, there are a large number of native mobile app frameworks on the market today. In all cases, utilization of these frameworks reduces the amount of effort and time-to-market of having to rewrite a particular application in separate native IDEs such as Xcode or Android Studio.

Of today’s cross-development frameworks, Xamarin offers the most comprehensive, optimized and up-to-date environment for iOS, Android and Windows mobile apps but at the highest cost. Many frameworks, such as Appcelerator Titanium and Smartface, utilize an approach of linkable native libraries and on-device runtime interpreters, which reduces cost but somewhat lowers performance. Configure.IT offers a unique cloud-based, automated code generator approach that, despite less flexibility in the types of applications that can be produced, produces completely native code in Objective-C/Swift or Java for iOS or Android versions, respectively.

In the end, the choice of whether to go native versus employing hybrid or web-based approach plus choosing a development framework depends on several factors. These factors include the degree to which the developers want to provide seamless UI/UX to customers, top app performance and the ability to keep up with platform changes. Of course, there are always cost and production time considerations. Finally, the particular requirements of any app may mean that a native version is either not practical or unnecessary. For instance, an app that needs only a simple interface and whose performance is heavily bound by back-end processing could as easily get by with web-based development.