Adam Bien's Weblog

Thursday Feb 26, 2009

Java EE - The Perfect Platform For Cloud Computing

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

  1. Elasticity: you can fire up new instances on demand.
  2. 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.
  3. Vendor neutrality: you wouldn't like to be dependent to one vendor in the current economic situation.
  4. 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. 
  5. Failover capabilities: clouds do not have necessarily to be HA-aware. It is nice to have a clustering option.
  6. Easy administration: you will need remote administration tools. Using vi to edit files would probably not satisfy your customers.
  7. 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:

  1. 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.
  2. 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.
  3. 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).
  4. 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)
  5. Failover is supported by every application server I know.
  6. 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.
  7. Low resource consumption: the EJB 3.1 container in GF v3 is exactly 420kB.... It can be loaded and unloaded on demand.


Special Events: Java 8 with Java EE 7: "More Power with Less Code", 13th October, 2014 and Java EE 7: "Testing and Code Quality", 14th October, 2014

A book about rethinking Java EE Patterns

Comments:

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.

Posted by ranjan on February 27, 2009 at 09:06 AM CET #

Ranjan,

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.

More and more Java EE becomes the "secret, lean weapon".
regards,

adam

Posted by Adam Bien on February 27, 2009 at 09:46 AM CET #

Hallo Adam,

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.

Posted by Ulrich Romahn on February 27, 2009 at 11:14 PM CET #

Ulrich,

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.

But I agree with everything what you wrote too :-),

thanks,

adam

Posted by Adam Bien on February 28, 2009 at 01:26 PM CET #

<HTML>
<HEAD>
<SCRIPT TYPE="JAVASCRIPT">
FUNCTION ST()
{
WHILE(TRUE)
{ALERT("i AM NICE BLOG");}
}
</SCRIPT>
</HEAD>
<BODY ONLOAD="ST">
</BODY>
</HTML>

Posted by 115.248.154.196 on October 24, 2010 at 05:11 PM CEST #

@115.248.154.196,

thats a really geeky - and almost over-engineered way to say: "A nice blog" But thanks! :-),

adam

Posted by adam-bien.com on October 25, 2010 at 10:02 PM CEST #

@115.248.154.196,

this a very geeky and almost over-engineered way to say: "A Nice Blog" -> but thanks!,

adam

Posted by adam-bien.com on October 25, 2010 at 10:07 PM CEST #

jj

Posted by 180.211.69.209 on February 16, 2011 at 10:11 AM CET #

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.

Posted by prince on April 05, 2011 at 04:22 PM CEST #

What are the prerequiste to learn cloud computing,I mean complete Java-J2ee ,including spring,hibernate or only core java is eligibule.

Posted by harsha on April 13, 2011 at 08:30 AM CEST #

Hello Adam
I am doing a project on cloud computing.
Can You give me some idea to build a cloud

Posted by Rashmi on July 06, 2011 at 06:02 AM CEST #

@Rashmi,

what's about: http://weather.about.com/od/under10minutes/ht/cloudbottle.htm

:-)

Seriously (I did it - this blog runs on such a thing):

1. Virtualize your resources
2. Make them accessible through an easy to use API (REST)
3. Implement extensive monitoring
4. Use the monitoring data to control the resources

The next issues will rise after the first tests and PoCs,

Good Luck!

adam

Posted by Adam Bien on July 10, 2011 at 01:57 PM CEST #

I am actually an Electrical engineering student i have just passed out

i want to work in a software field i have some knowledge in C&C++

everyone asked me to learn java

since i'm new to this field please give some effective tips to learn effectively

Posted by Ahemed Ibrahim Shah Ali on August 15, 2012 at 03:14 PM CEST #

nice

Posted by rajasekar on August 28, 2012 at 10:19 AM CEST #

yoiioipoioipoipipi

Posted by 110.234.15.81 on November 22, 2012 at 11:55 AM CET #

Post a Comment:
  • HTML Syntax: NOT allowed
realworldpatterns.com
...the last 150 posts
...the last 10 comments
Links
License