Arguably, Struts 1.x is end of life. There are plenty of other Java server-side web frameworks: JSF (the standard), Wicket, Tapestry, Struts 2, Echo, Spring MVC, etc. Do you have any market data on what developers are adopting after Struts 1.x? If not, what is your gut feel? What will developers use in 2008 for new projects?
I asked my linkedin network this question and was surprised at how detailed the answers were. I share them now.
Struts continues to do really well; it is still number 1. JSF did well in 2007. Let's put it this way: If job demand for the Struts framework and JSF were a stocks and you invested in it in April of 2005 by July of 2007 you would barely break even with Struts but with JSF your investment would have grown 700% as of July 2007. (According to indeed.com.)
Names are withheld for privacy. Let me know if you want me to release your name.
No clue, but I'd go for Struts 2 or JSF, maybe Spring (MVC)
You probably can't go wrong if you pick the three most likely contenders. I prefer Spring MVC and JSF.
Where I used to work, many Java developers started using Ruby on Rails for web development. I have just recently started, and it is pretty nice. It takes some getting used to because it's focus is much more on conformance than configuration, but development is quick.
I worked for a hedge fund which used Java for all the trading applications, but when I left, there was a definite buzz around Ruby, with a few projects in the works.
Since Ruby can access any Java library via JRuby, that might be an alternative without having to migrate all your old code to another language.
Ummm... no comment.
In my opinion, current JSF implementations (1.1 or 1.2 spec) are not mature enough to be serious competitors. This might change when the JSF 2.0 spec (which addresses most of the issues with the 1.2 spec) is implemented. Spring MVC is too cumbersome in my opinion, as is Struts 2. So for now, I'd go with Wicket. Wicket is a very good choice, as it provides a clean seperation of view (clean HTML) and logic (POJO's). Also, it does not rely on XML-configuration. It's a good example of the 'less is more' concept.
But this is my personal opinion. Which is not necessarily the same as the opinion of my customers. From where I am standing (Dutch Financial and Public sectors) most of my customers are gearing towards JSF. Wicket is also rapidly gaining popularity, though not widely adopted yet. In the Financial sector, Portal and Portlet development is very popular, usually combined with Websphere or Oracle Portal.
I respond to this later below.
We currently use Struts 2 which has made a good effort at integrating Webwork into its codebase but has yet to go a while before documentation becomes easier. There are a few books starting to appear.
Personally, we love the choice of Struts 2 and are very happy with it.
However, I will let Matt Raible answer your question as per link below.
Good link. Thanks.
I think that JSF will take the lion's share of developers by virtue of being backed by Sun. Anyone who feels the need to move off Struts 1.x, and there will be some who'll hang around on it despite EOL, is likely to avoid the similar philosophy of Struts 2.
I also think that, as Mark mentioned, there will be some bleeding of developers to other languages entirely, namely Python and Ruby. Compounding this is the fact that these other languages allow you to do more with less while still providing mechanisms to integrate with Java. One of the big things that helps Java adoption is the ease with which one can make a program that works in Java. Though it may not necessarily work well, functional correctness is easily reached. I think with more options that make functional correctness even easier to achieve, some people will opt away from fully-Java solutions, or abandon Java entirely.
I'm biased, but I'd look to Ruby getting some major attention once a computationally fast Ruby interpreter is released; in terms of memory and install footprint it is very cheap and if the CPU utilization goes down it is a slam dunk for a language. Of course, a fast enough interpreter may never happen.
Python may always remain a niche language as it relies on syntactical features ( such as white-space expressed blocking ), that some people are dogmatically opposed to.
More people are using Python than Ruby according to Tiobe. There is also more job demmand for Python developers. But I mostly agree with this.
I think Spring MVC has a greater demand than Struts at the moment. Its more flexible than struts, however Struts 2 still has a strong following.
I have ran into one company in the last four years that was sticking with Struts 1.x. I have not run into a single company that was using Struts on new applications. Most companies I ran into were switching to JSF or Spring MVC. Then again I work for a company that focuses on Spring, JPA/Hiberante and JSF so my experiences are somewhat skewed.
Dude.... Rails. on JRuby even.
Well, it sure as heck won't be Cocoon...
I've been working with Ruby on Rails quite a bit, attending a couple of conferences and deploying enterprise-level applications both customer-facing and internal applications with various levels of success. I honestly believe that if the real RoR leaders can coalesce around what RoR can be and stop the amazing amount of petty bickering, it could really dominate internet applications, especially with a lot of the Java Back End integrations becoming available and platform-independent SOA opportunities.
I disagree with quite a few people that JSF is "the standard". For eCommerce applications that need to have a tremendous amount of mutability on the front-end, I believe that the complexity and backing-bean dependencies of JSF will hamstring a project quite a bit – It's tough to beat good 'ol JSP and/or Velocity(if that's the "way you roll") for making quick and frequent changes.
At the Enterprise Level, I constantly run across home-grown frameworks that have evolved over time. They are MVC2 and meet the needs of the organization based upon their numerous constraints.
We as engineers often look for the solution that is "most pure", and we can argue forever with respect to what "pure" is, but frankly we need to examine corporate and non-technical constraints more closely when specifying a framework. Process, the ability to "fix the plane while in the air", finances and other issues make things interesting, and many large organizations have deep and immutable ties to old source control systems, release management processes and in one case that I've worked, non-standard dpkg release requirements. You never know what you're up against until you're up against it, and instead of forcing a solution, be a real engineer and accept the constraints and work within them.
"If there were no constraints, the Golden Gate Bridge would have been made out of billet Titanium and plated in Gold and Platinum for decoration." – me
The answer to me is – it all depends – you can say that Struts 1.x is end-of-life, but I heard that three years ago. I've got an old Swiss Army knife that's not nearly as good as my Leather Man Tool, but when I need a corkscrew or a toothpick or a plain old pen blade, it's still my "go to". I also like the way it feels in my hand.
I agree it does depend.