Market-leading software companies and start-ups alike are competing for the hearts and dollars of Java developers with Platform-as-a-Service (PaaS) offerings for Java cloud development. Competitors in the Java PaaS space include Amazon (with AWS Elastic Beanstalk), Google (with Google App Engine), and Red Hat (with OpenShift), with smaller players such as CloudBees (with RUN@Cloud) and Hivtext (with Jelastic) also bringing interesting products to the market.
This article presents quick snapshots of what the main Java cloud platforms offer, along with their strengths and weaknesses.
Amazon Elastic Beanstalk
Elastic Beanstalk supports a full Tomcat server running on an Amazon Elastic Computing Cloud (EC2) virtual server. It is a pure Java environment with access to the underlying file system. Because of Tomcat's popularity, almost all enterprise Java frameworks support Tomcat deployment.
Strength: Beanstalk gives developers a wide variety of choices for database technologies -- relational, NoSQL or a database of their own creation. Another strength is its excellent integration with all Amazon Web Services.
Weakness: Beanstalk's standard pricing of around $35 per month is relatively expensive if you're running a low-traffic website.
RUN@Cloud seeks to blend the best of managed scalability (as in GAE) and flexibility (as in Amazon's Beanstalk) while adding its own special sauce, providing a complete develop-to-deploy lifecycle for Java Web applications in the cloud.
Makers of Run@Cloud CloudBees claim the platform delivers reliable and elastic on-demand resources, unlimited scalability, and a seamless transition from development to production.
Strength: Run@Cloud provides tight integration with DEV@Cloud, a cloud-based, continuous integration platform. DEV@Cloud consists of open source code, a version-control system, a build repository (Apache Maven) and a build server (Jenkins).
Weakness: Its focus on only Java may be a deal breaker for developers who need support for multiple languages.
Google App Engine (GAE)
GAE enables developers to build Web applications on the same scalable systems that power Google's own applications. It virtualizes applications across multiple servers and offers automatic scaling.
Strength: GAE supports various programming languages, such as Go, Python and Java. Google has said that it plans to support more languages in the future and that the platform has been written to be language independent.
Weakness: GAE's Java support is limited and not standards-compliant. For example, GAE doesn't support important Java APIs such as file write I/O and many of the network I/O APIs. Java cloud applications deployed on GAE can use only a subset of the classes from the JRE standard edition, and they cannot create new threads.
The platform also imposes a number of restrictions on applications, although Google requires these restrictions mainly to ensure scalability and performance.