Amazon Elastic Compute Cloud commonly referred to as Amazon EC2 is the core of the Amazon Web Service (AWS), the most advanced and popular cloud computing platform. The platforms allows users to rent virtual machines hosted in Amazon data centers and scale the number of instances on demand. Another part of the platform is a variety of web services supporting hosted applications (storage, database, cache, management and many others), which are also available to external applications.

Amazon EC2 runs a virtual machine from the image provided by the user, giving him a full control over the environment. While it’s beneficial for users who demand customized environments, it imposes a burden of maintaining the environment. Amazon EC2 is different from Windows Azure which goes one level up and relieves users from the need to maintain the environment, allowing them to focus on the application itself, but at the price of locking the environment to clean Windows operating system. It’s worth mentioning that Amazon arms users with a large library of pre-configured machine images to facilitate deployment process.

Since EC2 allows hosting an arbitrary virtual machine image, moving applications to the cloud is straightforward and doesn’t require any code change. However, to take full advantage of cloud computing and to make the application scalable it should employ Amazon Web Services (AWS) provided by the platform.

Developing cloud applications for Amazon EC2 implies integrating with AWS which are available via REST API. There are many tools and libraries available for different languages. Amazon provides AWS Toolkit for Eclipse which includes a plug-in for Eclipse Java IDE and AWS SDK for Java to make the development easier.