Is Cross Platform App Development a Good Idea?
Smartphones without apps aren’t very “smart”. Unfortunately apps and smartphones fall victim to the classic chicken-and-the-egg conundrum: which came first?
Without apps, a platform isn’t very appealing and won’t be picked by many users. Without a lot of users on a given platform app developers won’t devote much (if any) time to writing apps for said platform.
Microsoft found themselves in exactly this situation when they abandoned Windows Mobile in lieu of Windows Phone — and went from a bunch of apps to none overnight. Despite Windows Phone (arguably) being one of the easiest platforms to write apps for (thanks to Microsoft’s robust suite of development tools and skilled developers already using said tools), Microsoft reportedly paid for the conversion of apps from other platforms to their new ecosystem.
That’s one way to do it. Another way to redefine how apps are written so they can be easily migrated from one platform to another.
“Multi-platform environments such as phonegap or Enyo are designed to make developer’s lives easier by creating one code for all platforms. The problem is that one code will not take advantage of unique features of specific platforms, such as the metro interface of windows phone.” – Adam Doud
iOS, Android, and Windows Phone
Just in case you didn’t know, iOS looks different than Android, and everything looks different than Windows Phone. Though they share some similar actions, the entire user experience is different for each platform. Whether or not you agree with the differences is up to your personal preference. Unfortunately it means that every app must be custom crafted to look like it belongs on one platform versus another. Apps that are written using a one-size-fits-all approach using services generally have a look and feel that doesn’t “fit”. They’re clunky and look “off”. It doesn’t stop with aesthetics. The issues are more than skin deep. In addition to UI, apps plug in to various frameworks and take advantage of features and functionality that are built-in to the operating system. No operating systems do this exactly the same way.
Smartphone, Phablet, and Tablet
To make matters worse, we have all kinds of screen sizes and resolutions on our devices today. All of us have touch-screens. Some of us have keyboards. Others have styli. Combine all these and you’ve got a very “interesting” environment in which developers must live and develop for.
Some platforms are easier than others to develop apps that work across screen sizes and resolutions — but none are particularly “easy”. An app that looks great on your smartphone may look terrible on your tablet, or vice versa. Perhaps the developer opted to write two versions of the app, one for each size. Now you’ve got two of that app that you need to buy if you’ve got both devices or are switching from one size to the other. The developer thinks this is okay because he or she had to write the app twice and have two sets of code to maintain. You think it’s crazy because you already bought the app. Both of you are right.
Where do HTML5 websites fit in?
Adding to the confusion the rise (and fall?) of HTML5 websites. Sites built with modern web development technologies can look and feel pretty much like any other app that you’d run on your smartphone or tablet. They’ve got to send a lot more data across the line to be able to work right, they aren’t as responsive, and they generally aren’t written to work correctly when you’re not connected to the Internet.
What’s more, you won’t find these “apps” in your app store. Instead you have to find the site through your preferred search engine, then bookmark the site to your home screen, which isn’t convenient at all. To combat this some developers will write a mobile app that is simply a container for their mobile website. Facebook recently decided that wasn’t such a good idea and re-wrote their app using native code.
What about Java?
Hey! Java is supposed to fix all this! Write your code once and you can run it anywhere! Java runs on 10 bazillion devices, so you can write your app for Android and it will run on your digital picture frame or even your car stereo!
That’s the image Oracle tries to sell us, but in reality writing your code in Java doesn’t guarantee that it will run anywhere — let alone everywhere. What it does (virtually) guarantee is that apps will all be written to the lowest common denominator and will look terrible on every platform.
There are some apps written in Java that look good — but not many.
What about you?
Are you a developer? What platforms do you write your apps for? What tools do you use? Have you found any cross-platform tools or services that make your job easier? What limitations do they have? Let us know in the comments!