At the Ubuntu Developer Summit in Barcelona, Canonical has unveiled a …

Canonical is building an Android execution environment that will make it possible for Android applications to run on Ubuntu and potentially other conventional Linux distributions. The effort will open the door for bringing Android's growing ecosystem of third-party software to the desktop.

Google's Linux-based Android platform is attracting a lot of attention. The new version significantly improves the platform's reliability and could make it look a lot more appealing to carriers and handset makers. The availability of an experimental x86 port has caused some people to speculate that Android might have a place in the netbook market.

As we explained in detail in our article about Android's viability on netbooks last month, Google's platform is well-suited for phones and tablets but isn't ready for netbooks yet. Intel's Moblin project and Canonical's Ubuntu Netbook Remix are better suited for such devices because they provide a more netbook-friendly user experience, support running existing desktop Linux software, and have better compatibility with Atom chips.

Android uses the Linux kernel, but it isn't really a Linux platform. It offers its own totally unique environment that is built on Google's custom Java runtime. There is no glide path for porting conventional desktop Linux applications to Android. Similarly, Java applications that are written for Android can't run in regular Java virtual machine implementations or in standard Java ME environments. This makes Android a somewhat insular platform.

Canonical is creating a specialized Android execution environment that could make it possible for Android applications to run on Ubuntu desktops in Xorg alongside regular Linux applications. The execution environment would function like a simulator, providing the infrastructure that is needed to make the applications run.

Some technical details about the Android execution environment were presented by Canonical developers Michael Frey and Debbie Beliveau at the Ubuntu Developer Summit on Tuesday in Barcelona during a session hosted by Michael Casadevall. The developers have built a working prototype of the execution environment. They successfully compiled it against Ubuntu's libc instead of Android's custom libc and they are running it on a regular Ubuntu kernel. They intend to cut out Android-specific components that are not needed to make the software run on Ubuntu.

Android's sophisticated interprocess communication system, which is called Binder, requires a special kernel driver in order to run properly. The driver is in the kernel staging tree and is not enabled—a problematic impediment for the Android execution environment developers. Their current prototype is using a temporary workaround to bypass Binder, but they hope that the necessary patches can be enabled in the kernel for the next Ubuntu release so that the execution environment can work properly.

Another important part of the project roadmap is to develop a special interoperability shim that will expose native platform services and hardware to the Android execution environment. They have already implemented some of the infrastructure for this layer in library called libwrap. They are also exploring ways to make the Ubuntu filesystem partially accessible in the Android execution environment so that users can access their files and folders from Android applications.

There are obviously a lot of limitations and key features that are still missing. The project is at an early stage of development and needs a lot of work before it will be practical for use. Despite these limitations, the work that has been done so far represents a significant achievement.

The source code of the execution environment isn't available yet, but the developers plan to publish it soon. They hope that making it available and inviting the community to participate will help build momentum around the project and accelerate development.

As Android's platform gains a stronger following and attracts commercial software vendors, the ability to use Android software on a conventional Linux distro could be a significant asset for users and hardware vendors. It would also boost the inherent portability of Android applications, potentially making Android a more palatable target for some third-party application developers.

19 Reader Comments

More android apps would be awesome. However, I don't see the crossover appeal, unless you started getting tablet-sized netbooks running linux+android. The advantage is the touch interface, the mobile device exposure of geolocation services, and basically a device that stays with the user whereever you go. A desktop isn't going to have the same appeal going the other way.

I honestly don't see the appeal. And I'm seriously rooting for Linux/Android.

Honestly, though, I think time would be better spent developing integration between the apps, deprioritization of data, making info more portable between apps. Obviously, it's a lot easier to foster cooperation between two open source vendors than between Android and Microsoft or Android and Apple. But even if Ubuntu (and variants) developed better desktop integration for all the best services Android has, that would be more productive.

Most of the applications I use my Android phone for would be wholly unsuited for the Desktop. Or they exist already, like the web- or offline-based Gmail, GCal clients. My Twitter and Facebook clients are all readily available through Firefox. Googlemaps exists online. YouTube, music player. The best benefits of the phone are the GPS tracking and data available anywhere. But if I have this on a desktop (or even a netbook)....

I dunno. Maybe it's just because I don't see the appeal for Android on anything bigger than a tablet yet, but this seems like a waste of resources. Though it is kinda cool.

If android moves over to the netbook space, I really don't see java only cutting it any more. And frankly, why is the entire android development stack in java? There is no reason for them to lock out native languages like C or C++, and I'm sure it would be possible to port something like GTK or Qt over to android, so what's the problem?

Yeah, I'm sort of thinking "what's the point" about this, too. You know, being Linux, eventually someone's going to develop a virtual environment or emulator for such sooner or later. But devoting Canonical resources to this seems ... well, it just seems there's probably bigger fish to fry than this. This sounds like something a group of programmers would do as a hobby on the side away from their day job.

Originally posted by TheFerenc:And frankly, why is the entire android development stack in java? There is no reason for them to lock out native languages like C or C++, ...

I can think on one very good reason, platform independence. It doesn't really matter what hardware your Android machine runs, as long as it has the custom Android "Java" VM, you can run all the applications. This isn't possible with C or C++. Actually this is reason the Android applications can easily run on the Ubuntu Netbook Remix.

If you have Android apps you like.. why wouldn't you want to see them on your netbook or whatever? I'd much rather have a real desktop and android apps then just a android environment.

I am thinking of just using them as 'widgets'. Currently Widgets, that is the little self-contained applications things that you have suspended in a layer above your desktop or have in a side bar or whatever, in Linux suck balls. They are slow, buggy, and the people that develop them tend to be straight out of highschool and don't have their acts together yet.

Anyways this actually is a decent example of Cononical applying themselves.

I know that this may seem a bit counter intiative... but the Ubuntu folks really don't do a whole lot, development-wise, for the Linux desktop.

Most of the big usability improvements in the Linux desktop have come from people like Novell and their work with OpenSuse. They actually go out and do usability studies and work with usability experts time to time... Which Ubuntu doesn't do. Companies like Redhat are the ones that do the driver improvements and put time and effort into the Linux desktop, despite impressions to the contrary.

All the vast number of applications that Ubuntu has avialable in their repositories... that is all taken right out of Debian's Unstable repos for the most part. Maybe a recompile, but for 90% of their stuff that is it.

Cononical really doesn't do much of anything, development wise. They are not responsible for any driver development to speak of (besides the occasional bug fix). They are not responsible for bringing desktop search to Linux. They don't work on Network-Manager. They don't work on Packagekit, dbus, pulseaudio or most other things that are helping things. They are not behind Moblin, they aren't heavily into getting Gnome 3.0 out the door, or most anything like that.

What they do is maintain launchpad, maintain the forums, maintain their website, marketting themselves, and work on making the Gnome desktop more friendly. They do a small handful of things, like the upstart init system... but don't really compare to companies like Redhat.

That is not to say that I think is Ubuntu is ripping people off. Sure they get a lot of the attention, but that's fine. The fact that they can make Linux that much friendlier is a huge asset and they deserve all the credit for that.

Originally posted by TheFerenc:If android moves over to the netbook space, I really don't see java only cutting it any more. And frankly, why is the entire android development stack in java? There is no reason for them to lock out native languages like C or C++, and I'm sure it would be possible to port something like GTK or Qt over to android, so what's the problem?

Anyone know?

Java won't be the only supported language in the future, this is the advantage of using their own VM. The SDK only converts Java into Dalvik Bytecode, so Android doesn't run Java (this is how they bypassed Suns copyright) in the future I'd expect Google to add Python support and so on for the future.

There's also a Native Code Developer Kit in the works for a future update, but nothing has been stated regarding a release date.

Originally posted by TheFerenc:If android moves over to the netbook space, I really don't see java only cutting it any more. And frankly, why is the entire android development stack in java? There is no reason for them to lock out native languages like C or C++, and I'm sure it would be possible to port something like GTK or Qt over to android, so what's the problem?

* If Android tablets and netbooks ever take off, this will make software development a lot easier

* If Android tablets and netbooks ever take off, non Android Linux computers will be able to seamlessly run all the cool apps that are written for Android

* Some Android cellphone apps will make wonderful desktop widgets and applets

* ¡GAMES! Mobile gamelets will run fine, and maybe Linux desktops + Android desktops + Mobile Android will altogether be a big enough market to attract some more serious game development.

* Embedded computers: You get Android AND standard Linux for easy touchscreen interface development together with your own high performance C/C++ apps as well as all kinds of preexisting software building blocks (databases, numeric processing software, etc).

Java is safe and native languages are deeply, fundamentally unsafe. People "jailbreak" their iPhones, but that's just a cute way of saying that the iPhone is riddled with exploitable flaws. Nobody "jailbreaks" a BlackBerry or a G1.

I could see it as a testing ground what types of apps people want for desktops at no risk to the developers. Leading to developers seeing a market that could use a native app for easier use than an emulated version.

Or it could be building a bridge between ubuntu and android so that they can be used seamlessly. Syncing your Android phone with your desktop and since both will be hooked up to the internet and android already syncs with google, it's just one more level of integration.

Who needs Android? Synaptic is already awesome. Synaptic would make a great 'app store' platform, where you could type in your credit card details and purchase third party apps along side FOSS apps. Installation would be seamless, and support contracts would allow automatic updates for the length of the purchased contract. I think that would be great for Linux users, and developers interested in pay apps for Linux would finally have a decent way to distribute their apps.

I think this makes perfect sense. It means instantly expanding the pool of 3rd party software developers available, and providing a (hopefully) simpler and more stable platform.Of course it's not going to replace all native Linux apps (Open Office, GIMP, Firefox...) anytime soon, and some mobile apps won't make sense to run on desktop computers, but I can also see a lot of potential.

Well it's about time. I wanted to try Chrome when it came out. The linux version is still "under development". I tried running the windows version on wine only to have my desktop freeze. So after I installed windows 7 (explained later), I installed it right away, only to be sadly disappointed despite it being in its second version now.

I'm pretty sure the only reason they wanna get these Android apps running on mainstream linux, however, is because Dell might decide not to go with Android on its new tablet/netbook thingy, but linux instead. Even if it does, as popular as linux netbooks are these days (and google), it just makes sense for them.

Okay, since I wasted all my could've-been vista years using linux, I wanted to play some games with my new hardware as well as prepare myself for the new systems I'm sure I'll be working on within a year. Tbh, I'm sure win7 will catch on better than vista.