DZone recently caught up with Jay Balunas, core JBoss developer and project lead for RichFaces, a rich component library for JavaServer Faces (JSF). Jay is also co-author of the recently released DZone RichFaces Refcard. In this interview, Jay talks about some recent changes to the RichFaces project, as well as a range of new JSF 2.0 features that will be supported (and extended) in the upcoming RichFaces 4.0 release -- these include dynamic resources, advanced queuing, and a component development kit.
The complete transcript of the interview has been provided below.
DZone: Jay, it's a real pleasure to have you with us today. Can you describe some of the work you've been doing recently?
Jay Balunas: I became the RichFaces project lead about six months ago. Since then, we've been busy updating the project site, making different changes, but really the big push has been planning for JSF 2.0 support.
DZone: Now there have been some recent changes made to the RichFaces project. Can you tell us a little bit more about those?
Jay: One of the changes I'm most pleased about is the new logo that we have. This was done almost entirely in the community. We had several rounds of voting, several rounds of alternatives and options, and the one we came up with I think most people liked and I personally like it myself. We also, like everybody else in the world, have a Twitter account that we update with announcements, blog links, different things like that, when we release projects.
And we also have a new project site. We've reformatted our site to follow the JBoss.org format. It makes it a lot easier to get to the information you're looking for. It also ties in our new logo, things like that.
And then finally, we switched to having public meetings, public IRC meetings for most of our community design interactions. So, that's actually at #email@example.com. And we have a calendar up on our project site which outlines when we have meetings and different agendas and topics and things like that.
DZone: When should I consider using RichFaces versus one of the many non-JSF based AJAX frameworks that are available today?
Jay: I think that's kind of a common debate. It's very similar to the Java EE debate versus like a POJO server. I think it really comes down to the standard things-plumbing features, support, vendor lock-in. But for JSF specifically, I think the JSF 2.0 spec really addressed a lot of the issues that the original JSF version had, and a lot of those earlier arguments against JSF, I just don't think stand up very well anymore.
With RichFaces we have taken the core JSF 2.0 standard and then added our own components, our own behaviors, things like that. It also has really good tooling in general. JSF was built for tooling as well.
DZone: So JSF 2.0 is a pretty significant update, as you mentioned. Did RichFaces play a part in driving some of the features in the spec?
Jay: It actually did. Alexander Smirnoff, who is the original architect and developer of AJAX4JSF, is our expert group representative. He was a big part of a new behavior framework, which also became the new AJAX features. If you look at it, the behavior framework actually extends itself into client behaviors which then extends itself further into the new AJAX features. This specifically was done with the f:ajax tag, which behaves and acts surprisingly like the a4j:support tag. It's almost a one-to-one mapping of feature and implementation.
DZone: You mentioned the f:ajax tag. Are there any other interesting and significant changes that have been introduced in the 2.0 spec?
Jay: There's actually quite a bit. I think, as you mentioned, the AJAX support is one of the big puzzle pieces that was missing. They've also standardized on Facelets. It's now called VDL, the View Definition Language, which brought in everything that Facelets users love-the templating and composite components. And they've also deprecated JSP, which I think is the right way to go.
There's lot of other different things that they've added, such as annotations so you don't get XML file bloat. Anyone who's developed a significant JSF application knows that their faces-config file can get out of control. With the new annotations, that lets you, through the annotation metadata, set managed beans and set their relationships programmatically, or declaratively.
DZone: Speaking of RichFaces and JSF 2.0, can you talk a little bit about how RichFaces will specifically support some of these new JSF 2.0 features?
Jay: For JSF 2.0 support, we decided to create the RichFaces 4.0 release, which we're currently in planning and early development of. This is going to not just be straight support, but more of an extension and an integration point so that we can keep adding to the spec like we did originally.
DZone: Can you give a specific example of what it means to ‘extend the standard’?
Jay: In JSF 2.0, they added new resource handling that can pull resource files from jar files and different locations. RichFaces is going to extend that to support dynamic resources. What that means is, you can actually generate the resources you need at runtime. So, it might be specific images, modifications of CSS files.
RichFaces itself used that for skinability and some other features we have. We're also adding things like advanced queuing. The JSF 2.0 queue model is rather simple. And we're going to carry forward our advance queuing into RichFaces 4.0.
There are also things like component development. We want to make component development easier. I think the spec went a long way to that, but it still has some more hurdles and internally we use something called a component development kit. We're going to push that and make it publicly available, and show users how to use the Component Development Kit to make their own components.
DZone: So was there an opportunity to include some of these 2.0 features in the RichFaces 3.3 release? It sounds like everything is kind of getting pushed out into the 4.0 release.
Jay: Yes, we did an evaluation of RichFaces 3.3 branch and took a look at what it would take to make that JSF 2.0 compatible. And what we found is because of the depth that RichFaces 3.3 integrated with the JSF core - in other words to do some of the features that we had in RichFaces 3.3, we had to interact with interfaces and APIs that have changed pretty dramatically with JSF 2.0. So we had to kind of abandon; we wanted to focus more on RichFaces 4.0 instead of trying to retrofit 3.3. Now, we are planning on having a very complete migration guide because I think that's very important. I think it's important that users are able to - OK for this tag I have to make this modification - those types of things.
DZone: How does RichFaces fit into the JBoss enterprise line of products?
Jay: Well RichFaces is offered in several of the JBoss platforms. Most notably, Enterprise Application Platform, SOA Platform and also the Portal Platform. It's also offered in the Web Framework Kit as more of a packaged support for RichFaces and some other web technologies.
DZone: Is there any planned support for JSF 2.0 and RichFaces in the next release of JBoss Developer Studio?
Jay: Well it's more that it's going to be supported in the project JBoss tools. And JBoss tools will have in an upcoming release support for JSF 2, and then also integration specifically with RichFaces, where we'll have the palette, visual editor, auto completion--all the things you'd expect from an IDE. Eventually, after it's been in the community, reviewed, updated, those types of things, it will be added to a platform release, enterprise release.
DZone: What are your release plans for RichFaces 4.0?
Jay: Well we just released an Alpha1 just before JBoss World on August 31st. We plan for an Alpha2, which will obviously be more functionally complete, around the end of October. After that, we plan on doing monthly releases of Betas and CRs, until we finally GA sometime early next year.
DZone: Is there any plan to continue supporting the 3.3 branch?
Jay: Actually, at the same time we've been also releasing 3.3.2. We had a CR 1 release, also just before JBoss World. We plan on having the 3.3.2 GA release at the end of September. After that, the 3.3.X branch is really going to go into maintenance mode, primarily because everybody is shifting to 4.0; focus, development, there's a lot to be done.
DZone: Great. Well, taking a few steps back and just looking at sort of the project as a whole, how can I as a developer get involved in the RichFaces project?
Jay: I think there's lots of good ways. We have tried to expand those and make it as easy as possible. Includes things like just helping out on the forums, answering questions or letting us know problems you have. Trying out the 4.0 Alpha1 release, or all the way to posting ideas and comments on the design forum. You know, flushed out ideas that you'd like to see implemented. And we can talk about how to do that in patches and different items like that. I also encourage users to participate in our weekly meeting. They're open. Someone is almost always on the channel anyway for interactions, questions, and also to talk about design ideas.
DZone: Given the plethora of choices that developers have today when it comes to RIA development, how would you position RichFaces in terms of its unique value proposition?
Jay: Well, I think for one, RichFaces has a very large, rich components set: lists, tables, drag and drop, trees, lots of different options. We also have a really active community. So our forums are full of good suggestions, questions and ideas. Our development team is active with the community itself as well. We also have really good tooling through JBoss tools, which makes it easier to begin with these technologies and really being productive faster, right. So, that's part of it. Also RichFaces is developed by people who are contributors and leaders of the standard. So you know that things [we] are working on, even if they are value add from RichFaces, eventually may be part of that standard.
Also I think, with JBoss specifically, because we're part of the JBoss suite of projects, you get a little bit of the best of both worlds. You get innovation and cutting edge technology in the projects, but then JBoss also offers, through its various subscriptions, some of that stable production-ready and SLA-based support. So you can have either one that you need.
DZone: Any final words of advice for our members?
Jay: Sure, for one, check out the JSF 2.0 spec. There's some really good books on it as well. And also, take a look at our project and RichFaces 4.0. Let us know what you think. Let us know what's broken. Let us know what works. Any ideas you have. I really encourage people to take part in our community. Check out our public meetings or just lurk on our forums and see what people are saying.
DZone: Jay, on behalf of the DZone community, thank you very much for your time today.
Jay: Thank you.