The world is mobile. No surprise there. Ever since Nokia introduced Snake on the 3310 model, people have been glued to their mobiles. While the rise of smart device usage is clearly visible around us, statistics show the bigger picture in better colors.
For everyday users, smart devices are mobile solutions for net surfing, social networking and entertainment on the go. On the other hand, larger companies usually take smart device a little more seriously. Most major companies either develop or outsource development for mobile software in order to streamline their workflow, especially since accepting the BYOD system. However, due to the fact that the mobile device market is divided (mostly between Android and iOS), cross-platform development has become a necessity in order to ensure that a product has greater usability.
There’s no point stating that native development will always bring out the best results but, depending on the project, there might be a quicker way – namely a cross platform development framework.
What gives these frameworks the ability to work cross-OS?
For example, PhoneGap bypasses the OS barrier by using web technologies (HTML 5, CSS3 and JavaScript) and displaying the content in a web view. The now unmaintained (but still up to date) MoSync allows programmers to code in C/C++ in conjunction with HTML5 and JavaScript. You basically develop an enhanced website.
While this approach might seem quick and easy, there are some limitations that might cause project setbacks, if not taken into consideration early on in project planning.
Limits?
Essentially, because they add intermediary steps between the application and the OS, obtaining a decent performance is a big problem, that generally can’t be overcome and ultimately gets neglected. Even after some optimization, the UI may still be lacking compared to apps built natively.
Additionally, the frameworks don’t instantly give you access to all of a device’s features. Depending on your end goal, additional plugins and tools will be required in order to access different device features, such as the camera or microphone. This usually leads to performance issues. Keep in mind that every addition slows down the app a little more, unless it’s done right.
Another disadvantage of using cross-platform development kits is that, as the OS running your app evolves, the communication bridge that the toolkit provides may have unexpected behavior on subsequent OS updates. The app will generally behave according to specifications as long as the OS (or the main components used from the system) don’t suffer a major overhaul. What you save in development might be lost in maintenance work.
Keeping the drawbacks in mind, there are still plenty of reasons why cross platform development for a lot of apps is handled this way. The major advantage is that there’s no need to adapt the code from Java to Objective C, since the app can be compiled directly either for Android or iOS. Additionally, once you have some experience, development times will be drastically reduced. Depending on your target, this approach might just help put your products on the map months earlier (than if developed natively). But you shouldn’t think of these frameworks as the solution to every problem. In some cases, there’s just no replacing native development for mobile apps.