The Biggest Loser's Next Contestant: Java Bloatware

If the tech community were to host their own version of the popular TV show The Biggest Loser (or maybe Celebrity Fit Club) you would see enterprise Java front and center—bloated, overweight, tired, and drained.
The future of enterprise Java is becoming clear. The morbidly obese legacy platforms are in decline, with leaner solutions increasingly used in production as well as in development. Legacy technologies such as EJB are becoming less and less relevant.The lukewarm takeup of Java EE 5 leaves it looking increasingly like the last gasp of traditional J2EE bloatware. Meanwhile, the Java EE 6 specification is finally set to allow for greater modularity, in a radical change which will have important implications for developers and is likely to rejuvenate competition among implementations. As the standards and the products based upon them have gathered pound after pound of cellulite, SOA, Web 2.0 and other infrastructural changes continually impose new requirements that were not foreseen when J2EE was conceived a decade ago, as a chubby but cute baby.
So much for the past. What does the future hold?
I think the big picture is one of an exciting period of change. Analysts at Gartner Group agree, writing in the report Trends in Platform Middleware that
The popular Java Platform, Enterprise Edition (Java EE) and .NET platform middleware technologies are increasingly inadequate to cover needs for extensive scalability and performance, event-based programming styles, advanced service-oriented architecture (SOA) and dynamic application developments.
Here are my predictions:
- We will once more see real competition in the application server space, rather than a continued monopoly of a decreasing number of large vendors. Through version 5, Java EE did not serve the needs of the developers and their organizations so much as the needs of vendors who were protected from competition by the many cumbersome and irrelevant legacy APIs that needed to be implemented by any new entrant. With Java EE 6 needing to embrace modularity to remain relevant, renewed competition is likely.
- Tomorrow's application server will have a dramatically smaller footprint than the Jabba the Hut of today. The patients must lose hundreds of pounds or perish. Consider another analyst comment:
Consider the trend (over the past year or two) by Web CMS vendors toward embedding, bundling, or otherwise targeting Tomcat as a runtime framework instead of, say, JBoss. If all you need is a servlet engine and web server, why bring along EJB runtimes, a JMX framework, JAAS/JACC, and all the other scaffolding that comes with a full-blown J2EE appserver?
- The application server of tomorrow will not merely implement JCP specifications. With the rise of OSGi on the server side and the emergence of SCA, the JCP is no longer the sole source of specifications relevant to enterprise Java. The ubiquity of open source and the emergence of open source de facto standards introduces another element in the mix. A small number of open source projects are now more relevant to the majority of enterprise Java applications than the majority of the specifications that make up Java EE. This must ultimately begin to affect the characteristics of application servers.
- The market will need to address the gap between Tomcat and WebLogic/WebSphere. Currently an important part of the market is neglected. The majority of Java web applications are most at home on Tomcat. A minority actually want some of the more esoteric functionality of a full-blown application server, such as JCA, or specialized capabilities such as distributed transaction management. But a larger minority need some of the operational and management features of those products, but are not interested in the esoteric APIs and the bloat they bring along with them. As more and more end user companies look to phase out legacy application servers in favor of better suited technologies, there will inevitably be a response to market demand, with products that hit the sweet spot and bridge this gap.
- The gap between application servers and ESBs will be bridged. This is a logical consequence of the rise of POJO middleware. The same underlying platform should be able to address web and SOA requirements. Spring already provides a consistent component model across different deployment scenarios (something that Gartner have also repeatedly mentioned); a similar consistency of the rest of the platform is overdue, and likely to develop quickly as the dead hand of legacy J2EE ceases to hold back progress.
In my next blog on this topic, I’ll look at some of the technologies likely to play a role in tomorrow’s lean and powerful platform infrastructure.
Lars Tackmann says:
Added on April 10th, 2008 at 2:58 amFrom TFA "We will once more see real competition in the application server space" - this would be really nice, the modular directiones that GlassFish v3 and JBoss v5 has taken should hopefully provide platforms for faster development and real competition.
I am however still worried about the huge ammount of duplication that the Java world suffers from, take somthing like the splendid JAX-RS standard it currently has four similar implementations (Jersey (RI), Restlet, JBossRestEasy and Apache CXF). This is of cause what happens when you implement standards under various licenses. I just don't think that there is going to be enough real compettition between the four of them to justify theirs exists.
nicolas de loof says:
Added on April 10th, 2008 at 3:33 amIsn't there a gap to address between (small ?) web applications that can be deployed on highly mutualized platforms with reduced cost, and (big ?) entreprise applications with dedicated servers ?
There is a huge offer of PHP/MySQL web hosting, and now "Google App Engine" just starting as beta, but very limited Java (JEE or just servlet). Didn't the J2EE spec miss something here ?
Asd says:
Added on April 10th, 2008 at 5:29 amSOA/ESB = bloatware nonsense. It is the new J2EE but fortunately I think less people are falling for it this time round.
William Louth says:
Added on April 10th, 2008 at 6:23 am[quote post="310"]Consider the trend (over the past year or two) by Web CMS vendors toward embedding, bundling, or otherwise targeting Tomcat as a runtime framework instead of, say, JBoss.[/quote]
Would that be the same CMS vendor mentioned here.
http://www.jroller.com/robwilliams/entry/alfresco_and_spring_a_canto
A CMS that clearly shows how you can easily exceed the heavyweight of EJB with Spring alone. Maybe they moved to Tomcat hoping to save some memory footprint for all those config files, factories, and beans. Why pay the price for two implementations of the same thing - ignoring the different colored wrapping.
William
Rod Johnson (blog author) says:
Added on April 10th, 2008 at 3:22 pmWilliam
1. Regarding "would that be the same CMS vendor," you would have to ask the analyst who wrote that. If you'd read my blog more carefully, you would have seen that I quoted that paragraph–and that the analyst I quoted it from implies more than a single vendor.
2. "A CMS that clearly shows how you can easily exceed the heavyweight of EJB with Spring alone". I am not familiar with the application in question, but there are many applications out there where the ability of Spring to simplify the application runtime has been proven compared to EJB. Several examples are in the public domain, including the French Taxation Office online tax submission service. Accenture have presented a detailed case study on this, citing the reductions in volume and complexity of code, and that and other positive experiences with Spring have changed their approach to enterprise Java projects. Or you could simply compare any the sample applications that come with Spring 2.5 with a legacy EJB design. The current version of the WebLogic EJB container is built on Spring, btw.
3. Your anti-Spring (and anti SpringSource FUD) is getting tedious. Isn't it strange that it started only after you perceived SpringSource AMS as competition for your own JXInsight product? At least it would be more honest to be open about your position as a competing vendor to SpringSource. Your kneejerk reaction to anything SpringSource is particularly obvious here as the blog wasn't about Spring.
Rgds
Rod
William Louth says:
Added on April 10th, 2008 at 4:30 pmHi Rod,
I never really cared much for Spring's XML nightmare and I think you can see this on TSS postings going a long way back well before your recent announcements. I have always challenged your gangs view of transparency and lack of coupling to Spring via XML which in itself is actually a coupling. Maybe you should do a little bit more searching. That does not mean that I do not recognize the market shared gained by Spring and the need for a management solution which we delivered.
I am getting tedious? Your bad mouthing of other companies is not? Other companies in your words is practically everyone other than SpringSource "As the standards and the products based upon them have gathered pound after pound of cellulite"
Lets re-edit you blog entry picking out what you are trying to say.
[others]… Loser….bloated, overweight, tired, ….. drained…..morbidly obese legacy…. decline
[springers] leaner
[others]… lukewarm… gasp….bloatware
[springers] greater modularity…. radical change … rejuvenate
[others] …. pound after pound of cellulite chubby
[springers] competition
[others] continued monopoly …… many cumbersome and irrelevant legacy APIs….
Wow and that was not the entirety. I do not think I could take anymore of this talk if that is what is called.
Rod I find is ironic that as soon as you went commercial that your first offerings in this space are actually bloatware in themselves and this is not just talk. Anyone who has ever studied information visualization or read a chapter in one of Edward Tufte books would quickly realize that your "new commercial" stuff is full of complete and utter chart junk (chart junk in the technical sense with regard to data to ink ratio) and ironically built on the foundations that you keep telling us is bloatware.
William
William Louth says:
Added on April 10th, 2008 at 4:40 pmRod: I am not familiar with the application in question
http://www.cmswire.com/cms/enterprise-cms/alfresco-introduces-java-open-source-cms-and-content-repository-000611.php
Jan says:
Added on April 10th, 2008 at 7:12 pmTo be honest - William makes an excellent point. IMHO Spring is now at a point where its 'conceptual surface area' a term coined by Joshua Bloch is getting (too?) large. Due to the constraints of being backward compatible, and the fact a lot of stuff out there uses Spring, the framework has left its 'green field' and has to try to stay focused. With the trend of 'right sizing' the JEE platform, the Spring framework is at risk to become the bloated stack of the (near) future.
Rod Johnson (blog author) says:
Added on April 10th, 2008 at 7:43 pmWilliam
Sorry, but the facts speak for themselves. Since the recent announcements you have spread FUD at every opportunity. Previously you had a far more balanced approach to Spring.
"XML nightmare": As I said, FUD. Spring has always offered a number of ways to control configuration volume. Sure, some folk don't take advantage of them, but you can write bad applications with any technology. Each major version of Spring has reduced the amount of configuration required for a typical application. This is easily verified by comparing the sample applications shipped with each version of Spring. Spring 2.5 has been in final release for months now, and allows Spring to be used with little or no XML.
I stand by my statements, which are a natural evolution of what I've been saying since before Spring and before SpringSource. My positions do not change for commercial convenience. And I'm prepared to back those statements up with evidence rather than abuse.
FUD. I guess this is your hatred of Hyperic, who are also on your list of competitors/targets?
Rgds
Rod
Rod Johnson (blog author) says:
Added on April 10th, 2008 at 7:49 pmJan
[quote comment="102824"]To be honest - William makes an excellent point. IMHO Spring is now at a point where its 'conceptual surface area' a term coined by Joshua Bloch is getting (too?) large. Due to the constraints of being backward compatible, and the fact a lot of stuff out there uses Spring, the framework has left its 'green field' and has to try to stay focused. With the trend of 'right sizing' the JEE platform, the Spring framework is at risk to become the bloated stack of the (near) future.[/quote]
Sure, the Spring Portfolio continues to grow in scope but Spring is modular in design. Furthermore successful releases have become easier to use. Let me cite some evidence:
1. As I noted in my reply to William, Each major version of Spring has reduced the amount of configuration required for a typical application. This is easily verified by comparing the sample applications shipped with each version of Spring. Spring 1.2 applications had slight XML simplifications over Spring 1.1 applications. Spring 2.0 applications were simpler than Spring 1.x applications, due to the introduction of XML namespaces and the @AspectJ syntax. Spring 2.5 applications can reduce (or even eliminate) XML configuration. Across the Spring Portfolio, look at Spring Web Flow 2.0 and Spring Security (formerly Acegi Security 2.0). Both notably simpler to use than the previous generation.
2. Spring's modularity is real. In Spring 2.5 we have been able to repackage the fine-grained Spring JARs as OSGi bundles. That's real modularity, and a validation of the manageability of our design.
3. Backward compatibility is not so hard to achieve when you try to reduce the dependency of code on the framework. Take the way in which we've been able to make substantial changes to the DI container without breaking people's applications.
Rgds
Rod
BG says:
Added on April 11th, 2008 at 12:51 amXML….is the main reason why many aspiring web programmers don't pick up J2EE platforms for deployment.
There is just too much work involved in maintaining mappings for every little thing you want to do. Too many things you need to take care off before you get to do some "real" development.
I suppose everything is fine and dandy for companies that have their development methodologies all figured out and documented…but for "green" web programmers who take up J2EE out of curiosity the learning curve is discouraging. I know many who wanted to get into Spring,Cocoon,Tapestry,Turbine,etc…looked at what was needed to get started…shook their heads and picked up a PHP/Python/Ruby/Perl framework.
What I am trying to say is that the J2EE world should worry a little more about the amount of developers willing to cut through the bloat. I don't have any numbers, but I would say that amount in dwindling by the the day.
Paul Browne says:
Added on April 11th, 2008 at 7:39 amRod,
I'll agree with most of what you are saying , but maybe I'm missing something when you say
[quote post="310"]The market will need to address the gap between Tomcat and WebLogic/WebSphere.[/quote]
I thought that was the sort of space that both Spring and JBoss were aiming at? E.g. When you need Tomcat and just 1 or 2 other Enterprise features such as messaging or transactions. Both JBoss and Spring appear modular enough to use in this fashion. And both are pushing OSGi and modularization. And both are much more capable than just this 'middle space'.
Or was this trailer for your next blog post where you pull back the curtain and reveal Spring as the answer?!
Paul
Rod Johnson (blog author) says:
Added on April 13th, 2008 at 6:37 pmPaul
Yes, both projects help there. JBoss's JMX microkernel pioneered a more modular approach than other app servers (thanks to Rickard Oberg). However, JBoss's enduring fixation on EJB has tended to negate this potential benefit in practice, and JBoss has tended (at least in my experience) to start up slower and otherwise accumulate baggage over time. Compare with Tomcat.
Spring is certainly modular, but it's part of a server platform, rather than intended to be an alternative to an application server.
Yes, OSGi is certainly (part of) the answer. Interesting to see that even Sun with Glassfish are now looking to OSGi for runtime modularity.
Rgds
Rod
Mik Kersten says:
Added on April 16th, 2008 at 9:25 pmWilliam,
[quote post="310"]Anyone who has ever studied information visualization or read a chapter in one of Edward Tufte books would quickly realize that your "new commercial" stuff is full of complete and utter chart junk (chart junk in the technical sense with regard to data to ink ratio) and ironically built on the foundations that you keep telling us is bloatware.[/quote]
I share your dislike of "chart junk" and my did my PhD thesis on getting it out of the development process. I also studied infoviz, am a big fan of Tufte and have read his books and attended his seminars. But I have a pretty different point of view on your bloatware argument. Even if Spring were not the most concise way to represent an application, the combination of configurability, simplicity and power have made it a de facto choice for building Java apps. Assuming that it were possible to have a more concise combination of language and framework, I doubt that the resulting apps would be 2x as concise because the underlying problem is essential complexity (discussed further in a JDJ article. A framework that's simple enough to make apps concise and powerful enough to support their essential complexity should be sufficient to become a standard programming model for enterprise Java. And that's where I think we're at with Spring.
The problem of the remaining "chart junk" that shows up in our daily development activities stems from the fact that for any task that we do, a lot of Java and XML that's unrelated to the task-at-hand keeps polluting the screen. For this reason the SpringSource tool suite has incorporated Mylyn's Task-Focused Interface, which, simply put, cuts all the irrelevant junk out of what you see when you're programming. To see what I mean check out the screenshot in my recent blog posting.
So even though everyone may not agree, I think it's pretty neat that we're seeing SpringSource putting such an emphasis on cutting the fat from both the framework and the tools.
Leena Sharma says:
Added on April 17th, 2008 at 11:56 pmI don't know why we are telling complete J2EE as leagacy. Since only part of J2EE i.e, EJB is heavyweight. That too with EJB3.0 it is more of the OR mapping. I think J2EE will not become obolete but rather improve with the need of the business. Like earlier it had addressed the issues of secure transactions, database pooling etc.
With Application EJB Containers addressing most of the transaction,database pooling issues.[quote post="310"]Technologies are always the ways to implement business needs and technology should be changing there is nothing obosolete or legacy[/quote]
.
Uncle Bob says:
Added on May 9th, 2008 at 10:47 amI'm wondering…how is Spring going to avoid becoming the next Java EE bloatware and stay lightweight as it adds onto its stack. As Spring continues to expand offerings like the Oracle Advanced Pack, etc. it is growing into a bigger monster than the lean, lightweight framework it started out as. Will Spring keep the framework clean and lightweight by simply droping legacy support, leaving the users of Spring 1.x, 2.x, without forward compatibility? How is the Spring Framework, and its extensions going to avoid becoming the next "legacy" and stay lightweight?
jabba says:
Added on June 5th, 2008 at 1:31 amMy employer is a global IT services company with 100.000 IT specialists and for us Spring technology is restricted technology. Mainly because it is not -by any means- a standard but only a product. A product actively managed by a pretty small company with their own obvious interests.
I know at least two other major IT players with 80.000 IT specialists that hande it the same way.
I know Spring is a nice technology for many developers leaning towards open source but it is not necessarily a strategic choice for many larger organizations.