Rick has posted 25 posts at DZone. You can read more from them at their website. View Full User Profile

What server-side Java web framework will be the next for 2008?

01.20.2008
| 41523 views |
  • submit to reddit

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.

Will JSF ever esacpe the birth canal? Is there still a lot of life in Struts 1.x? Maybe these are the wrong question altogether. Perhaps 2008 will be the year of RIA via GWT, Flex + Java, JavaScript + REST, or?

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)
--C

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.
--M

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.
--L

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.

Links:
http://static.raibledesigns.com/repository/presentations/ComparingJavaWebFrameworks-ApacheConEU2007.pdf

--S

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.
--A

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.

Frameworks also appearing for front end web app development I am using/have seen Echo 2, GWT, Open Lazslo, Ext Js (javascript front end).
--B

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.
--E

Dude. No.

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.
--D

I agree it does depend.

Published at DZone with permission of its author, Rick Hightower.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

kent tong replied on Tue, 2008/02/12 - 2:46am

I am teaching a course on both JSF and Wicket. All the students joined the course to learn JSF and had never heard of Wicket. After learning both frameworks in the course they were asked which one they would use. 4 chose JSF and 3 chose Wicket. The rest didn't respond.

Ha Vo replied on Sun, 2008/04/06 - 10:54am in response to: kent tong

Kent, if you were to chose one of these choices and you knew that a lot of the devlopment had to be done by rather junior offshore developers who will be lead by seniors. Which one would you chose? I guess I'm asking what alternative can better be learned and controlled in an offshore model.

 Thnx for the reply

kent tong replied on Sun, 2008/04/06 - 9:23pm in response to: Ha Vo

In my opinion Wicket is much easier to learn and use than JSF. It also contains a built-in efficient unit testing framework which should be a major plus in an outsource model. Of course, juniors often don't write testable code, so having a unit testing framework alone is definitely not enough; mentoring is very much required.

Gerd Ziegler replied on Fri, 2008/11/07 - 7:28am

For those who like the simplicity of Apache Velocity theres a framework out there at www.ztemplates.org with form ajax support. For short intro take a look at introduction to ztemplates from Lunatech Research.

Ghanshyam Baheti replied on Sun, 2008/12/07 - 12:09am

Hi, Probably I may not be Ideal person to sure which framework has demand or big buzz for future days , but like to share some of my experience of working on Struts, Spring, wicket and JSF.

Spring is most suitated framework for Buissness logic layer and widely used with Integration with another frameworks like Struts,Wicket,JSF and.,,lab..la. So Spring is Common part with when we design most of the applications. So obiviously I feel its widely used. Also recently Spring Framework 3.0 is released with further features. go for more detail for my blog for this or spring official site. So Obiviosly spring is in demand I feel.

Here now question remains which one from Struts, Wicket and JSF.

Struts:- People are posting about it from 1995. so google have lot of stock! we know struts is no more. So less chances of use in new application devolpment. It is coming with struts 2 as well needs to be take into picutre.

Wicket:-Wicket is all about simplicity. It is Swing for Web Applications. There are no configuration files to learn in Wicket. Wicket is a simple collection of components. In Wicket, your web applications will more closely resemble a Swing application than a JSP application. If you know Swing, yes you know most of the Wicket!
None of the existing frameworks are appealing to me in terms of quickness, ease of development, easy to understand etc.

JSF:- It is another framework on which started to work recently. most of the Drag and drop devlopment is provided and looks very good. I see its growing widely. Still I need to learn lot in this, you can add here.

I missed here about other frameworks as i don’t have much Idea about them. you can make valuable addditions for us.

Rick Hightower replied on Thu, 2009/01/15 - 4:36am

It has been a year. Is there any current insight into this topic?

Bruno Vernay replied on Mon, 2009/02/16 - 4:45pm

I worked on a document about Web Frameworks. I would like to post it on JavaLobby. I would  remove the long list of framework and if you have other remarks, I would be curious to see what people think.

Thanks

Bruno

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.