Smart phones such as Google's Android and Apple's iPhone have become popular devices for mobile applications. In particular, both devices allow the development of native applications that can take advantage of special purpose hardware such as accelerometer or GPS. While similar in capabilities, smart phones differ greatly in the way native applications have to be written for them. Google's Android is based on Java with an Android-specific set of widgets, while Apple's iPhone only supports Objective-C as the programming language of choice. In fact, Apple explicitly prohibits Java virtual machines on the iPhone per license agreement. Objective-C and Java are two radically different programming languages. While Java features strong typing and garbage collection, Objective-C supports dynamic typing but no garbage collection. In this presentation we will describe a technique how Java-based Android applications can be cross-compiled to native iPhone applications. We will demonstrate how Java can be cross-compiled to Objective-C and how the Android API can be mapped to the iPhone-specific Cocoa API. One specific outcome of our work is that native iPhone applications can also be developed in Java. Several demos will be given throughout the presentation. The source code is available under an Open Source license at http://xmlvm.org.
Arno Puder is an Associate Professor at the San Francisco State University. Prior to his current position, he worked for AT&T Labs Research and Deutsche Telekom AG. His interests include middleware, ubiquitous computing, and applications for sensor networks. He is one of the founders of the Open Source CORBA implementation called MICO.