Operating Systems of Mobile Devices (OSMZ)

Week XIII. (3.5.-7.5.2021)

Multiplatform frameworks allow developers to develop mobile applications that are compatible with more than one operating system; a combination of development for iOS and Android is typical (apparently due to the largest market share). They provide the ability to write code once and then run it anywhere on other platforms, which (theoretically) allows you to release software faster, more securely, and in better quality. The following paragraphs contain a list of currently the most popular frameworks (if I forgot about some framework, let me know).

Qt is a cross-platform framework widely used to create graphical user interface applications for a variety of software and hardware platforms. It is very popular in the Linux environment, where it forms the basis of the KDE desktop environment. Qt is a C++ library, but it also exists for Python (PyQt, PySide), Ruby (QtRuby), C, Perl, Pascal, C #, Java (Jambi) and Haskell. It supports application localization as well as SQL, XML processing, thread management, file access, graphics and multimedia. The great advantage of Qt is a very good documentation as well as the development programs Qt Creator or Qt Designer. Applications created for the graphical user interface use the native appearance of the operating system, so the developed applications always adapt to the appearance of the environment used. Support for mobile platforms covers Android from API level 16, iOS 6 and higher, and also the almost today non-existent Windows Phone 8.1. Applications written with this toolkit can be distributed under the GPL, LGPL licences or, subject to certain conditions, commercially. Qt also has purely commercial licenses that are not subject to these terms.

Xamarin is a software company and the name of a framework now owned by Microsoft but originally founded by the engineers who created Mono. Xamarin.Android (formerly Mono for Android) and Xamarin.iOS (formerly MonoTouch) are cross-platform implementations of the Common Language Infrastructure (CLI) and Common Language Specifications (often called Microsoft .NET). C# is used for application development, and Xamarin is said to have a strong community of more than 60,000 contributors from more than 3,700 companies. However, the main disadvantage is the higher costs associated with development tools. Although Xamarin is available for free to individuals and start-ups, larger teams must purchase licenses for Microsoft Visual Studio. Xamarin is also not recommended for applications that require more demanding graphics, as each platform has different methods for creating visual screen content and it is difficult to perform optimizations across platforms.

React Native is an open-source framework for mobile applications created by Facebook, Inc. It is used to develop applications for Android, Android TV, iOS, macOS, tvOS, Windows, UWP and allows developers to use the React framework along with the capabilities of the native platform. JavaScript is primarily used for React Native development. It is also possible to write native code for iOS or Android (in Kotlin or Swift). React components wraps existing native code and communicate with native APIs through JavaScript. However, if you want to use some platform-dependent features, such as the camera or accelerometer, you must use native components, so you create separate codes for Android and iOS.

Flutter is another example of the open-source user interfaces and software development SDKs created by Google. Used to develop applications for Android, iOS, Windows, MacOS, Linux, Google Fuchsia and the web. Flutter applications are written in Dart language and take advantage of its many more advanced features. The base library provides the base classes and functions that are used to build applications using Flutter, such as the API interface for communicating with the Flutter module. The flutter module is then primarily written in C++ and provides low-level rendering support using the Skia graphics library. In addition, when building a project, it connects to a platform-specific SDK, such as Android or iOS. However, Flutter still lacks some of the elements available to the platform's native code and does not allow it to take full advantage of the system's functionality.

PhoneGap is a framework based purely on HTML5, CSS3 and JavaScript web technologies. Applications written in the framework are displayed on the mobile device in a browser (such as WebView) in full screen resolution. At the same time, operating system elements and hardware elements can be used. Linking these elements are on the basis of plugins, which are already written in native code. It currently supports most mobile platforms. The framework is distributed under the Apache license and the community provides its development.

Unlike React Native and Xamarin, the Ionic framework is designed to create so-called hybrid applications that do not work with native components, but only mimic them via HTML, CSS and JavaScript. Ionic applications are made up of classic web development tools and web applications, which can then be run as mobile applications thanks to Apache Cordova technology. Ionic and hybrid applications generally, like native solutions, have access (but more limited) to mobile phone hardware and thus stand at the boundary between web and mobile applications. Unlike traditional mobile applications, however, they do not achieve such performance and are thus combined with a worse user experience.