This J2EE thing is a bigger hipe than you might think. Most of the standards are just coming nto place. Most of the vendors don't even support these standards the way you would expect. For example, the so called IBM websphere has no support for even open source framework like struts without having to write a thesis to somehow get it to work. Application servers are expensive and most sales people commit to things that has nothing to do with the application servers they are selling. Ignorant clients fall pray to this and find that they are already commited to a huge investment that they are trying to protect. I think more and more people are getting fed up of this J2EE mess. JSPs are the only good thing to come out of it. All the rest is application server specific. You change it and you change a lot of your code as well. Maybe not as much, but still it is annoying to do this in a large environment. All told SUN has got you by the balls and a lot of people are screaming in pain right now.
You can't really call J2EE hype because it's already out there and it has proven itself very potently in the application server market. Sure, some of the of application servers are on the pricey side (Weblogic and Websphere come to mind), but that's only because of the extra features that they come with. If you're like me, then you're a cheap bastard and should stick with application servers like JBoss, Orion, or even JRun. JRun is free for development use, but is hampered by 5 concurrent connections (last time I used it anyway), but it comes with a snazzy management console that makes a developer's life easier. Now I don't know what you mean by having to change a lot of code, but as long as you conform to API standards, not hard-code settings too much, and if you are constantly switching between different J2EE environments, then don't use any 'proprietary' features of the application server. As long as you follow this guideline, I don't think you would have to change anything, except for maybe some configuration files, but that's not really code. Don't blame SUN; they provided the reference implementation that the other application servers must conform to in order to become certified. If I were in the market for an application server right now (but I'm cheap so I just use free stuff), I'd ensure that they were J2EE certified.
I wouldn't have minded what you said at all, except that you made broad generalizations with no concrete examples. Regardless, I think the best aspect of the J2EE environment is that you have choices. If you want to talk about having your b*lls in anyones clutches, just go with .NET.
You think the only good thing about J2EE is JSP? Hmmm...
I agree with you on a couple of points, app servers are expensive and some companies encourage the use of proprietary code/tools/methods. (ATG comes to mind)
But, this is what is cool about J2EE - YOU DON'T HAVE TOO USE PROPRIETARY STUFF. Stick to J2EE standards and you can port your code to any J2EE server. (but why would you want to, you've already invested in that overpriced app server)
Your application is only as server specific as you make it.