Wednesday, April 8, 2009

Java on the AppEngine

Google has released support for Java on the AppEngine.

Here are some areas that really interest me:
Languages:
Since the support is at a Java Platform level, other languages like JRuby, Scala, Clojure, Groovy will be able to run on the AppEngine.

Enterprise Support:
AppEngine has been around for about a year with support for python. Typical usecase of AppEngine was simple webapps (backed by Google's BigTable). There was no support for batch jobs and no support for bulk loading of data. Yesterday's announcement provides support for those two and includes support for a Secure Data Connector that lets you access your enterprise's data that is present behind a firewall.

There were rumors about Java support on AppEngine for a few weeks now. Typically, AppEngine's features are aimed at a much higher level on the technology stack. If you look at python support for AppEngine, You will notice that it ships with a custom web framework that you can use to deploy applications. Java's support comes at a much lower level. It is much closer to the Servlet and JSP specification. These are not the exact tools you would choose to run your web apps in Java these days. Looks like Google has been counting on enabling developers run popular web frameworks on top of AppEngine. They have been working with people from the Java community enabling them to build support for AppEngine in their products.

I have been playing with the java support in AppEngine, it integrates very nicely into Eclipse through a plugin, supports a one click deployment. Not that you will want to deploy to your production server from Eclipse ;-) But, developers can deploy to their dev versions of the application using it.

Here are some quick stats on the environment that your programs will be running in:
Environment:

java.specification.version=1.6
java.vendor=Sun Microsystems Inc.
line.separator=\n
java.class.version=50.0 (I use a Mac OS X, AppEngine supports both Java 5 and Java 6)
java.util.logging.config.file=WEB-INF/logging.properties
java.specification.name=Java Platform API Specification
java.vendor.url=http\://java.sun.com/
java.vm.version=1.6.0_13
os.name=Linux java.version=1.6.0_13
java.vm.specification.version=1.0
user.dir=/base/data/home/apps//1.332645749880898171
java.specification.vendor=Sun Microsystems Inc.
java.vm.specification.name=Java Virtual Machine Specification
java.vm.vendor=Sun Microsystems Inc.
file.separator=/
path.separator=\:
java.vm.specification.vendor=Sun Microsystems Inc.
java.vm.name=Java HotSpot(TM) Client VM
file.encoding=ANSI_X3.4-1968

Other Properties:
availableProcessors: 1337 (humor ;-)
totalMemory: 104857600 (bytes)
maxMemory: 104857600
freeMemory: 6293011

I definitely intend to dig deeper into Java(and other JVM languages) on the AppEngine, and I'll be blogging my experiences as I go. You've been warned ;-)

No comments: