Quantcast
Channel: { Name: "Mazin" }
Viewing all articles
Browse latest Browse all 25

Mobile Native Development vs. Native "Frameworks"

$
0
0
I'm going straight to the point as this is my personal developer experience. I've tried all of Apache Cordova, React Native and Xamarin and in all of them I face the challenge of needing to dig into platform-specific details as soon as a non-trivial thing need to be built.

It's not about the languages since I'm already well versed with JavaScript, HTML, CSS required for Cordova, the JSX extension used with React Native is just very clever, and finally C# which is a primary .NET language used with Xamarin is actually my favorite language that I have been using for many years.

Actually the ability to use languages other than the old and dry (and verbose) Java for Android for example is an advantage since the aforementioned languages used with these Native Frameworks are modern and convenient, but there is something unattractive about the learning curve.

The primary selling point of mobile native development frameworks is their build-once-publish-anywhere concept. If you build a simple mobile app with one of these frameworks, you are ready to deploy to iOS (if you have a Mac), Android, and possibly other mobile platforms. This is a conceptually amazing reduction of the amount of work needed and indeed a conceptually great productivity boost.

I say conceptually because realistically, if it's a simple app then the amount of work saved isn't that much. If you're a C# developer or a Java developer it's not really a big deal for you to build your simple app with XCode on a Mac, nor should it take you much time since it's a simple app. An XCode/iOS developer can also experience a similar thing using Visual Studio: even if a developer might not be familiar with an environment or the details of a language, he or she can understand and get to speed with the basics rather quickly.

The issue is when you go a little beyond the basic functionality. In my experience, using any of the mentioned frameworks for any complex work, drags you into platform specific issues and almost immediately you find yourself needing to learn a lot about each platform.

This brings in another issue: the layer of abstraction of the native development framework takes you away from the native platform when, at the same time, it requires you to be closer to the platform to build your little more advanced functionality. This is the 'plugin-system' as it is known in the native frameworks. The premise or even promise of the native frameworks is not compatible with such an experience.

So it boils down to: a layer of abstraction from the native platform that requires you to use a plugin system to build platform specific. Yes, as the plugin system evolves and the plugin collection expands this issue will improve, but still there is another issue.

The other issue is exceptions. If something goes wrong, facing Gradle/Android platform exceptions alone is much more manageable than facing those same exceptions hidden inside Xamarin (or React Natives) exceptions. Sometimes you even have to deal with issues pertaining to a particular use of the native tools caused by the native framework that is supposed to make your life easier.

I switched from using these Native development frameworks to actually using the native development tools because the learning curve associated with using a framework is longer ans steeper than just learning the native tools.

Simply put, learning Android is easier than learning Android as well as Xamarin.

The caveats with the native tools are still there of course, for example I won't be able to use C# with the native tools but as I said as a programmer I can manage the differences between C# and Java (which are many indeed).

It's worth noting that I'm writing this a couple of weeks after the announcement that Kotlin will be an official language for Android development and will be supported in Android Studio. Java is admittedly isn't very beautiful and the arrival of Kotlin could make Android development using a native language and tools a much better thing.

Viewing all articles
Browse latest Browse all 25

Latest Images

Trending Articles





Latest Images