The following is Part 2 of our article on the Advantages of Native Mobile App Development. Click here to read Part 1.
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.
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 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.
Smartface App Studio
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
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.
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.
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.
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.