Advantages and disadvantages of native and cross-platform mobile app development
What is cross-platform and native development
Native development is considered as using original languages and instruments for mobile operational system's development. For iOS apps are created in the area of development XCode on the languages Objective-C, Swift, C and С++. For creation of apps for Android area Android Studio and language Java are used. Every development area consists of complex of utilities for writing code, interface creation, monitoring and app setting. Both , area and utilities complex are created for every mobile operational system and are convenient and powerful means for mobile apps' development.
The closest analogy of personal computers: MS Word, Skype, mail agents, calendars are natively developed apps for table operational system; all that happens in browser (sites, online editors of texts, social networks, chats, forums) are cross-platform technologies.
Pluses of cross-platform development
Cross-platform way for development has some following positive moments:
- It demands less resources for app realization for some platforms at once. It is the main sense of cross-platform way - the same code works for iOS and Android. It requires half as much programmers. Designer makes only one complex of graphics. All these ones decrease amount of work hours and project budget.
- Less time for development. Time for creation simple products is less due to absence of unique elements of interface and simple technologies.
- Simplified cycle of product update. If it is necessary to add something in the product or correct some error, it is made for all platforms at once.
- Using of single app logic. Logic put in app work will work equally for all platforms. It can be minus very often due to different architecture of operational systems ( as an example - button Back for navigation between screens: in Android hardware button Back is offered for this purpose, and in iOS it is only movement of finger from left side of screen or button in left part of navigation panel; if button isn't done at all, users of iOS cannot go back; if it is done but not on the right place and looked not standard, users of iOS feel uncomfortable; if this button is made as in iOS, users of Android feel uncomfortable), but writen once logic includes less errors in its work: you don't need to do work twice and thrice for searching problems for every platform.
Pluses of native development
Development on the base of original technologies and languages for iOS and Android has some positive moments:
- Speed of app work. As app is created with the help of original instruments of development (XCode, Android Studio), cod gotten in the result of compilation of project is optimal for such platform. App gets full hardware support ( detailing images is made by peculiar processor, used for this - GPU), multithreading is used for realization of complex task and loading content, during development programmers can measure work speed of all parts of code and optimize them, they also can use instruments for monitoring of using RAM, searching possible leaks, etc.
- Flexibility in realization. Unlike limitations in interface creation and difficulty of visual effects, made by frameworks for cross-platform project creation, in native development it is possible to realize everything that is allowed by technologies of any mobile operational system.
- Using of the latest technologies and dependence on cross-platform frameworks. New program and hardware functional, offered by companies -producers of device and opertional system, becomes available for realization after release updates. For example, in iOS 9 possibility of research inside apps is included: special method should be realized in every of them, which brings back results for peculiar search query. In the result possibility of research through system section of research is available for those apps that has this functional realized, where research of apps, contacts and events is realized. In the case of cross-platform development for realization of this functional it is necessary to wait for not only release of iOS 9, but update of appropriate framework, and it is not possible to guess when support of new abilities appears.
- Easiness and quality of testing. Except instruments, mentioned in p.1 for control of app using of hardware recourses of device testers and creators have complex of technologies. Firstly, all the parameters of system in the process of app work are automatically controlled. If app uses memory more than expected, or more recourses of CPU, it can be unnoticed. Secondly, possibilities in using unit-tests - automatic tasting almost every method in app. If any part of app doesn't work correctly due to some changes of code, new version cannot exist, and programmer can see the reason. Thirdly, wide possibilities are available in integration of system of remote monitoring of errors: in every native project functional is included that allows to see error and its reason.
- Full support from the apps shops App Store and Google Play. Both companies are interested in getting by users maximal positive experience by using apps for these platforms. It means that app should be qualitative (if it is not so, app cannot appear in AppStore), work quickly as possible ( if it thinks for 20-30 seconds, it is not possible) and everything should be comfortable for use. If they are not qualitative, that it is difficult with cross-platform technologies, your offer cannot be considered by companies for using it in advertisement section (Featured). Among apps, existing in Featured-sections in AppStore and Google Play there are no any cross-platform apps except game projects.
From the technical point of view and quality of interface native development has more pluses, but there are some spheres, in which cross-platform technology are more convenient: game section and testing projects.
Modern games are written in the most cases on the cross-platform technologies, it makes development quickly without quality damage, as in this case special graphical frameworks are used ( the most popular is Unity 3D). If it necessary to make some project quickly for testing for some platforms at once, cross-platform can be optimal decision. If project is not game, focuses on long-term development and demands positive evaluation of users, native development is more convenient.