Since the forecast called for rain, Google hosted a "virtual" campfire on it's Mountain View campus last night to announce a number of new features for AppEngine and to give developers an early look at Java support in AppEngine. While the presentation included representatives from Oracle, IBM, and Appirio, the bulk of the presentation was given by Kevin Gibbs and Andrew Bowers.
Java support has been built around standards. If you write a Java application for Google's AppEngine, you will be writing standard servlets, accessing BigTable using JDO and JPA, interfacing with memcache via javax.cache, and sending mail through javax.mail. Gibbs and Bowers emphasized the fact that a Java application written for Google's AppEngine can be run in another environment entirely separate from AppEngine, and they backed up this assertion by asking Animesh Singh from IBM's Cloud Lab to deploy a simple AppEngine application to a local instance of IBM WebSphere. This is going to be a key feature for anyone currently developing a product that wants to give customers an option to deploy an application to Google's cloud.
Google: Firmly at the Center of Java
The demo was convincing and impressive, and I think Google is now firmly at the center of Java. They are a major contributor to the OpenJDK project, and they are deeply invested in the platform. The big change from yesterday and today isn't that Google's AppEngine now supports Java, it is that Google has solved the "deployment" problem that has haunted Java for more than a decade. Frameworks such as Ruby on Rails and PHP didn't become popular based on the line-level simplicity of the language or the aesthetics of the code; these frameworks because popular because they were easy to deploy and simple to develop. With the Eclipse IDE integration and the ability to quickly deploy a Java web application to provably scalable platform, more developers will have an incentive to write applications in Java. Without something like Google's AppEngine running Java, a developer had to provision an entire server on a system like EC2, install a JDK, setup and manage a Tomcat server. With Google AppEngine's support for Java, a develop can go from idea to implementation without having to suffer through the operational and deployment issues that come with "Write-one Run Anywhere".
If you want to see some early results of some experimentation check out Paul Hammant's comprehensive overview. Paul has been testing the early versions of Java support for a few months as part of his work at Thoughtworks, he has a good overview and critique of what works and what doesn't. (He also has some advice for getting GAE to work with Maven).