What is the cloud?
Every one defines the cloud in their own way, here is my take on it. Companies whose main business is not Computer related, they outsource their IT work to some computer consulting firm. It is because IT is not their main business and some times it makes sense to hand it over. Similarly, for application development companies - the focus is application development, not hosting the applications. In addition to the application developers, they need to have IT people, hardware to host the apps. For some companies it makes sense to outsource the IT and hardware. In other words, you are outsourcing your application to a different company. Application outsourcing used to be to hosting companies, but that's changing to the cloud due to its infrastructure. The cloud makes it very easy to scale an app for rapid growth compared to the hosting companies. Cloud will take away all the hardware management and IT risks from you.
Why all of sudden?
Cloud is not new. Standard apps such as your personal email(Gmail, Yahoo Mail, and Live Mail etc) has always been there on the servers in the cloud. Lots of companies are moving away from in-house Exchange/Lotus Notes servers and outsourcing their mail to mail hosting companies. Slowly, the paradigm shifted from desktops apps to intranet hosted apps to SaaS (Software as a Service). Third party apps such as time tracking, project management, office, CRM, e-commerce became subscription based services. In other words, you don't have to install and manage these apps in-house, instead the service provider will manage these for you for a subscription fee. Now the paradigm shift is, moving the custom apps into third party infrastructure for a subscription fee. The "Cloud" buzz started when Amazon introduced EC2 and picked up there after by Google's App Engine and Microsoft's Azure. Since these companies use the high end sophisticated infrastructure with the help of virtualization software to run their apps and with the promise of running your app in the same infrastructure, boosted lots of companies to move their apps to the cloud.
Infrastructure as a Service (IaaS) vs Platform as a Service (PaaS)
IaaS clouds provides resources such as servers, connections, storage, and tools necessary to build an application environment from scratch. PaaS clouds are often within IaaS Clouds and provides required software, tools to support the complete life cycle of building and deploying the applications. Amazon EC2 is the truly an IaaS provider, as it provides the infrastructure, not the platform. Google App Engine, Microsoft Azure, Force.com, and Heroku are PaaS providers, as they provide the platform backed by the infrastructure.
Cloud providers
With Amazon EC2, you can install any thing you want in your virtual machines. EC2 gives you lots of control, but you still need to install OS, Web server, Web or Application container, Database and the whole nine yards that you do today for application deployment. It provides a virtual machine, and you are responsible for managing every thing inside the VM. This is very flexible along with the risk of managing everything. Best suited for Java in the cloud.
Microsoft Azure is purely for Microsoft related technologies. Azure is the development, hosting, and management environment with tools for Microsoft Visual Studio to enable the creation, building, debugging, running, and packaging of scalable services. It is not for Java, period.