Struts 1 Reaches End Of Life
Struts 1, the venerable Java MVC Web framework, has reached End Of Life status, the Apache foundation has announced. In a sense, the move simply formalises what has already happened, as the Struts team have focused their efforts on version 2; the last release of Struts 1 was version 1.3.10 in December 2008. The change of status does mean however that, whilst the code and documentation will still be available, no further security patches or bug fixes will be issued. "...you will either need to find mitigations, patch the existing Struts 1 source code yourself or migrate your project to another web framework," the FAQ states. To put it another way, whilst there may not be a particularly pressing need for applications and sites on Struts 1 to migrate to a newer framework, it would be inadvisable for new projects to use it.
Struts 1 was originally created by Craig McClanahan and donated to the Apache Foundation in May 2000. It became the de-facto standard for building web applications in Java for a time, and is still used in many production systems.
“I like to say that Struts 1.x was the 'Killer App' for J2EE,” Matt Raible, a Web Architecture Consultant specializing in open source frameworks, told InfoQ
For the most part, people were struggling with Servlets and JSPs and how to architect their web applications back in 2001. If any kind of framework existed for a team, chances are it was developed in-house. Java developers love patterns and since Struts used and encouraged so many patterns, it was an immediate draw. Developers were also drawn to it because it was mostly Java and they could use their skills to write web applications. In many ways, I see parallels to how Java devs felt when GWT came out. Suddenly, their bare-bones Java skills could be used to write Web 2.0 applications.
I remember talking to a recruiter back in the day who said, "If you know Struts, you're Golden". Back then, there weren't that many Java skills related to web development. Struts was pretty much the only one.
I developed AppFuse in 2002-2003 as a full-stack framework, with Struts as its only web framework; that was when I was a fan of Struts. AppFuse reduced a lot of the boilerplate code that Struts required and integrated with Spring and Hibernate too. However, I often heard from other devs that WebWork and Spring MVC were better. So I tried them and was immediately impressed. The fact that you could use POJOs instead of ActionForms was great, and their testability was much better than Struts.
Struts 1 was superseded by Struts2, getting its first full release in February 2007, but this was based on the WebWork framework. Describing how the merger came to be, author of the InfoQ Struts2 eBook, Ian Roughley wrote
The original proposal, Struts Ti, was born out of a need to evolve Struts in a direction that the code base did not easily lend itself to. Around the time of that proposal, there was a movement by Patrick Lightbody to bring together leaders on several different web frameworks with the goal of achieving a common framework. Although the movement lost momentum, a commonality between WebWork and the goals of Struts Ti at the technology and committer level was found, and the projects were merged, with WebWork providing the base technology.
A consequence of this is that there is no drop-in replacement for Struts 1, and migrating a large Struts 1 application can end up being a complex process. As well as Struts2, the FAQ suggests Spring Web MVC, Grails or Stripes as possible alternatives.
So long and thanks for all the fish....
Thank Craig and thank you Apache for giving us Struts.....
Let me try to help you, first by defending my self on you point "without actually knowing anything in depth". I assume you can right click google my name, second link is to wiki.apache.org/struts/StrutsBooks - where you can see that I wrote the first book on Struts 1 in 2001 - the book is now free and linked there, you can read it, some 20 books followed. (And a glance you can see in 2003 I won trainer of the year by JDJ). So I say I have in depth expertise on the topic, yes?
On the topic of a non Java language, ie Node.js, I find it obvious that polyglot programmer is superior. You can learn a lot by mastering in practice another lang. You can learn that node.js uses a reactor pattern and has speed due to avoiding locks. (ex: what is faster, HashTable or HashMap, right) and lots written on the topic, most acknowledged programmers (ex: author of SQLLite) on concurrency. If you do try polyglot (ie non jvm) with Node, start by comparing npm(node) vs Maven(a popular jvm package manager). Or talking to DB, or being close to browser, or compare Socket.IO real-time push. It may help you that Rod Johnston creator of Spring is no longer doing Spring, but is working on Node framework called Meteor. (and creator of Struts left to do Ruby, it's not a bad choice).
For Action, I use and recommend Hasher.js, it works similar to Struts action that you seem to be familiar with, and it should be easy to pick up. Or you can look at Matt Raible's slides, he has some MVC recommendations.
ps: Also Google - bikeshedding - and click on first link, it will help you.
Martin Thompson Jul 27, 2014