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:
- 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 on 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.
From http://www.adam-bien.com/roller/abien/entry/java_ee_the_perfect_platform
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)





Comments
Geertjan Wielenga replied on Thu, 2009/02/26 - 8:44am
Ulf Gohde replied on Thu, 2009/02/26 - 11:24am
in response to:
Geertjan Wielenga
Cloud Computing itself doesn't say anything about this. You could just store the data in the cloud and use thick clients to access the data, e.g. like Apple's MobileMe. That would still count as cloud computing.
However, it is probably fair to assume that RIA will play a big part in Cloud Computing in general.
Andreas Siebert replied on Thu, 2009/02/26 - 11:57am
sounds like an advertisement for j2ee technologies ;)
1. j2ee is not so elastic like it can be. you have to manage something and not only fireup and run. in the best case a new instance should startup on demand.
2. if you have many many many requests (and clouds are developed for many many many requests on demand:) then distribution is better as clustering.
2. java persistence is at this moment practicaly strong "database-oriented". database is a bottleneck. in my understanding is a cloud horizontaly scalable. but distributed databases are not so popular.
but j2ee-servers can be used in a cloud. that's right ...
Robert Buffone replied on Thu, 2009/02/26 - 12:12pm
in response to:
Geertjan Wielenga
I just went to a Amazon Meetup last night in Boston and the applications people are talking about are all over the map.
But they all had a couple things they were looking to achieve:
- Elastic computing power that makes it easy to scale up as well as down when resources aren't needed.
- Looking for afordable computing power that can let applications reach "Web-scale".
- Computing power as an utility.
As part of my work on rockstarapps.com and our eclipse tools for Amazon WebServices, I found Amazon has really made it possible for people to create a large applications in a very afordable manner.William Louth replied on Thu, 2009/02/26 - 2:25pm
Bryan Taylor replied on Thu, 2009/02/26 - 2:42pm
8. Hot Deployment - in a cloud environment, the deployment and undeployment of apps to containers cannot require the bouncing of the container, as the container may be shared among many apps, including those that are not produced by the same organization.
Traditional java utterly fails at this, and it's one reason why cloud vendors like Rackspace/Mosso and Google App Engine are not featuring java. OSGi and Spring DM might improve this, but traditional app servers with their massive Perm Gen memory leaks on app reloads simply are completely unacceptable for many core forms of cloud computing.
William Louth replied on Thu, 2009/02/26 - 5:13pm
in response to:
Bryan Taylor
Bryan Taylor replied on Fri, 2009/02/27 - 1:56am
in response to:
William Louth
William - what you are describing is an illusion. At the end of the day, the physical reality is that there are boxes that run processes that respond to requests. Cloud computing does not change this. Instead it creates an abstraction layer that hides the physical architecture behind a logical one. Yes, the app deployer want to see one logical container that is the cloud, but any attempt to virtualize the physical deployment architecture this way succeeds only by transfering the management to the hosting provider. The hosting provider will see appXYZ as being deployed to some set of container processes scattered across physical nodes. Container per app doesn't scale to 1000 apps, let alone 10000 or 100000.
I can have one instance of apache httpd running a crap load of mod_python, mod_php, mod_perl apps that deploy and undeploy all day. You simply cannot do this with JEE app servers. Mosso and app engine aren't restarting an httpd process every time I deploy a new version of my app.
BTW... there's other hard issues besides deployment. I can sandbox a JVM in terms of memory consumption, but I can't really do that for apps within a JEE container. Nor can I prevent thread proliferation easily.
William Louth replied on Fri, 2009/02/27 - 3:36am
in response to:
Bryan Taylor
Alex(JAlexoid) ... replied on Sun, 2009/03/01 - 8:49am
Java has one thing missing at the moment - standardized resource and thread management.
Without that Java EE on the cloud is basically a proprietary element. You can see how GigaSpaces handles additional processing power on Sun Grid.
Currently you have to "roll your own resource manager" and you can only manage threads, not memory.
Next, since "the cloud" is identified with IaaS, PaaS and SaaS, Java EE is has limited space on SaaS.
And on IaaS Java EE is a good option and is actually and actively used. On the other Java spectrum, you can setup and start a Hadoop installation on Amazon EC2 in a amtter of minutes.
It is not ideal for only one reason - thread and process management and provisioning.
Finally, I will add a bit of criticism to the article itlsef, minor , but still.
2. Pro-active monitoring is not possible. Monitoring in it's essence is a reactive activity.
3. Vendor neutrality has nothing to do with the clouds. In this economic situation, economies of scale win, so we will have Amazon, Google, Force.com and a few more. Meaning, that only organizations with existing BIG data centers can compete.
7. Clouds have nothing to do with "Low resource consumption". Clouds were created due to resource under-usage. The applications themselves may be very resource hungry. And not much has changed in the prices, that means computing resources are still cheap. Clouds are better, because you don't need to support those computing resources and no need for capital investment.
The other point 7: GlasshFish may be only 420KB, but it still cannot compete with the likes of Python.
I can't stress enough that Java is lacking resource management capabilities, and that is a real PITA in a hosted environment. OSGi does not help in any way on that front.
Liezel Jane Jandayan replied on Thu, 2011/08/11 - 5:58am
Developers will benefit from productivity improvements with more annotations, more POJOs, simplified packaging, and less XML configuration.
Senior Healthcare Consultants
Sirikant Noori replied on Fri, 2012/03/30 - 12:48pm
Sir I dont agree. Java EE is standard based which is one of the greatest draw of Java EE. oNE MIGHT be taking app of cloud infrastructure to be deployed to other which is not done easily in Microsoft or Amazon etc. Thank you so much for the post
Java ExamChris Haddad replied on Sun, 2012/04/29 - 1:49pm
Adam, even the JCP leads have publicly stated JEE must be modified to appropriately deliver cloud characteristcs. To review 'what is cloud', please read the latest NIST Draft - Cloud Computing Synopsis and Recommendations at http://csrc.nist.gov/publications/drafts/800-146/Draft-NIST-SP800-146.pdf
Based on the proprietary work WSO2, CloudBees, and RedHat have been forced to perform when creating a Cloud application platform. I would assert today, JEE fails to reach the Cloud
John Smith replied on Mon, 2013/02/18 - 8:58am
I like this post,And I guess that they having fun to read this post,they shall take a good site to make a information,thanks for sharing it to me. spongebob game
Joay Sim replied on Thu, 2013/02/21 - 8:57am
in response to:
Geertjan Wielenga
Superbly written article, if only all bloggers offered the same content as you, the internet would be a far better place..
manually backlinks service
Ron Sim replied on Mon, 2013/02/25 - 10:01am
in response to:
Geertjan Wielenga
Thank you for helping people get the information they need. Great stuff as usual. Keep up the great work!!!
http://hotlivedealer.com
Ron Sim replied on Wed, 2013/02/27 - 4:38am
in response to:
Geertjan Wielenga
I have read your article, it is very informative and helpful for me.I admire the valuable information you offer in your articles. Thanks for posting it..
teeth implants uk
John Smith replied on Sat, 2013/04/27 - 4:02am
in response to:
Ulf Gohde
I found that site very usefull and this survey is very cirious, I ' ve never seen a blog that demand a survey for this actions, very curious...
my latest blog post