For information on a particular
framework, language, or library, please search for its name on this page. If the item
you are interested is not listed, has incorrect information, or you
have a fix for a reported issue, please add a comment to the page.
Java Enterprise Edition (Java EE) Technologies
Supported
While we do not support the entirety of the Java EE specification, many of its individual components are supported. These include:
** JSF 1.1 appears to be working out-of-the-box. JSF 1.2 and JSF 2.0 should also work if you set the com.sun.faces.enableMultiThreadedStartup context parameter to false to your web.xml file. Setting this parameter to false (it's set to true by default) will prevent additional threads from being spawned. For more information on running JSF 2.0 in App Engine, see this Site.
*** JSP session beans are not supported; to enable EL parsing, add <%@page isElIgnored="false" %> to your JSPs and <%@tag isElIgnored="false" %> to your tag files.
Not supported
There are various APIs and technologies that are not supported by App Engine at present for various reasons. These include:
Enterprise Java Beans (EJB)
JAX-RPC
JAX-WS
JAXB
Java Database Connectivity (JDBC) **
Java EE™ Connector Architecture (JCA)
Java Management Extensions (JMX)
Java Message Service (JMS)
Java Naming and Directory Interface (JNDI)
Remote Method Invocation (RMI)
** App Engine's underlying datastore is based on BigTable, not a traditional SQL-based RDBMS like MySQL or PostgreSQL. You may either use the low-level datastore API or the JDO or JPA object-relational mapping interfaces provided. Various JDBC wrappers are available for the datastore, and you may still be able to connect to in-memory databases such as the H2 database engine or HSQLDB.
JVM-based Languages
NOTE: All JVM-based languages are subject to the same App Engine sandbox restrictions as Java.
The streaming API added in version 1.2.1 works out of the box.
The traditional API is not supported due to dependencies on java.io.File (App Engine does not expose a writable file system), although a custom FileItemFactory implementation that does not rely on writing files should work.
Apache HttpClient Version: 4 Status: COMPATIBLE
Requires a custom ConnectionManager that wraps UrlFetch. Details are here and here.
Google Data (GData) client library for Java Version(s): all Status: COMPATIBLE
As per this FAQ, you need set a specific configuration error to avoid a runtime permissions error. Otherwise, you will see java.security.AccessControlException: access denied (java.net.NetPermission getCookieHandler) when you try to use the library.
Google Web Toolkit (GWT) Versions: All Status: COMPATIBLE
A plugin has been made available which integrates the App Engine SDK with Grails, adding features to upload Grails application automatically and run the local dev server. To download this plugin or see a screencast and tutorial, see http://grails.org/plugin/app-engine.
As of now, you have to use the "grails app-engine run" command rather than "grails run-app", which blocks other plugins that extend run-app including the GWT plugin. More incompatibilities noted in this thread.
You cannot currently use Hibernate directly. The differences between the App Engine datastore and SQL were too great to get the standard Hibernate up and running under App Engine. App Engine does support JDO and JPA, so you may be able to convert your Hibernate code to use one of these ORM interfaces.
Jersey does not run in App Engine's production environment out-of-the-box, but you can make some modifications to get basic uses working. Several of these are documented at http://lqd.hybird.org/journal/?p=123.
log4j Version(s): ? Status: COMPATIBLE
MyFaces Version: 1.1.6 Status: COMPATIBLE
OpenSocial client library for Java Version(s): 20090402 Status: COMPATIBLE
Version 5.1 appears to rely on the Woodstox XML processor, which in turn relies on javax.xml.stream.XMLInputFactory, which isn't on the current JRE class white list. No workarounds are known at this time.
<%@tag isElIgnored="false" %> didn't compile to me
<%@tag isELIgnored="false" %> with capital L did
Nov 21 2009 by Lucas Cavalcanti
Hi,
VRaptor3 (http://vraptor.caelum.com.br/en) also works on GAE, with few
customizations that can be properly downloaded on google code:
http://code.google.com/p/vraptor3/downloads/list (Blank project for
google app engine).
Add VRaptor 3 to this page, please.
Thanks,
Lucas
Nov 22 2009 by Lucas Cavalcanti
Hi,
VRaptor3 (http://vraptor.caelum.com.br/en) also works on GAE, with few
customizations that can be properly downloaded on google code:
http://code.google.com/p/vraptor3/downloads/list (Blank project for
google app engine).