Definitely one of the better options, but not a miracle drug
I've spent the last several years working with Java and the last time I checked it was a language, not an OS. That said, Java is one of several excellent languages for cloud computing, not least because of the write once, run anywhere approach.
Cloud computing may, or may not, also be grid - I think these terms are getting confused. Cloud computing is simply running your (web) applications on infrastructure provided by somebody else, in essense a specialised kind of virtual hosting, while grid computing is more about maximising the usage of an existing hardware investment by deploying applications designed to run across many (non-identical) nodes is a seamless fashion. Grids do not need to be internet based or even exposed to the internet at all, although the best example of grid computing, BOINC (runs seti@home and folding@home), is.
The down side of a single language 'code and deploy' environment however is that by definition you need to be able to do everything in the language of your, ok, their, choice which in my experience is simply not possible.
If that were possible, integration and deployment of non-cloud applications would be a whole lot easier in the first place and people would be more willing to run their own systems. Java certainly goes a long way to simplifying integration but even nowI still see Java apps being stiched together with cron jobs, ad-hoc shell scripts and other tricks designed to keep costs down - and not always because it can't be done in J2EE, but also because it is cheaper and quicker to put together something else.
The advantage I see to the Amazon approach is that you essentially get a virtual server, and while that means that deployment and configuration are more involved, it also means that you have more flexibility on how to deploy and configure and the tricks you'd use in your own dedicated environment will still work.
Overall the main issue I see with putting applications in the cloud is that, for a business, web applications tend to be surrounded with secondary applications and utilities that need to interact with the online ones to support end-to-end business processes. Restricting cloud applications to a language runtime only will make it harder to achieve tight integration with the resultant danger that the technical platform starts to drive the business processes rather than the other way round.
That would be a big step backwards because it is only in in recent years that the technical restrictions of available platforms and languages stopped dictating business processes. I don't want a return to the days when I had to explain to an IT director that the business process is great but the technical platform can't support it.