If there’s one thing the Java community has an addiction for, it’s frameworks. There are 100s of Java frameworks and surprisingly there’s even a passionate community of users behind many. However only a handful of frameworks have made it big. Struts and WebWork figure in that list.
The two frameworks recently announced their plans to merge into Struts Ti / Struts Action Framework 2.0, which has resulted in some anxiety and uncertainty in both communitites.
In this interview we speak to Patrick Lightbody, project lead for WebWork and now a committer at Apache Struts. He answers several WebWork + Struts queries and also talks about Ajax frameworks and Ajax support in WebWork. The interview concludes with Patrick’s thoughts on Ruby on Rails and its relevance to the Java community.
IndicThreads >> Hi Patrick and welcome to IndicThreads. Could you introduce yourself?
Patrick Lightbody >> Sure. I am the founder of Autoriginate, Inc, which provides software development and quality assurance automation tools. Before that I was the manager of Professional Services at Jive Software, which builds online collaboration software, such as web-based forums and chat products. In the open source world, I am most closely associated with OpenSymphony, which is where WebWork has called home for the last few years, and OpenQA, which is an organization dedicated to open source QA tools.
“I can’t think of anything better than open source as a tool for learning software…”
My involvement in open source follows the typical story: I first began as a user, got involved with some simple patches, and over time began to take a larger role in various projects. Looking back at when I first started, or some of my early open source projects, such as OSWorkflow, I feel a bit ashamed at how much of a novice I was at the time. But the learning process was amazing. I can’t think of anything better than open source as a tool for learning software.
Patrick Lightbody >> We are just about to push the WebWork code base in to the Apache incubator. Once that happens, much of the WebWork activity under the OpenSymphony umbrella will stop. Assuming all goes well, by the end of April 2006, the incubator process should be complete. At that point, I would expect another 3-4 months of development time on Struts Action 2.0. That means we expect Struts Action 2.0 to be out around August 2006. Of course, all if this is subject to change!
Webwork + Struts should be released by Aug 2006
IndicThreads >> Both the Struts and the WebWork community would be a bit anxious about the merger, so do you have a message for them? Particularly to Struts users ignorant of WebWork and vice versa?
Patrick Lightbody >> I totally understand. In fact, I’m nervous too! This is a big move for both communities and there are no guarantees that it will be pulled off perfectly. In fact, I’m sure problems will arise. However, I’m very confidant that this is the right move. I feel confidant because when I speak with the Struts development team and the WebWork development team, there is a common synergy and feeling that working together is more important than any specific detail of the framework. We all recognize that as the Java web space has matured, new players in the landscape, especially in the scripting language world, will require us to stay on our toes and be ready to embrace new styles and techniques.
“New players in the landscape, especially in the scripting language world, will require us to stay on our toes…”
So I have no doubt that during the merger individual issues will come up and give various people grief. But I also have no doubt that any of us will let those individual problems stop progress. We recognize the importance of this merger and know that the greater good is being served by working together.
As for specific details about compatibility, our plan is to make compatibility a high priority – though not overriding one. Various options include bundling Struts Action 1.x within Struts Action 2.x so you can migrate just certain pages/actions over as you see fit.
IndicThreads >> The simplicity of Struts was an important reason for its popularity. With WebWork + Struts, do you think that level of simplicity will be maintained?
Patrick Lightbody >> I have no doubt that the simplicity will stay. That is in fact one of the main motivators for the merger. Don Brown, who is on the Struts development team, and I have had long conversations about making frameworks simpler. Much of the Struts Action 2.0 goals are to take what WebWork 2.2 has done and expand upon it, making the framework even simpler than WebWork or Struts Action 1.x ever was.
“Struts Action 2.0 aims to be simpler than WebWork or Struts Action 1.x ever was…”
IndicThreads >>With version 2.2, WebWork adopted Spring as its IOC container. So it’s really three major Java frameworks coming together in WebWork + Spring + Struts. Is there a risk of WebWork + Spring + Struts not staying lightweight enough?
Patrick Lightbody >> First, just to be clear, WebWork supports various IOC containers and doesn’t require any of them. What we did is we accepted that Spring is the de-facto leader in the IOC container space and that it didn’t make sense to keep building our own container. By recommending Spring over our own, we were really just simplifying life for developers. However, we continue to support other containers, including Pico and Plexus.
“By encouraging WebWork and Struts users alike to use Spring, Spring will benefit greatly and will continue to evolve…”
I believe that by encouraging WebWork and Struts users alike to use Spring, Spring will benefit greatly and will continue to evolve as the user base demands more from it. As for whether it will remain “lightweight”, which is a subjective term, I believe that is up to Spring more than Struts or WebWork.
IndicThreads >> Struts today enjoys great integration with all major Java IDEs. How do you intend to keep that support post merger? Are you working with any of the IDE vendors on this?
Patrick Lightbody >>To be quite honest, we don’t know. Previously, the IDE integration came after Struts Action 1.x was a success. My gut says that the IDE vendors will again likely wait for the market to demand that kind of integration before they put any resources forward. Naming the project “Struts” isn’t enough – the market has to use it too.
“We’ll try to do our best not to drastically change configuration files and base classes in Struts Action 2.0… “
On the other hand, we’ll try to do our best not to drastically change configuration files and base classes, with the hope that this not only helps migration and compatibility, but that it helps with tool support as well.
IndicThreads >> WebWork is one of the frameworks that feature in the Ajax wave. What are the Ajax features that WebWork offers and will these features survive the merger?
Patrick Lightbody >> I have no doubt that AJAX support will survive the merger. The only question is in what form. This will really depend on the user community. At this point not enough users are seriously using the AJAX features to be able to help us determine what the future will look like.
“Not enough users are seriously using the AJAX features…”
IndicThreads >> Did you evaluate various Ajax frameworks before you decided to integrate the Dojo framework for Ajax? Could you share any comparisons that you came up with?
IndicThreads >> Does WebWork’s Ajax support come primarily from the bundling of the Dojo framework on the client side, or did you make major Ajax specific changes on the server side?
IndicThreads >> How well does WebWork integrate with other popular open source tools like Hibernate?
Patrick Lightbody >> Hibernate works great with WebWork. All the common patterns, such as OpenSessionInView, play nice as well. For the most part, the IOC container does this type of integration, so if it works well in Spring, odds are it will work well with WebWork.
“If it works well in Spring, odds are it will work well with WebWork…”
IndicThreads >> What effect do you think will EJB3 have on frameworks like WebWork and Spring?
Patrick Lightbody >>It’s hard to say. I come from a background where I tried EJB 2 in a large project with very little success. For the applications I work on, I don’t see a lot of value of using a more complicated deployment environment, such as an EJB server, when open source alternatives such as iBatis or Hibernate + Spring are already available.
“The key to EJB3 lies in the tool support…”
I think the real key will be in tool support. If the vendors, such as JetBrains, which makes IntelliJ IDEA, add great support for EJB3, I may find myself using it simply out of convenience.
IndicThreads >> Now, more than a year since you got into a Ruby On Rails controversy, could you give us a Java developer’s perspective on ROR and what it means to Java developers? Any ROR concepts that you especially like and have adopted / intend to adopt?
Patrick Lightbody >> You know, I’ve learned a few things since then. One is: don’t open your mouth until you’ve actually researched something. Since then, I have looked at Rails and in fact a lot of features in WebWork are influenced by it. For example, WebWork has a QuickStart feature that was influenced quite a bit by the inclusion of WebRick in Rails (WebRick is a tiny HTTP server that lets you get started with development quickly).
“A lot of features in WebWork are influenced by Ruby On Rails…”
I’ve also learned that despite the hype, Rails isn’t the “Java slayer” or even the “Java web app slayer”. I believe that with a little work, the Java frameworks like Struts can compete and even beat the productivity gains rails provides. In fact, in Struts 1.3, some of the same “convention of configuration” practices are applied in the configuration files: you can define mapping conventions in struts-config.xml without having to define every single action.
“Rails isn’t the “Java slayer” or even the “Java web app slayer”…”
Overall, I think Rails has been great for the web development community at large. I think those that predict the death of Java in any form are vastly underestimating the language and the platform. But I appreciate the kick-start the Rails has given the rest of us and look forward to continuing to learn from others, as well as teach.
“Those that predict the death of Java in any form are vastly underestimating the language and the platform…”
IndicThreads >> Thanks Patrick for your time and the well thought out answers. The Java community is sure looking forward to Struts + WebWork. Readers can keep up with Patrick through his blog at http://www.lightbody.net/~plightbo/.
>> Apache Struts Books
>> Jakarta project has been the birth place of several top Java components like Struts, Ant and Tomcat
>> JDeveloper comes with a complete set of tools for Struts development
>> The big MVC Framework merger (Struts + WebWork)
>> BEA Workshop for Struts