I just tried the Java version of Google App Engine
Very nice. I just installed the Eclipse plugin for the Java version of Google App Engine and created a new web app using JSPs and some static content. I have not yet tried using the JDO and JPA based Java persistence libraries (with Big Table being the underlying data store). The deployment was very easy. The application dashboard and administration web applications are well done and the people who wrote the Eclipse plugin did a very good job - really slick.
With free pricing for low volume web applications and moderate pricing once you go over the free quotas, I would bet that a lot of Java developers will jump off of higher priced Java web app hosting services. For my own use, it is an open question how much I will use this service. I really enjoy configuring Linux servers, installing just what I need. I lease two Linux servers for running Rails and Java web apps for customers, my own stuff, and general experimenting and fun. App Engine may be too "abstracted" of an environment for me - I may change my mind if it is easy to:
Use BigTable via JDO or JPA
Easy to assign my own domains to App Engine web apps (I am sure that it will be)
That response is good (the admin web application provides statistics to measure this)
It is easy to upload data into BigTable, and export it
Although I base a lot of my daily work flow around various Google services, I always do like to feel that I am not locked in. For example, I like that it is very easy to backup my GMail and Google Documents to my laptop. So far, I don't see why Java web applications can not be written in a portable way making it easy to run on either App Engine or my own servers.
I don't even know where to begin comparing App Engine with Amazon's EC2 because I see using them for rather different purposes. I have a lot of learning curve time invested in EC2, S3, etc. and no time at all using the Java version of App Engine but hopefully in a month or two I can make an informed comparison. Using EC2 seems closer to the metal in the sense that you need to design an architecture that deals with failing server resources. My first impression is that App Engine abstracts away handling failures at the application level - a benefit, but with a loss of flexibility. So EC2, for me, has more of a "build it myself" feeling. If you enjoy hacking/configuring Linux then EC2 would seem to be your best bet.