Mobility is coming to the force in the development of information technology these days. Along with the development of high-performance computing, supercomputers, data centers, the transition to the paradigm of computing in the clouds, the place and role of mobile devices is changing. We have moved from handsets and remote controls to more than just entry points into portals of various networks and clouds. Now mobile devices are brilliant entry points that are capable of solving a wide range of tasks autonomously, independently receiving answers or pre-processing input information for more efficient transmission and further processing, or significantly transforming (visualizing) the results from servers and clouds.
It is no wonder that the techniques and methods of app creation are becoming wider and more complicated. In this article, we will analyze cross-platform development in more detail.
In the case of cross-platform development of mobile apps, the platform for which the application is written differs from the platform on which the programmer works and from the executable code for the target platform is created. In the case of the MeeGo OS, the hardware part of the platform may be the same X86, but the development method will still remain cross-platform. The most important part of cross-platform development is the set of tools for creating executable code. It includes a compiler, linker, other utilities, a set of libraries for the target platform – this is enough to create an executable file for the target platform. Typically, this set of tools is part of or a close relative of the GNU Compiler Collection, that is, the same names, the same command-line switches, the same usage patterns apply.
Another option is to use an emulator provided by the manufacturer of the target platform. In fact, this is a kind of virtual machine, which, on the one hand, is maximally adapted to emulate the target platform, and on the other hand, is integrated with development tools, for example, IDE, which is also provided by the manufacturer. Currently, companies usually do not limit themselves to porting one executable file to the target platform to launch an application but form a whole package with all dependencies and installation rules (for example, APK for Android or RPM for MeeGo), which is then installed on the target platform. With the help of the same package, the final version of the application reaches the end-user devices. This, on the one hand, increases the portability of the application and makes it easier to launch complex applications, on the other hand, it slightly complicates and lengthens the launch procedure.
There are no silver bullets and perfect solutions when it comes to choosing a perfect mobile app development method. Each technology has its own advantages and disadvantages. The most important thing is to know the possibilities of each individual method.
Free IDEs for developing C/C ++ software under Linux UNIXILinux have a large number of tools for developing C/C ++ projects. Some developers prefer traditional Vi/Emacs/command-line utilities, while others prefer modern development tools. When creating large projects, the use of development tools especially pays off. As a rule, they provide the developer with the possibility of automatic code completion, code folding, syntax highlighting, code templates, built-in compiler, debugger. In particular, it helps people manage multiple files when using the GUI, as opposed to command-line utilities or traditional non-GUI editors.
Let’s list the most popular IDEs (Integrated Development Environment) for developing mobile apps.
Visual Studio Enterprise IDE
Visual Studio Enterprise is an IDE that has all it takes to build great apps for mobile, desktop, web, cloud solutions. It allows you to write code for iOS, Android, and Windows in one IDE. It also provides access to a user-friendly and functional IntelliSense environment, the privileges of easy code navigation, fast build, and fast deployment. Using the Visual Studio diagnostic means and IntelliTrace, you can view the code performance records and navigate to a checked status without having to set breakpoints yourself. Needless to say that this way is time-efficient and productive.
Xamarin provides the ability to use native UI development tools and native UI elements. For Android, the UI can be created directly in code or using a declarative approach with an interface description in XML. For iOS, it is also either code or using native interface design tools.
Visual Studio IDE includes Xamarin features for Android, iOS, and Windows app development. It enables the creation of applications with machine code performance and machine user interface using enterprise-grade tools. Xamarin facilitates optimization of application performance using profiling data, as well as an exploration of them in the runtime to quickly find errors. It allows you to check the quality of development on real devices in the Xamarin test cloud.
- a developing community;
- estCloud, used by developers, is used to test applications automatically;
- reuse of already written code;
- dynamic layout for iOS;
- the ability to add custom properties to standard controls using Custom Renderers.
You probably already heard of the Qt library tools that are designed to develop the widest range of applications for both personal computers and mobile devices. Qt SDK contains everything you need to get started developing Qt applications right away. In addition to the already built Qt libraries, it includes the Qt Creator IDE, complete help documentation, and sample files. The Qt SDK uses the GNU tooling to build applications. The Linux platform uses the toolkit that comes with Linux, and the Windows platform uses the MinGW toolkit that comes with the distribution.
Q1 technology is a toolkit that includes a software framework, a library of graphical interface elements, and a set of development programs that is used to develop cross-platform graphical user interface applications primarily in C ++. However, at different times, interfaces were created that allow development using Оt and in other programming languages, such as Рython – РуQt, PySide; Ruby —QIRuby; Java – QUambi; B PHP PHP-Qt and others.
The Qf toolkit underlies the popular KDE desktop environment among Unix-like users, as well as applications such as Skype, VLC, Virtual Box, and many others. Using the Qt API instead of other platform-specific programming interfaces allows you to create applications that, in many cases, without any modifications, will be compiled and executed on any OS supported by Ot, and in most other cases require only minor modifications. Among such OS, are MeeGo, Linux, Solaris distributions using the XI1, Symbian, Windows CE.
The main benefit of programming with Qt is that it simplifies and unifies the software development process for different target platforms. The difficulties that arise when porting projects from one platform to another are obvious. Due to the difference in OS architectures and the lack of generally accepted standards and interfaces, the application code turns out to be permeated with calls to the platform-specific APIs. This becomes especially noticeable in the sections of the code responsible for the graphical user interface, but often even innocuous sections that use standardized APIs are difficult to port.
Ot makes this problem much easier by providing the broadest set of unified programming interfaces. Instead of the API of the operating system, the developer uses the Qt API. The Qt API is implemented for each specific target architecture and is based on the native API of the operating system. Because of this, an application written using Ot actually uses the high performance of the native interfaces of the target platform; often the Qt libraries are just a thin layer between the application and the API of the OS.
Cross-Platform Development Pros and Cons
Cross-platform mobile app development has its advantages:
- the development speed is much higher than that of native applications, since you only need to create one code, and it will adapt itself to different devices;
- development costs are reduced since it is cheaper than creating two programs separately for iOS and Android;
- most specialists will cope with new frameworks, so they can easily create high-quality applications;
- apps on different devices will follow the same style, which means that brand awareness will increase;
First of all, the application interface is not native, so you will have to involve designers to develop the appearance. This point can also be attributed to the pros, as it is easy to adjust the design while maintaining the style and create a unique look for the application. But you should definitely take into account the design requirements of the operating system.
Secondly, if the application is large, for example, a large marketplace, then its speed can be insufficient and it is better to use native development. The fact is that cross-platform is a kind of add-on over the main code, so the response speed decreases.
The Law of Leaky Abstractions
Not every task can be solved in cross-platform languages. The law of leaky abstractions states that in theory, abstractions should isolate us from the lower level, but in some cases, they are still so complex that you need to delve into the implementation specifics at the lower level.
This principle applies to cross-platform frameworks as well. They usually abstract developers from the peculiarities of writing code for a particular platform. However, as soon as the question concerns performance or the implementation of specific functionality for the platform, the time saved during development is eaten up on solving these problems.
Of course, there are areas where the use of cross-platform technologies is fully justified, for instance in game development. Unity engine is a good option for most developers. Many marketers, with only basic knowledge of HTML/CSS /JS, successfully use Ionic to test their hypotheses without involving the development department. Many startups choose Flutter in order to quickly make the minimum viable version of the product (MVP), thereby proving the competitiveness of their brainchild in practice.
Note: from the point of view of a programmer’s career start, betting on cross-platform development is quite risky: large companies still have few vacancies of this kind, and this situation is unlikely to change much in the future. Large companies already have huge codebases written on native technologies that need support. Therefore, if you dream to work in the IT industry and be successful, then it is better to choose the platform that you like best and do an in-depth study of it.
Despite its drawbacks, cross-platform allows getting a high-quality stylish application that will open on various types of devices, from smartphones to laptops and computers. Despite the rapid volatility of IT technologies, the emergence of new mobile platforms and custom applications, we hope that this article will be useful.