I have had an application running on Google App Engine written using the Java SDK for about 2 months now. The server side of the application is written in Groovy, and the client side is written in Flex. Although the Java SDK is early access, I have run into some problems that are making me consider moving the server side back to Grails and paying for Java hosting.
The first issue is downtime. The application has been down twice for many hours in the 2 month period. This is due to outages in GAE, which I can tolerate as long as it’s an early access look, but having an application down for hours at a time is not acceptable for the users of my application.
The second issue is with sessions. This post describes why sometimes there have been random session errors that “forget” about the user’s session in my application.
The third issue is with performance. Datastore operation execution time is not consistent, the same operation will take 200 milliseconds at one point in time, and 15 seconds another, with no difference in data size. One of the primary reasons to use GAE is for scalable, fast applications. If operations are behaving this way when a single user is logged in, how well will it behave with 50,000 users, or 500,000 users?
The fourth issue is no way to do case queries against text fields in the datastore similar to LIKE in SQL, or even regex matching. This makes it hard to do certain types of queries, like case insensitive search. I have not yet found a workaround that will perform reasonably.
Besides those issues, the GAE has been a pleasant experience. Deployment is simple and free hosting is nice. I hope that some of the reliability and datastore issues are fixed soon. Perhaps I would have better luck with the Python SDK.