I'm freshly back from Java One in San Francisco, and my head is spinning with all the latest and greatest stuff that is happening in Java: Java EE 5 was just released, and there a lot of really cool things in it. There are a lot of interesting things going on in the open source community, including some new frameworks such as Grails (A kind of Java version of Ruby on Rails) that I had never even heard of. For someone like me who loves to try out new things, it was a veritable banquet of ideas.
Now Cinderella is back home from the ball and the carriage is now a pumpkin again as I face the task of getting back to my own development with the tried and true Struts tools my organization has been using for some time. It's made me think seriously about what the future of Struts development is.
First of all, almost nothing was said about Struts during the conference except something like "oh yeah, if you're a Struts developer, you really want to start looking at Shale or one of the other frameworks".
Struts is a very strong work horse that is used in thousands of web applications, but it's no longer sexy or chic. Sounds a lot like what people started saying about COBOL several years ago, huh?
Struts has been so widely adopted that I have little doubt that it will continue to be used, and that many applications built with Struts will be seen on the web for quite some time.
The question I've been asking myself, though, is: Were do I need to start moving next? How do I future-proof my career and my skill set?
I'm asking all you Struts developers out there the same question: What steps should we be taking to prepare for the future? Where do you think our focus should be?
Here's a bit of my thinking:
There seem to be two general categories of web application frameworks: Those that are action based like Struts, and those that are component based like JSF.
I pretty much have to pick one and head in that direction. If I pick action based, I may want to start looking at the early release versions of Struts Action 2. since it incorporates the existing Webworks framework, it wouldn't be a bad idea to start looking at Webworks. In any case, I don't see the use of Struts tags to develop web pages as lasting much longer.
If I pick component based, Java Server Faces (JSF) is the clear choice. JSF is now officially mandated as part of the Java EE 5 specification, and Sun was pushing it very heavily at Java One. The other big vendors, such as IBM and BEA have backed it pretty heavily also. Even though in my opinion, the code in JSF web applications can seem bloated and overly complicated, the fact that someone can write a JSF control and I can just plug it in to my web application is a very strong advantage. I think that spending some time learning JSF would be a wise investment of time.
And of course.. what else? AJAX is now the rock star of the Web Application space. The presenters at Java One figured out after a while that all they had to do was put the word AJAX in the title of the presentation and the room would be full.
Anyway, I've rambled on long enough. What do you all think?
Yes, in the current software world the only thing that is constant is change. To me it seems like investing time in certain technologies or framework is similar to investing in stocks. ;-)
I remember the inital web applicastion days when servlets ruled and jsp was in it early days, we had decided not invest in jsp since it was not a proven technology. But later on JSP became huge( no doubt it had it own share of growing up to do - like model 1 and model 2 architecture).
Now we are working on a web application which was designed in early 2001 without struts. Now every once in a while I have a strong urge to redesign the whole application with struts, but just cant do it taking in to account the amount of efforts involved. So just have to live with the changing turf where sometimes you can move along with change or stay put with existing ones.
I believe the ability for a technology or framework to thrive depends on what value it offers, the ease in availabilty and use, who backs it in the commercial world.
Looking back java, servlets, jsp, struts was widely accepted. while applets though appeared to be promising in browsers initally never lived up to its value proposition.
hmm it would be interesting to watch how JSF, AJAX moves along
I understand where you are coming from Merrill. A few weeks ago I attended a local No Fluff Just Stuff conference. There were talks about Ruby, Ajax, WebWork and even several talks about Java Script but nothing about Struts. I had heard a little about the Struts and WebWork merger, but I was a little surprised to find out that Struts Action 2.0 is likely to be just WebWork with a new name (and the ability to run "legacy" Struts applications). It sure looks like the Struts that we have grown to know, love and hate is dead, or at least dieing.
The problem is that there are not a lot of proven solutions for enterprise application development there to takes Strut's place. WebWork is supposed to be better than Struts, but so much so that it is worth the investment? I have read a lot about Tapestry, but I still do not "get" it. Only lately have I heard good comments about JSF after years of bad press. Shale is not even released, so it is hard to get excited about that. If you don't already have enough options, let me throw out a few more.
Google Web Toolkit (http://code.google.com/webtoolkit/): Yea it is in beta and it is billed as an AJAX development tool but it is pretty much a web application development framework. I played with it a little and it is an interesting concept.