Over the last few years, the growth of mobile devices presence has been tremendous.

Even though the devices sales seem to have slowed for the last year or so, their market share in terms of website visits keep increasing. In the the last 10 years, the percentage of websites are visited from a mobile device went from about none to over 52% (https://www.statista.com/statistics/241462/global-mobile-phone-website-traffic-share/)

Mobile Stats.JPG

In pace with that, the number of apps downloaded between 2016 and 2017 has almost doubled, from 115 billion to 197 billion and not surprisingly, the number of alternatives for developers to develop apps has also increased.

A few years back, time were simpler. Android apps would be developed in Java, and for iOS (and OSX apps) Apple had released Objective-C. Those so called “Native” apps would take advantage of the all the most recent developments for the devices and their operating systems and would provide the best performance for applications requiring a lot of power, such as video games for instance.

However, some alternative solutions quickly developed. In 2011, Microsoft came along and proposed a platform that would allow to write a project in in C# and deploy it on all mobile platforms at the same time. They called it Xamarin (https://www.xamarin.com). This was a great idea, but to this days, this has not proved been a very popular choice in the industry.

Then another version of the multi-platform idea came up. Why not make a mobile apps that would contain just a single web page, and use web languages to build the apps and put everything in it ? In 2013, Apache Cordova (https://cordova.apache.org) came along, that would allow just that. This solution proved itself immensely successful, particularly due to the fact that software engineers with a web background could easily transition to writing apps, instead of having to learn the 2 native languages. They would use tools and languages familiar to them, such as JavaScript, Html and CSS. The main drawbacks of this strategy however is the dependency on third party libraries needed to access some components like the GPS chip on the devices, as well as the lower performance due to the fact that they are a single threaded environment.

More recently around 2015 Facebook presented to the public the React Native framework (https://facebook.github.io/react-native/). This got a lot of hype going as it was shown you could build a great product like the AirBnb app. With that framework, developers would still use JavaScript as an implementation language, but then this would generate native code, and as such a real mobile app that's indistinguishable from an app built using Objective-C or Java. It has great features such as the ability to change one piece of coding and directly see it on the device without having to restart the app.

That said, some people are still reluctant to use React Native because it has dependencies on a many user maintained dependencies, and because historically Facebook had no qualms with suddenly pulling the plug on seemly successful technologies, like Parse.

Besides web languages, some evolution for the Native solutions came along. For iOS, the Native Objective-C language got replaced by Swift, and on Android, Koitlin replaced Java. Those new languages are powerful languages and a great improvement allowing developing better apps with less code and in less time. Furthermore those languages have been proven capable to be used as multiplatform languages, and it is now possible to write both iOS and Android apps with either Koitlin and Swift. Certainly, this is levelling the playing field.

It is unclear yet at this point where the scale will be tilting, however what is clear is that the battle is raging hard, and that mobile developers should be careful with not pigeonholing themselves in one particular language and make sure to update their skills frequently.

Read Next

Phases of Team Performance

12 June, 2018|4 min