Adam Bien's Weblog

The term "Cloud Computing" is even cloudier than SOA or Web 2.0 definitions. My understanding of clouds is:

Elasticity: you can fire up new instances on demand.

Management and Monitoring: especially applications in the "cloud" have higher requirements regarding management and monitoring. You should be able to pro-actively monitor the current state of your application.

Vendor neutrality: you wouldn't like to be dependent to one vendor in the current economic situation.

Standardized packaging and installation: you will have to package your application to install it to a "cloud". Standards are always good, otherwise you will end up in many negotiations and meetings.

Failover capabilities: clouds do not have necessarily to be HA-aware. It is nice to have a clustering option.

Easy administration: you will need remote administration tools. Using vi to edit files would probably not satisfy your customers.

Low resource consumption: computing time and resources cost a lot. It is important to build as lean applications as possible to save money.

In case my cloud-understanding is correct Java EE 6 and even Java EE 5 would be perfectly suitable for cloud standardization:

JMX is just built-in and standardized (J2EE management and monitoring). ...and you can nothing do against it :-). Every deployed Java EE component has to be published on every J2EE 1.4+ conform application server. You have only to leverage the information with JConsole, through Java 5 SE API, or tools like Hyperic or openNMS.

You can start, stop and manage application servers on demand. e.g. GF v2 can do it through a centralized domain. If it is not sufficient, you can easily extend such capabilities with e.g. EHCache, JBoss Cache, RESTFul interface and leasing concepts.

The portability of Java EE 5 applications is really good - and it will be even better in Java EE 6. I actually switch back and forth between WLS 10 and GF v2 in my current projects. Java EE 5 is already supported by JBoss, Geronimo, Glassfish, Weblogic, Websphere, SAP and even Spring (look at pitchfork).

EARs, EJB-JARs, WARs and RARs are standardized. You don't even have to touch this archives migrating them from one server to another (reason: XML is no more necessary - server-dependent deployment descriptors are gone)

Failover is supported by every application server I know.

Easy administration: it cannot be easier than in Glassfish v2+. The webconsole is lean, fast and intuitive. Command line interface is available as well. Geronimo also comes with own console. The admin console for JBoss is available in the commercial package too.

Low resource consumption: the EJB 3.1 container in GF v3 is exactly 420kB.... It can be loaded and unloaded on demand.

Couldn't agree more. Actually the biggest draw for Java EE as cloud computing infrastructure is that it's so standard based that there is no lock in for businesses. You can take you app from one cloud infrastructure and deploy it in another seamlessly, you can't do that easily in Amazon, Microsoft or for that matter any other proprietary vendor. Please do highlight this as to how Java EE cloud infras' also covers these business risks very well. Thanks for the post.

thanks for the nice comment! Java EE 5+ is lean, flexible and concise. It is amazing how dynamic Java EE applications can behave. You can deploy your application to a standard "cluster" first, and build a custom infrastructure if needed.

while I would agree to all of your comments above, it also applies to Grid Computing, which uses a slightly different paradigm than Cloud Computing.
So, I believe you might be missing two important aspects of Cloud Computing: ubiquity and anonymity.

What do I mean with that: in Cloud Computing, everything can be regarded as a resource and users (and I also include systems here) do not necessarily have to know where a particular resource is located or how it may be distributed. In other words, the cloud is ubiquitous but also anonymous when it comes to providing access to resources.
These aspects of Cloud Computing is currently not covered anywhere within the Java/JEE standards. There are a few non-standard frameworks available, such as GridGain and Apache HADOOP trying to provide that.

In my opinion Grid Computing is a special case of "clouds". HADOOP e.g. implements the MapReduce algorithm, which is very specific and therefore not viable for a "general business application". Java EE is more a general purpose "Cloud OS". It is highly underestimated... GigaSpaces, Jini etc. are also very interesting.

hello,
well, there was lot of standardization talking, but If there is change in technologies and system then we have to chage there standards. as so we can compare it with cloud computing . so make standard that can be achievable in every technologies instead dependcies. Thanks.