The decline of J2EE Application Servers
There's some speculation that the use (market share) of J2EE (or JEE if you prefer the new branding) Application Servers has already peaked and will now start to decline. This is certainly true - the rise of the POJO, the popularity of frameworks, and the uptake of SOA all mean that there are now alternatives.
There are fundamental problems with J2EE Application Servers that mean that they are no longer the 'platform' on which most business logic is developed and the market share will continue to decline.
Too complex for most problems
We can expect that the J2EE Application Servers will become even more powerful and sophisticated. But also increasingly difficult to use (try mastering 1000+ pages of specifications). J2EE is a sophisticated solution for complex problems. It's overkill for many business applications. To put this in context, CodeFutures often uses Tomcat for its internal applications. Andy Grove, CodeFutures' CTO, was the CTO of the first J2EE licensee in the UK. So to say he used to be a big fan of J2EE is an understatement. But no matter how technically good J2EE is, it's just not appropriate for many projects. That's probably the main reason why the simple, open source frameworks are eating into J2EE market share.
Scalability and performance problems
J2EE has benefitted from the increase in raw CPU processing power. But that free ride is now over as CPU clock speeds are no longer increasing. It is certainly possible to achieve scalability using the traditional server farm approach (which also sells lots of software licenses, which is why software vendors like them), but it's very costly because it's not linear. If you've got a big application running on 100 CPUs, then adding another 100 CPUs might only increase the performance by 30% or 40%. This problem is well documented. The monolithic platform approach needs to be replaced by lightweight (and if appropriate, distributed) architectures.
Commoditization
The evolution of Java is very much one of creative destruction, with commoditization of the J2EE by JBoss. This means that the big J2EE vendors, and their systems integrator partners, can no longer make a lot of money from selling application servers, so they won't be pushing them customer projects. That will reduce market share. At the top end of the market, the major vendors are now pushing SOA. At the bottom end, Java developers are using open source frameworks if allowed, and in the middle, JBoss is giving away a very good product (turning a multi billion dollar market into a hundred million dollar market with a disruptive busienss model). Sun is going to going to be doing a lot of renegotiation of J2EE/JEE licensee contracts!
The rise of SOA
SOA is lightweight, highly distributed, and loosely coupled (it's not, but it should be, unless it's just retrofitting SOAP onto legacy products). That's almost the opposite of a J2EE platform. Application server vendors might position their legacy products for SOA support, but the monolithic architecture is just fundamentally wrong. EIther way, the major vendors clearly think there's money in SOA and that's what they are all pushing their customers to use. If they are pushing SOA, then they are not pushing J2EE, so again, less market share. That's market share pressure on J2EE from the top down (to complement the bottom up pressure from the open source frameworks).
Relax, change is constant
So J2EE/JEE market share is declining due to various market forces. So what? It's still hugely important and still the 'top dog'. It's just not going to dominate like 3- 6 years ago.
Java in general is getting even stronger, so there's nothing to worry about. The Java ecosystem is THE center of innovation in application development, partly due to open source projects like Spring and partly due to the backing of all the industry leaders (except Microsoft, of course).
So relax and enjoy the ride!
PJ Murray
CodeFutures Software