Most of the definition(s) of cloud computing highlight just one of its dimension i.e. scale of the application delivery. Cloud computing, they say, is about internet scale (millions of simultaneous connections)application access that is hosted at a WAN latency distance. While remote hosting is an important characteristic of the cloud, it is not really, IMHO, the most important one. Back in late 1990s, we experimented with hosting applications remotely. That failed. It failed because the programming model did not evolve to accomodate distribution of functionality across WAN latent connections.
In today's Web 2.0 world, we have new page elements which can be dropped into a page which invoke remotely resident applications. This document management inspired model needs to evolve into a programmatic model for real cloud computing to happen. Document management paradigm is not an evolution from object oriented paradigm that is dominant today. The efforts that went into discovering the most efficient way to migrate object oriented programming to the web got lost in the endless debates on SOAP vs REST, Sync vs. Async, Language vs. Description etc. etc.
What a programmer aiming to write to cloud really wants is a way to import a library (java package for me) which is resident in a SDK that is installed somewhere on the web. This way I can import any java package that is somewhere in the world and access any database that is hosted anywhere in the world and have a class object sitting in my local directory that I load into any JVM on any device.
May be it is time for Sun to create a J2CE (Cloud Edition). J2CE should not require me to download anything other than a Netbeans IDE that has built in well know SDK locations that are resident around the world.