My tale of woe regarding my past experiences with Android got a lot of responses from our ZDNet readers -- some of which was the usual partisan griping, but some of which was constructive. One of which was "Maybe you should try a newer version of Android."
As I mentioned at the end of that piece, I was willing to try Android on a tablet again.
I have no room for Android smartphones in my technology stable -- I pay for a total of three lines on AT&T -- an iPhone each for my wife and myself, and I keep a secondary line for my Nokia Lumia 1520, so I can keep up with developments on Windows Phone and use it as my primary business mobile device.
Up until a few months ago I also owned a Google Nexus 10, which I bought back in November 2012. At the time, it was the state of the art in Android tablets, as well as being the "Nexus" flagship, and it was being compared favorably to the 4th-generation iPad in terms of processor capability as well as display quality.
Being a "Nexus" it was a safe assumption that this was a tablet that was going to be updated on a fairly regular cadence. It shipped with Android 4.2 Jellybean, received an interim 4.3 update in August of 2013, and eventually, about a year after the product's release, in November of 2013, received a 4.4 (Kit Kat) update.
This last update introduced some significant stability and performance issues.
Mind you, I had my issues with Android stability in the past with older Android tablets, but I had some hope further updates would resolve the situation. Eventually I came to the conclusion that many of Android's problems are systemic due to the overall architecture of the OS, and this has been my opinion for quite some time.
This last Kit Kat update on the Nexus 10 in my opinion slowed the device down and made it more unstable, and it caused problems with a lot of legacy Android apps that weren't intended to run on that version -- many of which were not updated to take advantage of it for quite some time afterwards.
My frustration with the Nexus 10 was significant enough that I basically left the device to collect dust.
I contemplated experimentation with alternative Android builds such as CyanogenMOD as I had done in the past, but these days, my time to mess around with this kind of fringe stuff is limited and anything an enthusiast rather than a business professional or an IT shop would use is effectively out of scope in terms of what I am focusing on now anyway.
I have nothing against the CyanogenMOD team and other folk that work on projects based on AOSP -- they do some very cool stuff. But for me it's either official firmware or its nothing -- the same reason why I don't "Jailbreak" my iOS devices either.
A few months ago a close friend who was using an old iPad 2 and wanted to take more advantage of some of the newer apps out there asked if he could take the Nexus 10 off my hands. I told him I was happy to lend it to him for as long as he liked.
Recently, he bought himself a new iPad Air 2. I asked him if he'd be willing to bring me back the Nexus 10 so I could try Lollipop (5.0.1) on it to see if things have improved over the course of a year, and to make good on my promise to try Android with a current version of the OS.
So for the last few days I've been using the Nexus 10 with Lollipop. Where to begin.
Google has done a good job over the last few releases addressing UI consistency issues across the phone and tablet. That being said, I still find the stock Android UX "geeky" and not particularly user-friendly, and not much has actually changed in the overall UX since Jelly Bean beyond some basic visual tweaks.
Android regardless of vendor implementation has always had a higher learning curve than iOS, and that's not going to change anytime soon. But this is aesthetics.
What I was hoping for was better performance and stability, given that the "engine" that powers Android has been completely overhauled. In Lollipop, all of the OS's Dalvik underpinnings have been replaced by what is now called the Android Runtime, or ART.
In the Dalvik VM, the application (which is written as bytecode using Java syntax) is compiled and executed just in time (JIT). ART, on the other hand, compiles the code during the installation process ahead of time (AOT) and then when the application runs, it is executed natively within ART afterwards.
This during-install optimization in Android Lollipop is supposed to reduce what has often been referred to by many Android developers and end-users as "Android lag".
I can't say for sure how many of Google's own apps, let alone 3rd-party Android apps written originally for Dalvik have been optimized for ART.
Apps like Gmail, Google Plus, Inbox by Gmail, Google Play and YouTube run quite responsively. If any of these have not been ART "Optimized" I have no way of knowing.
Most Android games do not make use of ART (or Dalvik) because they are written to the NDK, or native development kit. Which is to say that they use C++ libraries, pre-compiled executables and not bytecode.
Therefore at the end of the day, your game's performance depends entirely on how tightly you have coded it, what system resources are available when it runs, and how fast the raw hardware is in terms of CPU/GPU.
Games like Candy Crush which are more or less Android version agnostic run fine -- because they are NDK, and while there have been numerous iterations of NDK to reflect newer versions of the GCC compiler suite, the core API hasn't really changed for years.
But a lot of apps written for earlier versions of Android for Dalvik that inhabit the bowels of the Google Play store? Not so much.
One of the apps I've been having problems with on Lollipop is Acompli, which is an excellent multi-platform Exchange client that was recently purchased by Microsoft.
The app runs great on iOS because it's written in native XCode. But clearly the developers have not had time to test the Android version with Lollipop's ART yet, because it crashes a lot, especially when you attempt to use the Acompli widgets on any of the home screens.
[Note: The Acompli stability issue appears to have been resolved in a December 24 software update.]
So stability of legacy apps written for Dalvik is going to be a problem until every single application developer runs a barrage of QA tests on ART and performs the necessary optimizations.
This is a nightmare because not only do you have to be concerned about different versions of Android in the wild and how they behave on different OEM devices, but if you wrote for Dalvik in bytecode, now you have two completely different target execution environments.
It's bad enough that hundreds of thousands of Android apps aren't properly optimized for use with tablets to begin with -- a problem that is supposed to be solved by updated apps written using Material Design guidelines.
Because of this, I now have apps running in Lollipop which not only crash/abend because they were never optimized or properly QAed for this new version, but will also bring down the entire Android UX as well, often requiring a reboot to stabilize.
Just in case the fanboys are ready to pounce on this tidbit -- yes, apps do crash on iOS from time to time, particularly in low-memory conditions. But bring the entire OS and UX down with it?
I've never seen this happen on iOS. Ever.
Having to optimize all that stuff to runs smoothly in the new execution environment is going to be a doozy, particularly if you are a developer that has an app of any sufficient complexity.
One of the other things I found myself greatly disappointed in with Lollipop was the overall performance of the mobile Chrome browser.
I don't know if Google optimized it or not for ART, but it's just as slow and unresponsive as it was on Jelly Bean -- zooming in and out of web content is utterly painful on many web sites. Scrolling itself is terrible.
This could very well be a symptom of the Nexus 10's under-powered GPU. But a number of other developers who own the Nexus 9, Google's latest and greatest tablet, have corroborated with me that even their tablets are laggy, particularly with Chrome.
So, I'll continue to monitor developments with Lollipop. But as far as I am concerned it's still got systemic issues that aren't going to be resolved easily or quickly.
What Android apps are still problematic for you on Lollipop? Talk Back and Let Me Know.