A few years back I wrote an article for O`Reilly
covering the advantages of cross platform over native OS code. Almost 3 years have passed and a lot has changed
in our industry so I wanted to re-examine how this impacts my perspective on cross platform vs. native.
I can sum up the sentiment in a single sentence: “Cross platform is both more essential & more practical than ever before!”.
Flat Design Simplified Portability
Both iOS and Android applications are far more similar. Google releases material design applications for iOS without
major backlash as they don’t look out of place. Yes there are still platform sensibilities to take into account but
they are far fewer than they were three years ago.
Flat design removed the clutter from applications making the functionality & clean design front and center. This
is wonderful for WORA tools. The focus on functionality allows WORA tools to reuse code and gain on native
developers.
Native Backlash
Users would often complain about sub-par performance of WORA tools. This has been mitigated on two fronts.
The tools themselves have improved by leaps and bounds, Codename One is far better than it was in 2013 and
other tools in the field have also improved tremendously.
But the bigger change is in user sentiment, for every user who complains about “nativeness” you have another
user complaining vigorously about their platform not getting the same treatment. E.g. dropbox who has pretty good
native iOS/Android apps recently released an iOS app update that included a great feature: “Scan to PDF”.
This feature would be very useful for me on Android but a quick search revealed that it isn’t available yet and that
the community is pretty mad about this.
This is about an Android port from a unicorn company that doesn’t lack for resources!
Some people will always complain about an app that doesn’t look good or isn’t responsive but a lot of users
who don’t understand the technical details associate the word native with “fast, good looking & responsive”
which you can achieve without recoding the app 2-4 times…
Rise of Windows 10
Windows Phone is dead but Windows 10 is rising. In fact Microsofts surface is
leading in the detachable keyboard tablet space.
This specific segment is hugely important in the corporate world where access to legacy Windows software
is crucial.
This means we now need to deal with 3 prominent platforms and stores instead of 2 (ignoring the Kindle or
similar Android stores for simplicity).
Coding your app twice might have been reasonable but doing it three times and requiring two separate machines
(Mac and Windows) isn’t as practical.
Stability/Stagnation in Mobile OS’s
Mobile changed very quickly in the past but over the past few years it didn’t innovate as much. Google & Apple
spent resources on watches, cars & glasses all of which didn’t take off. Mobile phone apps refined but didn’t change
in a fundamental way, this is good as a stable platform is much easier to track for cross platform developers.
As I mentioned above platforms converged a lot. This is obvious in the UI level where iOS, Android & Windows look
more alike every day. But it’s also important in the underlying behavior.
Android was remarkably flexible when it launched allowing background services to do just about anything. iOS was
far more restrictive, disallowing multitasking altogether in its initial launch.
Both yielded to a common middle ground. Android placed restrictions on background processes to prevent wasted
battery with project doze. iOS added support for many use cases which are still not as flexible as activities and
services but provide almost all of the commonly needed use cases.
Permissions and security also saw a similar convergence where Android shifted it’s over complicated and misunderstood
permissions system to one that is more similar to the one iOS has.
These convergences make WORA (Write Once Run Anywhere) far easier as they allow developers to run get a similar
experience (e.g. permission prompts) across various devices.
Final Word
Let’s be clear, if you pick a WORA solution. Any WORA solution. Some purists will notice and complain.
If you miss a feature or even an entire platform people will complain.
In the past a customer asked me “lets assume I have all the money in the world and no restrictions, should I use
native or Codename One?”.
I gave the obvious answer and it stems from the Tao of programming :
A manager went to the master programmer and showed him the requirements document for a new application. The manager asked the master: “How long will it take to design this system if I assign five programmers to it?”
“It will take one year,” said the master promptly.
“But we need this system immediately or even sooner! How long will it take if I assign ten programmers to it?”
The master programmer frowned. “In that case, it will take two years.”
“And what if I assign a hundred programmers to it?”
The master programmer shrugged. “Then the design will never be completed,” he said.
The more resources we have the more time things take and the bigger the disaster (e.g. JavaFX). WORA tools
allow us to focus our attention on the product and the user not on the politics of Apple, Google or Microsoft.
2 Comments
Nice points Shai, no matter the tools you use some users will still complain.
For me, its better to deploy on multiple platforms using WORA tools like Codename One rather than being stock in one platform with native. Though it depends on the scenario and who makes the decision.
I enjoyed reading the Tao of Programming you referenced in this article, having read Tao Te Ching, the tonality was similar, it was fun and educating at the same time.
Thanks for awesome service and keep it up guys!