My money is on Mirah, a new fast, lightweight JVM language that feels like Ruby but compiles to identical-to-Java bytecode: https://github.com/mirah/pindah I don't think shoehorning existing runtimes is a suitable long-term approach.
Agreed. Something like Mirah, designed to run the the Java ecosystem from the ground up, makes more sense and brings along far less baggage. You lose the Python libraries if you go this route but I suspect you're mostly just going to be gluing together bits of the Android APIs anyway so it's less of a loss.
I am currently pulling my hair out just trying to get various activities to send stuff between each other. Doing this stuff in Javascript is so much easier with JSON and it's too bad there is no JSON equivalent for Java and the static typing doesn't help matters either so I can't wait until there is another option other than Java for writing applications.
It's funny. Half the time people claim Android's static typing is an advantage vs iOS and half the time people instead really hate it.
I have to say that now that I'm slowly getting over the verbosity of Objective-C I'm finding ansi C + a dynamic messaging layer to be a pretty nice combination on iOS. It looks like I'd have to work both below Java with the NDK (painful) and above it with some kind of scripting layer to get similar speed + flexibility on Android.
I started programming in dynamic languages like Javascript and Ruby so I'm really hating it. I have no idea how people manage to get anything done in Java. I was hoping generics would help me out but when I started using them all of a sudden interfaces started to pollute everything. I really wish palm/hp had more competent management because their webOS operating system is light years ahead of android/iOS.
I've lived both worlds. Java is strong where you have a large codebase with a team working on it. Even more if you have multiple versions of your platform running in different places and need to manage the code forward. Static typing is really useful for this stuff. I think single-person teams, or very-well-gelled small teams (who can all buy into a single syntactic style) are far more effective with dynamic languages.
actually there's a JSON library with the Android SDK ... check out this great document that describes a bare bones webview based android development path, sort of like phonegap but with thinner gloves: http://itp.nyu.edu/~sve204/mobilemedia_spring10/androidWebVi...
Ruboto still seems to have a few problems. According to the current faq on github[1], a "hello world" app currently takes over 3 mb compressed, and takes 10 seconds or so to start. (They're working on it.) So it works, but not really well yet.
Because it's .NET, therefore has to include the .NET library (to be of any use at all aside from a virtual machine). Or in this case, the Mono version of the .NET library. It's a big library.
I can't believe no one has mentioned Appcelerator Titanium yet (http://appcelerator.com). Titanium allows you to create Android applications in JavaScript. Even though its not python, for all the Java haters (and there are plenty) its drastically easier than creating an app in Java. Plus, its significantly faster than using a WebView (a la PhoneGap).
With Titanium you get access to all the native controls, maps, audio/video, camera, Facebook, and a _ton_ of other stuff. You can check out their Github profile for more info: http://github.com/appcelerator/titanium_mobile. Beyond the basic UI stuff, Don Thorp and his excellent Android develops have recently added the ability to use Android.R resources, intents, activities, services, notifications, and other advanced API's that you'd be hard pressed to find in an app developed via PhoneGap. Not only is it free, but you can use the same codebase (with some changes) to create an iOS (iPad or iPhone) app.
Unlike Mono Droid/Mono Touch, Titanium is 100% free.
if you do, could you write up a post about it somewhere and share? i'm not doing android dev, but making python viable really makes me want to try, and i'd be curious to hear more.
i haven't seen any word from anyone distributing everything together. most conversation is around an app that would need python (and probably even SL4A) installed separately and manually by the end user.
Still do not get all the Java hate--- it's plenty valid enough for Android dev-- and easy to use. Some people just like hating it because they think it's cool to do so. :)
I find both Java and the Android APIs ugly, overengineered and more importantly - boring! I'd rather write a webapp in HTML/CSS/Javascript than a native Android application any day.
What I'd like to see is applications for things like Android becoming packaged up "web pages", with platform-specific extensions to access the native APIs. Considering webkit/V8 are already bundled, it'd make a lot of sense...
I tried doing a simple application with Javascript + native hooks for the iPhone, using UIWebView + hooks to native functionality. I did it like that because the UI needed fast updates if available.
It was a horrible experience. Mobile Webkit is buggy and inconsistent and comes with restrictions; and trying to emulate the native look&feel ... it's like trying to provide a native look an feel for a Java AWT interface, running on top of IExplorer 6.
I don't see it happening, and I don't wish to see it happening. Just build the damn thing with whatever native platform the phone comes with, and leave the platform-specific extensions out of WebKit.
Isn't it up to the platform to give web applications the "native" look and feel, though? If an application is just standard HTML controls, it can't be difficult for (eg) iOS to make them look like iOS controls, surely?
If mobile webkit is as "buggy and inconsistent" as you describe, than I'd rather see that fixed than have developers write for a completely different language/API for each platform they want to target.
HTML/CSS/JS are open standards and supported relatively consistently across desktop operating systems and mobile devices. I just think it makes a lot more sense for each platform to expand that when they need to, rather than reinvent the wheel with, for example, their own button API every time.
I'm not an Android dev so I'm not positive, but can't you already do that with Android's WebView pointing to local apk assets and Java -> JS bindings to control the API? You don't totally escape Java, but it looks like you can really reduce it.
Java hate has nothing to do with being cool. I can honestly say that it is a horrible language because I have programmed in several dynamic languages and the amount of grief you have to put up with in Java to get simple things done is unbearable when you have seen how much easier things are in dynamic languages. How many people are developing missile guidance systems on android? Most people write small applications to automate some aspect of their lives and forcing people to use Java for that kind of stuff is just beyond me.
The title, to me, implies Google backing & compilation for Dalvik.