Neal Ford, frequent speaker at the No Fluff, Just Stuff conferences, recently wrote about The Craptaculous Web Framework, sharing the findings of Jay's polls taken at these conferences related to which web frameworks people are using:
Generally, Struts still rules the numbers (although, recently, he's been asking how many people would use Struts on a new project and the numbers plummet). He rattles off the litany of web frameworks (there are dozens in the Java world, after all). And, on the panels I'm on, I pipe in by asking people how many are using their own, home grown "Craptaculous" framework. Interestingly enough, there are always hands. And the home grown Craptaculous framework generally beats out some well known rivals, like JSF (thank heavens) and Tapestry (what a shame).
In Neal's opinion this demonstrates the confusion in the Java world about web frameworks. He argues that if people only had 3 choices, they could go and compare them while, when presented with 10 or 20 alternatives, paralysis sets in and they end up using Struts or creating another version of their home-grown framework. He views this situation analogous to the classic example of the store selling jam presented in the book "Paradox of Choice: Why More Is Less":
A little boutique store started presenting jam samples to entice customers. When they put out 3 different flavors, customers sampled them and the sales of jam soared. More must be better, right? So they put out 10 difference flavors...and the sales plummeted. When presented with too many choices, people's decision making ability shuts down.
Neal adds that in the case of Groovy, Grails as the main web framework choice will help drive the adoption of the language. As it runs on the JVM, he even believes that Grails "may be salvation from the home-grown Craptaculous framework that Java developers are still using". Other commenters on the blog were of opinion that more fragmentation exists even in some of these markets. In the Python world, the number of frameworks decreased from 20 to 4 and none of them stands out while in .NET other choices are Monorail and the anticipated ASP.NET MVC, recently covered by Jonathan Allen on InfoQ.com.
Even when choices are overwhelming and people prefer, at times, to build their own solutions, the proliferation of web frameworks in other languages proves that maybe choice is good, as Charlie Collins argued:
When buying jam, yes, I want to make a 5 second decision and not have "too many choices." When choosing a spouse, buying a house, or making any kind of long term or expensive commitment like selecting a framework I will be using for the next few years, I don't want less choice, I WANT MORE.
Charlie explains why he believes there are multiple Java web frameworks:
What is your opinion? Is the larger amount of Java web frameworks choices helpful or not?The quintessential argument with Java is the plethora of web frameworks. But, and here's the rub, that's a complicated space with a lot of people working to solve the complicated problem in different ways (and much of the problem not being their fault, but rather the way HTTP works). If you are going to select a framework to help there, do yourself a favor and spend 30 minutes, not 5 seconds, or better yet a week, deciding what your requirements are and ACTUALLY LOOKING INTO THE DETAILS OF THE FRAMEWORKS TO MAKE AN INFORMED DECISION ABOUT WHAT BEST MEETS YOUR NEEDS.
Talented people looking at things in new ways, and solving problems differently, reflects on how open and healthy the Java space is in my mind, rather than the opposite.
Community comments
There's a ton, but...
by Francois Ward,
Welcome to America!
by Sergio Oliveira,
Re: Welcome to America!
by Eelco Hillenius,
More choice is great for informed customers.
by Eelco Hillenius,
Re: More choice is great for informed customers.
by Ivan L,
Re: More choice is great for informed customers.
by Casper Bang,
Re: More choice is great for informed customers.
by Sergio Oliveira,
There's a ton, but...
by Francois Ward,
Your message is awaiting moderation. Thank you for participating in the discussion.
There's a ton of web frameworks in Java, but only a few stand out. If you're making your own project alone, you can just use whatever you wish, but if you're doing an enterprise solution or working in a team, especially one where there will be a cycling of ressources/developers, you only want to use something standard, mainstream, well known, etc.
Reason behing, even if you can save an extra 3-5% of time by using what you think is a better framework, it just takes 1 dev going on vacation or quitting to make you lose days or even months on training a new ressource. And even once trained, they'll never be better than what they have 7 years experience with. In the end, you'll lose out.
So stick to the mainstream, unless you have carefully evaluated the consequences of not doing so.
Welcome to America!
by Sergio Oliveira,
Your message is awaiting moderation. Thank you for participating in the discussion.
I love America (US), because America is a free place where people can do whatever they feel like doing as long as they don't hurt other people's freedom. This is as important to me as the air I breath. So if I want to create a web server in Java or a email client, or a todo list application, I WILL. And nothing or nobody will be able to stop me.
The god news is: I will not put a gun in your head to use it or like it. You are also free to ignore it or to take a look and not like it. Also feel free to throw your comments, to say it sucks.
I recommend a little read about Darwin and the Natural Selection theory. I also suggest checking out Cuba as a place to live for people that don't like competition or diversity.
By the way, I am very happy I did not listen to people when I created the Mentawai Web Framework 3 years ago. Today many people and companies around the world use and like it. Feel free to check our online book: book.mentaframework.org/, our cookbook: recipes.mentaframework.org and our website: www.mentaframework.org/
And keep in mind that if you don't like it, you can just ignore it. There is not need to feel bad or say sorry.
Re: Welcome to America!
by Eelco Hillenius,
Your message is awaiting moderation. Thank you for participating in the discussion.
Sergio++
More choice is great for informed customers.
by Eelco Hillenius,
Your message is awaiting moderation. Thank you for participating in the discussion.
Research says that some choice is better than none, and that informed customers take advantage of more choice. And guess what, most of these frameworks are open source and their communities work in the public. All the transparency one would wish for!
It is fantastic to see all those frameworks that are started and take on the established ones. It means that people aren't settling for the status quo, but instead are constantly looking to improve things. Sure, you might have to spend more time keeping up (that's probably why you read this site) and figuring out what the best option is for you/ your project. But a defeatist attitude (oh, there's too much choice, let's just choose for the one that everyone agrees with is outdated) isn't helping anyone.
Re: More choice is great for informed customers.
by Ivan L,
Your message is awaiting moderation. Thank you for participating in the discussion.
At this point it's just hurting. I really wish Spring and DI would really get into mainstream Java. At this point people still think of it as a web framework which is why I think people find themselves choosing Struts.
Frankly working in the average Java shop is depressing: Java 1.4x, Struts, and people coding this is all in vi. Of course php or something similar seems like an easy choice.
Re: More choice is great for informed customers.
by Casper Bang,
Your message is awaiting moderation. Thank you for participating in the discussion.
Less is definitely more. The hard and complex thing about Java is not the language, but the fact that there are so many choices to be made and no obvious ways thanks to Sun's devotion to complexity. It requires a lot of knowledge, skill and research to be successful (bet on the right horse). Every framework usually has a strong point but all in all, I find adopting a KISS route and avoiding frameworks alltogether (or at least, stick with very small and/or de-facto standards) is a win in the long term. The Oracle ADF stuff I wrote 3 years ago has now reached end of life for its tool support (JDeveloper & OAS) and is now effectively unmaintainable. The servlet micro-framework I am using now is so lightweight and simple that any Java developer can maintain it, and requires just a simple Tomcat. As much as I love the Java community, I am sure my job would be far less stressful and more productive if I was provided with fewer but stronger options, i.e. as the .NET world has it.
Re: More choice is great for informed customers.
by Sergio Oliveira,
Your message is awaiting moderation. Thank you for participating in the discussion.
For the newcomer, too many choices may be overwhelming. But worse than having too many choices is to use too many things at once. This is called a Rube Goldberg Machine. EJB is the classic example. JSF also comes close.
To do a web project in Java is very "easy". All you have to do is use Struts, Spring, C3P0, Hibernate, JSTL, JAAS, Commons Email, Commons File Upload, Tiles, OSCache, etc. This is non-sense, we need FULL-STACK-HIGH-LEVEL solutions.
This is exactly what Mentawai, RoR and SEAM are trying to do.
So too many choices is something inescapable in a free world. I don't need to know all fruits to choose what I want to eat today. I don't need to know all grocery stores in my neighborhood to choose where I want to go today.
Take a look into the Mentawai philosophy. You may get impressed, but if you don't like it, just consider another grocery store in another corner.