Android using Java VM for apps — whatever!
I can’t be the only one who’s disappointed with Android using Java as its application layer environment, can I? I’d heard in advance they were doing this but kind of didn’t want to believe it. Sure, props to their team for deconstructing and redeveloping Java in a pared-down, supposedly extremely efficient environment they’re calling the “Dalvik Virtual Machine”, but Java as a technology is no less clunky and annoying today than it was before Android was announced. (You know what they say about lipstick and pigs…) And while it’s great Android’s got a lot more optimized frameworks than your average Java-capable device, a mobile multitasking Java VM app environment is never going to run as well as something coded native to the core OS; this is already visible in the video demo where some of the swipes, taps, and touch gestures present a far chunkier, less visually satisfying experience than the bar that’s been set by the iPhone / iPod touch. Yeah, I know, the software is early, but Google’s offering up $10m for developers to start working on Android apps, and before we get too entrenched in even MORE phones running Java I’m nominating the first significant Android app work be done on the redevelopment of a new, proper application layer.






You are far from the only person disappointed in the phone using Java. Why they would choose a bloated system over something nice and compiled like C or C++ is beyond me. I would much rather see a nice lightweight application built in C/C++ over some bloated piece of java.
In my opinion the only really good thing in Java is server side apps. That way the developer can control the entire environment from start to finish. JSP can do some amazing stuff, but so can PHP and ASP.
Comment by Zac Garrett — Monday, November 12, 2007 @ 2:59 pm
Google suggested this page for “Dalvik VM”, but I can’t leave your ill-informed biases unchallenged. How is Java clunky and annoying? It runs architecture-independent bytecode (which can deliver portability for app developers) in a sandbox that avoids buffer overflows and other cracks (which makes me trust applications more). As you acknowledge, Android lets Java applications call into various native code frameworks (SDL, WebKit, OpenGL, etc.); only time and real developer feedback will tell if Google got the layering right.
I just installed Opera Mini on my phone and the latest Eclipse on my PC, two fine Java apps that are far from “clunky and annoying”.
Comment by skierpage — Monday, November 12, 2007 @ 4:55 pm
skierpage, I’m not a developer — and I think you’re conflating accusations (wouldn’t I either be ill-informed OR biased?). Anyhow, it’s clunky and annoying because when you’re developing for a virtualized, platform independent app layer, you’re not directly taking advantage of your hardware and OS’s capabilities. Sandboxing mobile Linux apps without Java is feasible — desktop operating systems do it, and they don’t need 3rd party VMs to make it happen. Could everyone in the world run all their apps in Java VMs instead of dedicated Windows / Mac / Linux apps? Sure, but no one wants to, it’s not anywhere near as good an end user experience as you get when developers pick a platform (or platforms) and take full advantage of it when developing an app.
Opera Mini’s a great example. Sure, it’s a very decent Java app, but Opera for Symbian and Windows Mobile are both far better.
Comment by Ryan Block — Monday, November 12, 2007 @ 5:11 pm
Ryan, every application on my wonderful BlackBerry Pearl is written in Java (at least, every custom app - Google Maps, Google Talk, Gmail, Opera Mini) and I think the BlackBerry Pearl / 83xx series are the only smartphones, along with the iPhone once its SDK gets out the door, that balance functionality and ease of use well.
As for Windows Mobile - sure you can write C++, but the applications I use every day are written in Java or the .NET Compact Framework, which is just as sandboxed. But Windows Mobile is terrible when compared to the BlackBerry or iPhone user experience.
Suffice to say - Java+, which is what this is since it goes beyond J2ME to enable OpenGL and all the other hardware features that are part of the Android reference design, is more than able to cut it on today’s high-powered mobile CPUs. If Android can just get out of the way, more like the BlackBerry OS (whose existence you don’t even contemplate) and less like WM6 (which I curse every day for hanging, not managing multitasking well, and forcing me to shut down and restart on a semi-weekly basis), then it will have a chance at success.
Comment by Joel Barciauskas — Monday, November 12, 2007 @ 8:38 pm
“I’m not a developer — and I think you’re conflating accusations (wouldn’t I either be ill-informed OR biased?). Anyhow, it’s clunky and annoying because when you’re developing for a virtualized, platform independent app layer, you’re not directly taking advantage of your hardware and OS’s capabilities.”
You are not a developer, yet you are complaining about developer level aspects of the product (what language and application framework it uses). Every language out there but assembly provides an abstraction to the underlying hardware, this is missed by a lot of people out there. An operation system itself is already a layer of abstraction. Arguing against abstraction in something like this is a bit confusing.
If you take a look at the android API, they provide access for most of what you need to develop an app on a mobile phone. There is no reason why any bits can not be exposed, so I’m at a loss seeing how an Android app will be unreasonable restricted from accessing the capabilities of the phone.
Comment by Augusto — Tuesday, November 13, 2007 @ 12:04 pm
[...] feature Java and a native iChat/IM application. Does that mean that iPhone will be able to run Android? I wouldn’t hold my [...]
Pingback by The Apple Core mobile edition — Thursday, November 15, 2007 @ 8:35 am
totally unrelated to this post but,
Great Cameo in today’s Mahalo Daily.
Wonderfull line. “mmmm”
you snatched that grilled cheese like a needy child.
Comment by Tyler Howarth — Thursday, November 15, 2007 @ 10:09 am
Well, let’s say your bias is caused by you being ill-informed. As the other posters have said, every 3rd generation language abstracts the underlying bit parsing. If you’ve bothered to look at recent benchmarks, you’d know Java JIT performance is on par with C++ and occasionally approaches C. If you WERE a developer, you might understand just how much easier Java is to work with than most of the other languages you mention and how much more 3rd party open source support there is out there for it. As a business strategy, Google is very smart in leveraging a generally easy and egalitarian platform that taps into the GREATEST number of existing developers.
Comment by Alex — Monday, November 19, 2007 @ 10:42 pm
I think it would have been great if they supported the upcoming AIR mobile virtual machine.
Comment by taulpaul — Tuesday, November 20, 2007 @ 8:57 am
This accelerate the handset life-cycle which to keep the hardware maker happy. A business strategy.
Comment by hycone — Tuesday, January 29, 2008 @ 4:59 am
@ Taulpaul
If AIR runs anything on a mobile like good ol’ flash does on a mac, I strongly disagree.
I think we’re losing something important in this platform-independent craze… I’m not suggesting we go the way of the mac, but the hardware is so grossly different for all the mobile platforms out there that you can’t develop anything cross-platform without a slew of shenanigans.
I would liken this to the browser battle–i.e. how webkit/Safari/Mozilla-based browsers continue to support standards while Microsoft is quite happy telling everyone else to go kick rocks and f*** themselves while both the developers and users are made to suffer.
STANDARDS! PLEASE!
Comment by Adam — Monday, August 18, 2008 @ 4:19 pm