Peter Yared, former CTO for Sun's application server, says that "Java/J2EE may lose out to Open Source technologies in the future, as IT managers are architects get tired of the time and cost of building in Java,"
<pedant>
But, gee JEE is already an OSS technology! (e.g. JBoss, GlassFish, Geronimo, etc. etc. etc.)
</pedant>
Here's the deal.
The thing folks seem to criticize the most about JEE is deployment. The deployment step is JEEs portability mechansim.
None of the other frameworks even address this step, simply because they don't need to play in that game. They are not concerned if the code you write against their container/framework is portable to another version, because there simply isn't another version. Since they don't design to a specification (at least an external specification), there is little chance of a competing container implementing the same functionality.
And one could argue, why should there be another a compatible, yet competing version? With OSS this rarely happens.
In fact, ActiveGrids whole tenet is that portability is a non-issue because you're going to run Linux anyway, on x86 hardware. They've decided that x86 Linux Is It.
But, personally, I like the fact that we have competing containers in the JEE space. There must be a dozen of them, and the competition promotes and improves the art, from management, stability, performance as well as new features outside the of the spec that may one day get rolled in to the spec.
If JEE were simply Suns locked, internal Java ORB/Transaction server, JEE would be nothing but a blip today. But its not, rather its become an industry phenomenon, and the Whipping Boy Du Jour. The 800 lb guerilla that apparently needs to be knocked off its pedestal.
So, yea, things like RoR and "LAMP" solutions may well offer varying paradigms for development. Yea, they may be more productive up front, but you have to ask if whatever upfront productivity they promise outweighs the proven performace, stability, scalability of modern JEE servers, and outweighs the VAST Java knowledge in the industry to back up those servers and produce those apps.
It's not like JEE is static, it's not like its standing still. Going back to the popular "Java is Good Enough" argument, it's true, Java is flexible enough to adopt many paradigms of development, and many of those are the more powerful by leveraging the platform and infrastructure that JEE provides.
While JEE offers a large amount of things, you can make it as lightweight as you want. You want to write a bunch of JSPs in some Model 1 style of mixed code/view logic? Go ahead, any JEE server will happily deploy that. What if your app is a single servlet that calls JDBC directly? Should I run that on a JEE server? Sure, why not. What if your app supports 2 people, surely a JEE server is overkill for 2 people. Why? Cherry pick the pieces that you want out of the stack, just like any other system. You don't have to master the entire stack to get an application working. Idle services consume very little in terms of resources (if any).
Isn't that a "waste" of a JEE server? Running an application that uses so little of its capabilities? Nope. How many folks run a Unix box with simply Oracle on it, despite all of those other Services that Unix provides? Is that a waste of Unix? Certainly not.
Same with JEE, if and when you want those services, they are there available for your application, in a container you already know, in a system you've already deployed, against a specification you're already familiar with. No grand paradigm shift required to use more and more of the JEE stack for your application.
Sure, you can deploy an app solely on Tomcat, but why should I bother when for, perhaps, an extra MB of RAM (if that), I can get JBoss, Sun, or Geronimo? Why limit myself up front? Why not learn one of THOSE servers rather than simply Tomcat, even if to simply deploy a small WAR file?
JEE is productive, today. It is performant, today. It scales, today. It is portable, today. It is cheap, today. And it will be here tomorrow. All of your CMP 2 beans, for example, aren't going to "go away" in EJB 3, when JEE 5 comes out, your code will Still Work. The code you wrote 5 years ago will Still Work.
RoR is buzzy and cool, it's also very young. Where will it be next year? Two years? 5 years? Where will ActiveGrid be in 5 years? I dunno. I can't say where JEE will be in 5 years, but I certainly have more confidence in the longevity of JEE, in its specification, in its implementation, and in its knowledgebase.
If ActiveGrids paradigm is that earthshaking and wonderful, no doubt someone will move it on top of Java and the JEE stack in due time.
JEE is not perfect, none of these techs are, but Java and JEE combined is a flexible, powerful, performant platform.