It's worth mentioning that, since Android 2.3, you can make what's called a Native Activity[1] and circumvent Java entirely (as far as code you write goes).
It still runs in the Dalvik VM but you don't have to write a wrapper Java Activity - everything is C or C++.
For certain things, particularly opengl games, this can make a lot of sense.
[1] http://developer.android.com/reference/android/app/NativeAct...