The world of mobile software has undergone an important evolution in the last decade.
The changes in the market, which make it increasingly articulated, interconnected and full of complex factors have meant that the developers deepened the potential offered by current technologies, mechanisms and specific (native) guidelines of the two most popular operating systems: iOS & Android.
The increasing complexity of the various platforms, and their incompatibility, has however made it increasingly complicated for a single programmer (or development team) to stay updated on all innovations at the implementation level.
For some time, attempts have been made to standardize the developments for the various mobile platforms under a common denominator, with frameworks that however move away from the "native" layer of the individual systems and, by introducing abstractions that limit the freedom of the developers, do not allow to fully exploit the potential of the devices and ultimately provide a significantly lower user experience, or at least it was until recently.
To better master the complexity of code development, different methods of managing the development of multi-platform apps were born through the use of Framework.
The technologies for creating cross-platform mobile applications are divided into two main categories: Web-based applications, and multi-platform applications written in a common language, relying on a specific Framework.
More recently, Progressive Web Apps (or PWA) have also started to spread, mainly driven by Google, but which also work on Apple with some limits. PWAs overcome the need for a "container" and are developed entirely in web technology, thanks to the new HTML5 specifications, just like a website. The PWA also, unlike other technologies mentioned, do not have native components, and are not distributed on traditional App Store, but directly with a link like a normal website. This is an interesting but not yet fully mature technology, which we are likely to discuss in the future.
Through a multi-platform development framework it is possible to write code that will be compiled to be run directly on the various platforms, in a similar way to a native app. There are various frameworks for multi-platform development, with different characteristics in terms of quality of the result and scope of application, for this reason it is necessary to choose the right tools according to the desired objectives.
For the development of, for example, cross-platform mobile apps, the most used frameworks today are React Native, Flutter (recently made available for the first time by Google) and Xamarin.
For the development of playful and multimedia applications (videogames, AR / VR), there are specific frameworks such as Unity and Unreal Engine (which we often use in Octal, but which we will discuss in a future articles).
In the next paragraphs we will therefore go into further information on the main frameworks used in the development of mobile apps.
One of the innovations on which we have been working for some time with excellent results and customer satisfaction is the development in React Native.
The Framework was created by Facebook Inc. which manages its development and implementation processes according to its policies, but is released free of charge as open source. The popularity of React Native is still limited and there are not many developers yet, but it is certainly growing and destined to increase.
Flutter is a Dart-based development environment, a new programming language developed by Google. The language exploited by Flutter, Dart, can be compiled natively on Android and iOS platforms. This feature allows developers who choose Flutter to create applications with performances very similar to those written directly in native.
Worth Reading: Detailed comparison between Flutter, Xamarin & React Native
Flutter provides a number of predefined widgets that can be used to create interfaces that maintain the native look.
The fact that Flutter is promoted by Google consists of an advantage thanks to the enormous support that Google gives to the developers who choose Flutter (also for obvious marketing reasons), moreover the developer community orbiting around Flutter is already rich and full of supporting documents. A critical issue is given by the reference programming language, Dart, which is still not widespread today and little known by developers.
Flutter is also a relatively recent project in the cross platform development landscape, this makes it not always suitable as a choice for applications that require many integrations with third-party systems, native components or complex functionalities. In Octal, we started using Flutter for some projects with a good satisfaction, especially for not too complex applications and for the rapid creation of prototypes.
Xamarin is an IDE (Integrated Development Environment) and a Framework promoted (and owned) by Microsoft. Xamarin is used for cross-platform application development, using the C# language and then compiled in native code. The compilation and translation process means that the final product is in all respects a native application.
In the typical Xamarin project there are three main parts of the application that are developed:
The need to develop graphical interfaces separately stems from the approach indicated by Xamarin himself to deal with cross-platform programming: the graphic libraries are mounted directly above their native counterparts, functioning in all respects as simple connectors. This design decision forces developers to write ad-hoc pieces of code for individual platforms.
In order to overcome this limit, for some years Xamarin has made available to developers a library for the creation of multi-platform interfaces. The greater rapidity of development allowed by this approach is paid for with retaliation: a lower flexibility of the components, exacerbated by the lack of supporting documentation.
In conclusion, the choice of technology often depends on very specific factors of the product to be made. In Octal, we have gained a long experience in these years, and we know how to guide the customer towards the best choice, motivating it and sharing the benefits that derive from it. Regardless of what the technological choice will be, the composition of the team for the development of mobile apps is equally important.
Some organizations opt for the construction of teams in turn "multiplatform", that is, development task forces that include expert Framework developers who work in synergy with experts of the individual operating systems. Octal IT Solution, for example, manages both native projects and multi-platform apps, in the latter case with a team that works in close synergy with the native area (iOS and Android), creating a team of experts dedicated to making the digital product performing on every device and / or operating system.
Do you already know how to develop your next mobile project? Let's talk about it together.