What is native and cross-platform development
Native development (from English native – native) means the use of original languages and tools for developing a mobile operating system.
Development of applications for ios takes place in the Xcode development environment in the Swift language (and earlier – in Objective-C).
When using the technology for developing mobile applications on the Android platform, the Android Studio environment and the Kotlin language are used (until 2018, the main language was Java).
An article on building android apps.
Each development environment contains a whole set of utilities for writing code, interface design, debugging, profiling (monitoring) and building applications. Both the environment and the corresponding set of utilities are created specifically for each mobile operating system, and are the most convenient and powerful tools for developing mobile applications.
A simple analogy can be seen in the case of personal computers: MS Word, Skype, mail agents, calendars – these are natively developed applications for the desktop operating system. Everything that happens in the browser (websites, online text and graphics editors, social networks, chats, forums) is cross-platform technologies.
Pros of native mobile app development technology
The development of a mobile application in native technologies and languages for iOS and Android has the following positive aspects:
1. Application speed
Since the application is created using the original development tools (Xcode, Android Studio), the resulting compilation of the project code is optimal for this platform.
The application receives full hardware support for the device (the processing of the same images is carried out by a separate processor specially designed for this – the GPU), multithreading is used to implement complex tasks and load content in the background.
During the development process, programmers can measure the speed of work of all sections of the code and, if necessary, optimize them. They also have tools at their disposal to monitor the use of RAM, search for possible leaks, etc.
2. Flexibility in implementation
In contrast to the limitations in the construction of the interface and the complexity of visual effects imposed by frameworks for cross-platform project assembly, in the native technology for developing mobile applications, you can implement everything that the technologies of a particular mobile operating system are capable of.
3. Use of the latest technologies and dependence on cross-platform frameworks
New software and hardware functionality provided by the device and operating system manufacturers becomes available for implementation immediately after the release of the corresponding updates.
For example, iOS 9 includes the ability to search within apps. Each of them must implement a special method that returns results for a specific search query. As a result, for those native iOS applications in which this functionality is implemented, the ability to search for content through the system search section in iOS is available. In the same place where the search for applications, contacts, events and other information is carried out.
In the case of cross-platform technology for developing mobile applications, to implement such functionality, you will have to wait not only for the release of iOS 9, but also for the update of the corresponding framework, and it is impossible to predict when support for certain new features will appear and whether it will appear at all.
4. Ease and quality of testing
In addition to the toolkit mentioned in clause 1 for monitoring the use of the device’s hardware resources by the application, developers and testers have a whole range of technologies at their disposal.
Firstly, all system parameters are controlled automatically during the operation of the application. If an application uses more memory than expected, or more CPU resources, it will not go unnoticed.
Secondly, the possibilities in the widespread use of unit tests – automatic testing of almost every method in the application. If some part of the application stops working correctly due to any code changes, the new version will simply not be compiled, and the programmer will immediately see the reason.
Thirdly, there are ample opportunities for integrating remote error monitoring systems. In each native project, the corresponding functionality is built in, which allows you to see the error and its cause that arose on the device of any user.
5. Full support from App Store and Google Play
Both companies are committed to ensuring that users get the most positive experience possible when using applications on their respective platforms.
This means that the application should look as high quality as possible (if the screen has a high resolution and the images are blurry, the App Store will simply not let the application pass), work as fast as possible (if the application displays a small list of items in 20-30 seconds, it they will not miss it), and in general everything should be nice and comfortable.
If any of these parameters are too low or not met at all, the application will not be allowed to enter the store. If they are not up to par, which is extremely difficult to achieve with cross-platform technologies for creating mobile applications, and often impossible in principle, your application will never be considered by the relevant companies for placement in special advertising sections (Featured).
Among the applications in Featured sections of both the App Store and Google Play, there are none made using cross-platform technologies. Except for game projects in which the interface is not systemic.
Pros of cross-platform mobile app development technology
The cross-platform development environment has the following positive aspects:
- Less resources are required to implement an application for several platforms at once. This, in fact, is the essence of the cross-platform technology for developing mobile applications on the android and iOS platforms – the same code runs on both platforms. There are exactly half the number of programmers involved in the project. The designer only makes one set of graphics. All this reduces the number of working hours and the project budget.
- Less development time. Due to the lack of unique interface elements and simpler technologies for developing cross-platform applications, the time for creating simple products is usually less.
- Simplified product update cycle. If you need to add something to the project or fix some mistake, this is done immediately for all platforms to which the project applies.
- Using a single application logic. The logic behind the application will work in the same way for all platforms. Quite often, this can be a disadvantage due to the different architecture of operating systems.
A prime example is the Back button in navigation between screens. Android has a hardware Back button for this. On iOS – swiping your finger from the left side of the screen, or having a button on the left side of the navigation bar. If you don’t do the button at all, iOS users won’t be able to go back. If done, but in the wrong place and looking out of the box, iOS users will be unusual and inconvenient; and if done as in iOS, it will be unusual for Android users.
However, once written and debugged, the logic contains potentially fewer errors and discrepancies in its work. Therefore, you do not have to do the double and triple work of finding problems on each platform.
From a technical point of view and from the point of view of the quality of the interface being created, the native technology for developing mobile applications has much more advantages. However, there are areas in which cross-platform technologies are justified: the gaming sector and test projects.
Most modern games are written on cross-platform technologies. This greatly speeds up development without sacrificing quality. in this case, special graphics frameworks are used (the most popular is Unity 3D).
If a project needs to be done quickly to conduct any tests, and the situation requires the project to work on several platforms at the same time, a cross-platform implementation may be the best solution.
If the project is not a game project, aimed at long-term development and requires a positive user experience, then it would be more rational to create a mobile application in a native way. Once the development method has been chosen, it is time to discuss the cost of developing the application.