Native or cross-platform – what to choose for a novice mobile developer? Experts answer

If you want to become just a mobile developer, then the answer is obvious: you need to choose any of the native development environments and lean on Objective-C / Swift for iOS or Java / Kotlin for Android. In this case, at your service all the capabilities of the system, you can manage almost every nuance.

If you just want to write a program that will work on phones as well, then you don’t have to think hard and choose what the soul lies for or has some notable experience: C ++, React Native, Xamarin or five hundred thousand JS frameworks for cross-platform development. Or even continue to do your [адаптивные] Web sites.

I must admit that I am rather skeptical about the very idea of ​​cross-platform development on such different (and diverging) platforms as Android and iOS. None of the vendors love "infidel" developers trying to sit on two chairs at the same time. Everyone is trying to tie programmers to tools and environments, and no tendency to converge in the foreseeable future is to be expected. What can I say, Apple in this race even refused OpenGL, the most cross-platform of all libraries after Curl, but now they have their own Metal, which seems to do the same thing, only better and in a different language.

On the other hand, very often mobile development is the creation of two similar-looking applications for some kind of network service. Customers are not always ready to pay for two products that seem completely indistinguishable, so the demand for cross-platform development technologies exists and, admittedly, is quite high. Programmers are also not averse to saving money, especially if you want to sell a mobile application, there is no desire to learn Swift / Kotlin, but JS / C # is already at your fingertips.

Of course, cross-platform development brings with it a lot of unobvious nuances. All universal solutions are forced to build castles in the sand: either relying on complex and fragile technological solutions (like Xamarin), or on mobile JavaScript engines like React Native. At the same time, platform vendors do not think to support any of the solutions, and each update of the native SDK is a big headache for any cross-platform framework. Not to mention such system-specific features as access to a camera, keychain or even a trivial gallery of photographs, which everyone tries to circumvent with varying degrees of success. Developers who choose the universal path are held hostage by their framework, and often development, which promised significant savings, turns into a fight against a rake.

It is also common in cross-platform solutions to sacrifice what is termed the term user experience (UX): many frameworks try to use controls that are as general as possible for both systems, and almost always this solution is equally inconvenient for everyone. Or slows down. Or out of the general style. Or consumes battery. Continue the list yourself.

Cross-platform applications stand out separately, whose kernels are written at a low level, as common as possible for all operating systems: in languages ​​like C / C ++. In this case, it is customary to generalize the use of code that serves business logic, and the interface is written for each platform separately. Ideally, duplication of the critical part of the application could be avoided, while maintaining the user experience specific to each platform. However, in real life, everything is more complicated. For example, Dropbox tried for several years in a row to live with a low-level kernel, but in the end they refused for many reasons, and now they are happy with native platform applications. For those interested, I refer to their interesting article on this topic.

In my opinion, saving on cross-platform frameworks is always illusory. Probably, in some trivial projects where the application is just a version of the main site, super-optimized for mobile phones, a generalized approach works. In other cases, you risk repeating Dropbox’s fate. My advice is if you want to be a mobile developer, invest in exploring the platform. They will always pay off, even if you have to participate in a cross-platform project.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *