Google Introduces Comprehensive, Standards-based Java Support in AppEngine

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.

Some Details

Google has designed the Java support for AppEngine to provide a full Java 6 JVM that can run bytecode. Gibbs was quick to mention that because the Java AppEngine runs bytecode, anything that can create bytecode will be able to run on this JVM including JRuby, Groovy, and Javascript. Much of the early reaction to Google's announcement has focused on the selection of Java as the next language, and much of this reaction misses the point entirely. It isn't that AppEngine will now support Java, it will now support Java in addition to the large collection of languages which have been ported to the JVM.

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 is releasing a Google Plugin for Eclipse. This plugin provides integration with the AppEngine SDK, Bowers could run or debug a local instance of AppEngine. The plugin provides a project creation wizard and the ability to deploy an application directly to Google AppEngine. In addition to the support for Google cloud computing offering the plugin also supports GWT, and makes debugging and relating the Javascript created by GWT to the Java easy and integrated into the Eclipse IDE. While the Eclipse IDE integration was impressive, most organizations that develop complex web applications use either Ant or Maven. The Google AppEngine pages speak of Ant, and it will be interesting to see what sort of build tools pop up to support Google AppEngine in the next few weeks.

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).


You might also be interested in:

3 Comments

While the Eclipse IDE integration was impressive, most organizations that develop complex web applications use either Ant or Maven.

I believe Eclipse and Ant or Maven are orthogonal options regarding developing complex web applications.

(Especially considering that you can also write PHP with Eclipse).

@foljs

Most organizations use a build system like Ant or Maven to build and deploy systems. In the demo, all we saw was someone using Eclipse to build and deploy a system to AppEngine. For this technology to be taken seriously in most development environments it is going to have to provide easy integration with both Ant and Maven. Ideally it will be able to work off the shelf with a dependency management framework like Maven or Ivy.

You should try the plugin. You could you use any dependency management framework in you development process and later deploy to the Engine with one click. Quick and clean.

News Topics

Recommended for You

Got a Question?