An interesting fact about the new support for Java in the Google App Engine, is that it supports real, standards based Java; in other words it runs JVM bytecode. It might sound like something trivial, but it’s not. In fact, before the announcement many people had speculated that the Java support in GAE would be based on some sort of variant of Java. Maybe they would use only the Java syntax, but not the compiler.
See also Android: here it’s not the source code that gets translated to a target code, it’s the compiled JVM bytecode that gets translated to another kind of bytecode, the Dalvik executable bytecode. And the Dalvik bytecode runs in Dalvik VM, Android’s own virtual machine. Again, no trace of Java at runtime. Again, Java is used because of the existing tools and skills.
But apparently, it goes differently with the GAE. It runs true, standard JVM bytecode. It supports WAR deployment, JDO and JPA mapping, etc. This is already a good thing in itself, but there’s an added benefit to this, which is maybe the reason why Google choose to make it this way: it can run bytecode generated by the emerging galaxy of languages that compile to JVM bytecode or run in a JVM, such as JRuby, Groovy, Jython, Scala, and others.
That’s what you call killing many birds with one stone…