By Marco Cantu’, Embarcadero Technologies
The explosion of the mobile platforms has been driven by the availability of thousands of popular applications, out of millions of available ones. Games, social apps, popular websites apps have been driving forces in this adoption. Enterprise applications development has been slower to embrace the mobile revolution, but it is obvious that this is also growing and will keep growing very fast over the coming years.
There are many angles to consider for an enterprise software development strategy, and the angle of this article is to focus on development tools, and specifically looking to how Embarcadero RAD Studio offers a unique approach to enterprise multi-device app development for the mobile and desktop worlds.
While there are countless software development tools for mobile, there are 3 main categories to consider.
Figure a Simple App Styled for iOS and Android
Using Platform Vendor Tools
One is the use of platform specific tools by platform vendors, like Apple and Google (and, to some extent, Microsoft). Vendors tool offer a high degree of integration with the specific platforms, with specific user interface capabilities and all of the services the devices provide made available to the developer.
There are two main limitations of this approach, though. The first is that there is generally little focus on database and enterprise data integration by mobile OS vendors, as this is not their primary goal. It is games and general-purpose apps that drive the platforms, after all.
The second is that the code you are building is written in different languages, using different development environments and tools, with different UI designers, and accessing totally different libraries, even when the app you are building for the different phone platforms is exactly the same, with the same features, and basically the same user interface and data access. This basically doubles the development costs, with the extra effort of keeping two (or more) development teams in synch on features and release dates.
Also, you end up building a scripted solution, which exposes to security risks of the required runtime and limited protection of the original source code. Performance can also affect the solution, in terms of pure execution time, but also for the limited access to local resource of the device like its multi-core CPU, local persistence and caching of data, just to mention a couple of issues.
Single-Source, Native, and Multi-Device Solutions
Is there a third solution for software developers who want to build apps that are close to the specific device in terms of UI, libraries, and native execution, but at the same time allow them to use a single development tool and a single programming language? The answer is yes, there are solutions in this space and they are growing, particularly for enterprise development.
Having a single development team that can produce apps for both iOS and Android, and also target desktop platforms with the same source code is clearly an approach that can help reduce development costs significantly. Even more if the solution fully and deeply integrates with the device, making it possible to call platform specific SDK APIs when needed.
Figure: RAD Studio for multiple operating systems
Of the solutions in this area, one that stands up is RAD Studio from Embarcadero technologies, as if offers a few unique advantages:
- The source code can be written in a single language (either standard C++ or a modern flavor of Object Pascal) and compiled natively to the target CPU platform, without the need of a runtime. Even on Android, this solution bypasses Java for extra performance and security.
- The developer can integrated and call platforms APIs and third party libraries directly on each of the platforms. On iOS the calls can be done to ObjectiveC libraries, while on Android there is a bridge for calling Java libraries.
- The runtime library, local database access libraries, device sensors libraries are all shared among platforms, and allow developers to write truly single source applications. This is true also for the user interface library, described later in more details.
The same single source application can target also desktop platforms like Windows and Mac OS X, so that the same source can be used to drive business apps across desktop and mobile, rather than being mobile only. This is an important proposition for enterprise customers, who often still rely heavily on desktop for day-to-day work.
Figure caption: A single form that can adapt to different operating systems and form factors.
Building a Multi-Device UI
In the development of a mobile application, the user interface and user experience play a key role. This is why it is important for the UI to look and behave like the native platforms do, and still writing the UI code only once. The idea that everything else but the user interface can be shared, while the interface has to be different fro each platform, falls short, when you consider that easily more than half of the mobile application code has to interact with the UI.
RAD Studio has a user interface component library (the FM platform), which supports visual and rapid application development, based on the single source approach, but still easily allowing for customization for different platforms and different device sizes. The FireUI multi-device designer, in fact, can be used to define a master form structure and visually customize the UI for iOS and Android devices, and customize it for tablets or phones.
There is also a unique preview mechanism you can use to see how the form of the application you are designing will look in different operating systems and form factors, encompassing phones, tablets, and even desktop operating systems. This is a live preview that changes as you modify the form in the designer, and offers an impressive time saver compared to building, deploying, and testing the app on the actual devices.
Figure: RAD Studio multi-device preview in action
Accessing the Enterprise Backed
The last core features to consider the support for enterprise-grade capabilities that the various tools offers. While most tools have local database access, most limit it to SQLite, which is a nice database but calling short of robustness and encryption features an enterprise required. RAD Studio ships with support for SQLite and IBToGO, the embedded version of InterBase an enterprise-level SQL database.
Of course, access to the enterprise data is a critical factor in this scenario. As I mentioned, platforms solutions offer little specific, although they’d certainly allow access to remote SOA architectures, generally via REST and HTTP access. Still, the way you access this services, read the data, and process it might change quite a bit from platform to platform. The same is true when using most cloud services.
RAD Studio in this area offers multiple options, leaving you and a large degree of freedom and flexibility, while at the same time it support single source solution you can also install on desktop operating systems, which is a rather unique proposition in the mobile space. RAD Studio has different libraries you can use:
- The REST client library can be used to access REST web services written with any architecture, including Java web services and ASP.NET solutions.
- A specific BaaS library offers direct access to some of the vendors in this space, including Parse and Kinvey.
- RAD Studio own middle-tier solution called Enterprise Mobility Services offers usage analytics, enterprise database access (including Oracle, SQL Server, DB2, and many other DDBMS), in a self-hosting solution that an enterprise can install on its own servers or a private cloud it fully controls and manages
Much more can be written about the dozens of mobile app development solutions on the market today, given most of the main mobile players have something to say in this area. There is a growing consensus in the enterprise developers community that single source solutions offer an advantage, but even another large part of the app development world, games development, is mostly driven by single source, multi-device libraries.
The various solutions fall in different categories and respond to different developer needs, but it is important to keep the single-source native multi-device solutions among the options, as they offer a significant benefit to the platform specific solution and those based on runtime engines.
Embarcadero Technologies will be exhibiting at Apps World Germany – visit them on stand #315