Cross-Platform solutions for the development of mobile applications

in #business7 years ago (edited)

Since five years we are creating software at zauberware technologies. We always keep an eye out for new developments and do not hesitate to leave our comfort zone. Hence zauberware technologies belonged to one of the first IT companies who used Xamarin for client solutions.

Mobile Apps

Initial skepticism among customers as well as the IT architects could be cleared up by savings in development and operating costs, as well as by Microsoft's predicted and successful takeover of Xamarin. Basically, the use of a cross-platform solution, if properly selected and deployed, can significantly reduce and simplify the effort for development & testing, as well as for ongoing operations. "Code sharing" is the magic word, that is, the joint use of program code for different platforms. Especially in the B2B area, the days are over, in which each app has been developed individually for e.g. Android, iOS and Windows. Nevertheless, whoever now believes to develop a unique app with a few clicks is unfortunately wrong.

Let’s take a look at a few platforms and tools.

Which option is best? Each alternative in the development of native codes has its advantages and disadvantages and usually follows its own philosophy. From our perspective, the choice of the platform depends on the following key factors:

  • Abilities of the development team
  • Requirements for the apps to be developed
  • Application segment in general
  • Customer’s strategic orientation

Hereafter, we have looked at some platforms, which we consider particularly relevant and with which we have already gained experience.

Xamarin

Today, Xamarin is one of the most used platforms when it comes to the development of mobile applications. With Xamarin, native Android, iOS, Windows and Mac apps can be developed in C#. The architecture of the applications is usually divided into a core area and the surfaces. In the core area you will find, for example, the functionalities regarding data storage and access, as well as the general business-logic. Depending on the application, this core contains approximately 60-80% of the written code. The development of the views is also done in C# and directly in the Xamarin Studio, which smartly solves some problematic areas of Apple's own XCode.

Thus, there is no complete reuse of the code on all platforms, but the great advantage is that Xamarin, while compiling, creates native applications for the respective platform. Apart from a larger download file due to the use of additional libraries, you won’t detect any difference in the application compared to normal native apps. With nuget, an efficient package manager, extensive libraries are available for easy use.

Justifiably, C#, the language used, wins more and more fans as “Java as it should be” and as a professional, thought-out programming language. It especially wins in contrast to Apple's quite young self-creation Swift, which is subject to constant changes.

Depending on the requirements, the use of Xamarin-Forms can make sense, as it also allows the view development across platforms. After initial disappointments, we now have also barely noticed differences to native apps in this point. Although we are still not using it for complex view designs.

In order to lessen the enthusiasm a bit, we must immediately mention the fact that Xamarin requires a longer and more intensive training phase than other solutions. In addition to a profound foundation and knowledge of the .NET world as well as C#, knowledge and experience using iOS and Android are even more important. Based on our experience it seems easier for a native mobile developer to become acquainted with Xamarin and C#, than for a .NET developer to learn mobile topics. But this of course is different from person to person.

After Microsoft bought Xamarin, the number of extensions and improvements has increased significantly and the price has also declined. Due to the Microsoft strategy of many large companies, we absolutely recommend Xamarin for internal business tools, but it is especially our choice as soon as the possibility and wish exists - now or in the future - to use the mobile application on several platforms.

Cordova

Cordova provides an interface to JavaScript that allows you to use various functions on all platforms such as Android, iOS and Windows. When the app is ready, it is compiled with Cordova and further packaged for JavaScript, CSS and HTML in their platform-specific packages.

The main advantage of Cordova-based platforms is that already learned web technologies can be used and therefore it is the first choice if the development team mainly consists of web developers. Based on Cordova, several platforms have evolved, some with a very large and active developer community, e.g. Ionic or Mobile Angular UI.

Cordova-based applications run on kind of a mini web server, which provides a web application of a WebView (a quasi Internet browser). Basically an intelligent approach, only the performance suffers, which can quickly become a frustrating user experience when having complex views.

It is recommended to use Cordova when web developers are already on board and when the mobile applications are used as an additional application for a core product or for marketing purposes. If the mobile applications are the core product, an important component, or an enterprise app for internal use, we rather advise against it. Here a native application or solutions like Xamarin and React Native make more sense.

React Native

Relatively new on the market, but aside from Xamarin also a serious alternative to the cross-platform development, React Native is from the home of Facebook. Initially an option to develop iOS apps with Javascript and a special variant of React.js, it is now also available for Android. As with Xamarin, the applications compile in native code and, in addition to the framework used, native functions can be accessed directly if necessary.

Since we are also convinced of React.js as far as the use of web applications is concerned, it would be the right platform for us. So far, we have been able to use React Native only for smaller prototypes since either a Windows 10 app was required from the customer side, or React Native was just not ready yet. In the future, however, we see potential in React Native. Facebook writes its own apps with it, so for example also Instagram, a vibrant developer community and compelling features like a live view during the development without compilation give an overall picture and whet someone’s appetite.

Getting started is not that easy. React is based on JavaScript, but a mere experience in HTML, CSS & JavaScript will not be enough for a quick start. If you already have experience with React.js, it will be rather easy to learn it, but if you don’t have any experience you will have to put a lot effort in learning it. A quick look into the documentation and best practices is not recommended, wrong decisions at the beginning can lead to expensive changes to the overall architecture.

In addition to JavaScript, React Native itself and partly React.js, it is absolutely necessary to get an introduction into JSX. JSX is used to define views. It is similar to XML, but it is more a syntax extension to JavaScript. Once learned, the creation of views will be extremely fast and easy.

Many problems still cannot be solved across platforms, therefore a code sharing of 80 - 100% can be assumed depending on the requirements. All specific customisations can be developed by directly accessing the native functions. Which of course requires a prior knowledge of iOS and Android development.

DIY TOOLS

Can I use a DIY solution to develop for all platforms?

"Do it yourself" tools from our point of view are not yet suitable for operating demanding mobile applications in a production environment. Rather, they can help to launch an application within a few days to test the general acceptance. Most of these tools are cloud-based and have an intuitive interface to develop an app, even without much programming experience. Nevertheless, we also keep these tools in mind. At the moment, no DIY-solution on the market does offer the necessary flexibility and features, neither for web nor mobile development. However, some prestigious companies, equipped with a decent budget are currently about to change this.

Conclusion

There is no best solution for all problems. For productive and demanding applications, we can currently recommend either going native or the use of Xamarin or React Native.

This article was published on our company website: https://www.zauberware.com – Thanks to Marcus and Teresa !

Sort:  

Very helpful and informative. Thanks. I resteemed this post so that more users could read it.

Thank you very much! Just registered yesterday and I am not pretty much connected here :) Would love to see if this posts helps the people in making their decisions.