Introduction: Other Programming Languages
Developing new programming languages is a constant process in this industry. Several new (or not-so-new) languages have become popular recently: Erlang, Scala, Clojure, Groovy, C#, F#, and more. While the Apple approach on the iPhone has been to mandate use of Objective C and to ban (at least officially, it seems to be honored more in the breach) use of other languages, particularly JVM-style translated languages, Android positively encourages use of many languages. You can write your app in pure Java using the SDK, of course - that's the subject of most of the rest of the book. You can mix in some C/C++ code into Java using native code, using Android's NDK. People have made most of the major compiled languages work, especially (but not exclusively) the JVM-based ones. You can write using a variety of scripting languages like Perl, Python, Ruby, see Getting Started with Scripting Layer for Android. And there's more...
If you want a very high-level, drag-and-drop development process, look at Android Application Inventor, Google's own toolkit for building applications easily. At present these can't easily be packaged as apps, but this will probably come fairly soon.
Whether to use the standard SDK or to go the HTML/CSS route is a continuing debate. To view the pros and cons on both side, check out this DEVOXX presentation.
One of the key ideas in Android was to keep it as an open platform. The wide range of languages that you can use to develop Android apps testifies that this openness has been maintained.