Thursday, March 29, 2012

Incredibly Fast JSF Component Development

Why is a JSF components development so painful?

It would be really great if I could develop full-blown JSF components wrapping some JavaScript UI widget as fast as I'm developing plain HTML, wouldn't it?

Just two words: fast turnaround!

Every tool and every framework which tries to simplify a process should have a strategy to allow a fast turnaround. It is lowering a learning curve and saves developers many invaluable hours. And mainly it makes working with the a tool a pleasure!

RichFaces CDK

The CDK project is sample of such a powerful tool - it allows you to write just two pieces -
  • a Java component interface,
  • a HTML renderer (with Facelets-like syntax),
and then it takes these definitions and
  • generates all the boilerplate code automatically including
    • all the Java code,
    • configurations (faces-config.xml and *.taglib.xml),
    • and a VDL documentation.
Brian Leathem has written series of articles introducing how easy can JSF component development be when using RichFaces CDK.

But besides it is the powerful tool, you can also achieve a really fast development turnaround using CDK- just by using proper tools!

Quick Turnaround with RichFaces CDK

There is guide which covers how to setup your tooling to start with a development.

It covers setting up the component and demo project in JBoss Tools (on top of Eclipse IDE) and how to automatically trigger build when you change CDK resources.

And to make the deployment phase as quick as possible?

We are using JRebel to hot-deploy built resources into JBoss AS 7, which is itself f&@#ng fast.

That's it!

You can just save & refresh the page!

The pictures used in the blog are only illustrative, taken by various authors and published under Creative Commons license. The references: the toolkit by Ryan Hyde and the trains by Joel Down


  1. but richface have a hugh performance problem on jsf components!!

    1. Hey Jack, could you be little more specific?

      * What's your performance problems?
      * Are they based on server-side implementation or client-side?
      * How did you measured performance?
      * It's just your perception, or something exact?

      Thanks, your information might help us improve where we can!