Only today I've discovered that Google added support to Java for its App Engine
. This is a great news for the Java community. From the Google announcement:
This release includes an early look at our Java runtime, integration with Google Web Toolkit, and a Google Plugin for Eclipse, giving you an end-to-end Java solution for AJAX web applications. Our support for the Java language is still under development and we're eager to get your help and input.
Unfortunately at this stage there are several things you can't do using APP engine with Java. I found this interesting list on byteonic's blog:
1. Cannot write to the filesystem. Must use Data Store for persistence.
2. Cannot open a socket or access another host directly.
3. Cannot spawn a sub-process or thread.
4. Cannot make other kinds of system calls.
5. Cannot create a new java.lang.ThreadGroup nor a new java.lang.Thread. However, operations against the current thread, such as Thread.currentThread().dumpStack() is allowed.
6. The features of the java.lang.System class that do not apply to App Engine are disabled.
7. The System methods such as: exit(), gc(), runFinalization() and runFinalizersOnExit() do nothing.
8. Cannot directly invoke JNI code
9. Application is allowed full, unrestricted, reflective access to its own and JRE classes. However, An application cannot reflect against any other classes not belonging to itself, and it can not use the setAccessible() method to circumvent these restrictions
Moreover Google has published a page where all the Java classes unsupported has been listed: Will It Play in App Engine ?.