'Now' is the best time to learn Java on Android
Mon, 3 Dec 2012 23:55:01 +1000
By: gosh'at'DigitalFriend.org (Steve Goschnick)
Why is 'now' the very best time to learn Java on Android? Let me count the reasons:
- Counter-intuitively, Version 4 of Android is the right time to learn Android - as you will have saved yourself much grief in the earlier renditions of the OS. The previous V3 version of Android was a forked version specifically for tablets and larger screen devices, hence, Android phones typically ran V2.x in the recent past, while tablets typically ran V3.x. However, Android V4 is a whole new ball-game now, with Android smartphones, tablets and even GoogleTVs all running the unified Android V4.
- Massive daily growth. The Android smartphone is the best thing that ever happened to the Java language and Java programmers in terms of sheer market potential. Google reported at their annual I/O conference in June this year, that the number of 'brand new' Android-based devices that are turned on each day, is now over 1,000,000 (one million) per-day, day in, day out. These numbers and that growing popularity make the Android UI the de facto standard user interface to Java that the application program developer should learn. Over 500 million devices use it so far (as at Sep, 2012), the vast majority issued within the last 3 years.
- Surprisingly, Google only came up with a proper set of UI Design Guidelines for Android, with the release of their V4 of Android - better late than never. See: http://developer.android.com/guide/practices/ui_guidelines/index.html I.e. Google themselves have finally demonstrated their own inner confidence that Android is now considered a long-term, multi-device (phones, tablets, TVs - everything) OS. I.e. Where once they touted Chrome OS as their envisaged OS for tablets and larger screens, now its all Android, Android and Android. [Note for existing app developers: the latest incremental version of V4 also has some useful app performance analysis tools: http://www.curious-creature.org/docs/android-performance-case-study-1.html]
- Google's big gamble. Google took a calculated risk in basing the main programming language for Android on the Java language, which was largely controlled by another company - Sun Microsystems - as the syntax of a modern language and its APIs are heavily intertwined these days. When Sun was purchased by Oracle, a long legal battle ensued between Oracle and Google over the use of Java within Android, with Oracle seeking billions of dollars in claimed damages. In May this year, Google won a stunning victory regarding how it used the open Java language, without using other proprietary parts of the Java platform. (see: http://www.groklaw.net/article.php?story=20120531173633275). This victory caught many mainstream IT commentators off-guard (not to mention rival companies), such that programming in Java on Android is currently a much under-appreciated skill set right now. It will be a very valuable skill over the coming few years in particular, before the mainstream universities and corporate training organisations realise just how ubiquitous Android has quickly become (i.e. good teaching programs usually lag such a shift in the marketplace by several years).
Android has quickly become the premier platform for the Java programming language, with regard to making applications with modern user interfaces, on touch-screen devices, including smartphones and tablets. In doing so, the Android UI is now the Java UI that app designers and programmers should target wrt enhancing their skills.
The User Interface and Java
Java has long been a great language to learn the art of programming, but, until Android, there was not a mass-market of high-resolution screen devices that embraced Java as the primary language to program it. While Java has been around since 1996, Google only popularised Android smartphones as late as 2009 - arriving first on the HTC Magic smartphone with a 480x320 pixel screen (HVGA, matching the iPhone3 screen-resolution wise). Now, Android dominates smart-phone sales worldwide, and they are gaining ground daily in the touch tablet/device market too:
- Historically, looking at Java wrt the mainstream user interfaces:
- Microsoft never really embraced the language, so Java applications were always the poor cousin on Windows machines (e.g. try double-clicking an executable .jar file on a Windows computer chosen at random)
- The pre-smartphone phones based on the down-sized Java ME, didn't really have/exploit the large pixel counts available on modern devices. I.e. ME shines on small-screen technology (in a Palm pilot PDA-led world), but we are now in a high-pixel screen iPhone-led world.
- While Apple did embrace Java on Mac OSX desk/laptop for some long time (2000 to 2010), in recent years they have been removing themselves from providing Java tools and UI technology on Mac as-fast-as-possible, as they entrench Apple development upon the Objective-C language. So Java is now the poor cousin at Apple too. (e.g. try running a Java JDK7 app on a Mac with a Retina display, or, a JDK7 app on Mac Snow Leopard or earlier (in popularity and retention, this version on iMac is analogous to Windows XP); or, any Java app on an iOS iPad or iPhone)
- Even the newest Amazon Kindle Fire HD (released in September 2012) is running Android V4 (N.b. the original Kindle Fire defiantly ran version 2.3 rather than the forked tablet specific V3 version).
- You can easily port your Android applications to RIM's BlackBerry Playbook and the forthcoming (early 2013) BlackBerry10 Smart Phone - in fact, RIM will currently port (some of) them for you! See: http://crackberry.com/rim-porting-app-world-playbook-apps-blackberry-10-developers Note: Whether Facebook or Oracle or even IBM buy out RIM in the future, or not, BlackBerry definitely has a future.
- There are at least two approaches to putting Android on the TV set too: GoogleTV, which is already inching along in consumer-land; and the forthcoming Ouya, a video game console that plugs into HDMI flat-screens - the current darling project on the KickStarter site, having raised over $8 million in pledges in record time, see: http://www.kickstarter.com/projects/ouya/ouya-a-new-kind-of-video-game-console
So, if you take into consideration these five things together:
- Android consumer devices really represent the first mainstream OS coupled with decent screen resolutions, where Java is the primary programming language;
- The recentness of Googles legal victory regarding how it uses the open Java programming language within Android;
- The fact that Android V4 is really the first mature version of Android destined for all-sorts of devices replete with a newly published set of UI Design Guidelines;
- The fact that over 1 million+ newly purchased Android devices are turned on each and every day (with built-in access to app stores);
- That the vast majority of universities and training organisations teach Java either on backend servers (i.e. no user-interface, or using web-page interfaces), or on the desktop (e.g. Swing applications) - if at all.
Then you should appreciate what most people in ICT right now do not: that now really is the best time to learn Java on Android.
[P.S. If your university is teaching Java on Android, drop me a line and a link, and I'll give it a mention here.]