Today marks the release of JavaServer Faces (JSF) 1.0 specification. It's been over two years in the making, and whether you're a skeptic or a supporter, there's no doubt this day has been highly anticipated.
If you're still not sure what JSF is, think of as a set of APIs that facilitate component-oriented, event-driven web development. It represents the standardization of dozens of efforts in the Java community to simplify the task of building web applications. Any time the community builds dozens of solutions to a problem, there is an obvious need, and fulfilling such a need can lead to huge productivity gains. Since so much application development these days is web development, enhanced productivity in this space is a Big Deal.
Individual frameworks can increase productivity, but when the majority of the community supports a single framework, the force of the gain is multiplied. A good example of this is the support for Struts in tools, other frameworks, and books. In effect, Struts is the de-facto standard, and its heavy industry support has intensified its utility.
Struts doesn't bring user interface components and event handling to the web world, however. This has been the domain of other frameworks like Tapestry, Echo, and SOFIA. JSF is an attempt to bring Struts-level momentum to a framework that focuses on the user interface side of things.
User interface frameworks have two main elements: a simplified programming model, and support for user interface components. A simplified programming model means less time spent worrying about request parameters and thinking too much about the way HTTP works. Support for user interface components means less time spent re-inventing the wheel, because others will have already done the hard work for you. You'll see these elements packaged inside of IDEs with visual design tools that simplify the task of developing GUIs and integrating them with server-side code. (Tools are not a requirement for JavaServer Faces development, however).
If this vision of powerful visually-oriented IDEs with a full-fledged user interface component model sounds familiar, this is certainly not an accident. Make no mistake: JSF is a direct competitor to Microsoft ASP.NET WebForms, which enjoys tight integration with Visual Studio.NET. More importantly, JSF is an attempt to fill a hole in the standard Java stack – a hole that .NET has had fully fleshed out since day one.
JavaServer Faces is also at the center of a much larger goal of the Java community, also partially fueled by competition with .NET: simplification. You've seen this spun in different ways, like "targeting corporate developers", "simpler Java", and so on. Since most business applications today are web applications, this means "simplify web development." So no matter how complex some may think JSF is, using it is quite the opposite, and I think it can deliver its promise.
So, what's in store for the future? First, you'll see a lot of new products – IDEs, implementations, components and so on. You'll also see added support in existing IDEs and J2EE servers. You'll also see more people using JSF in practice and integrating it with other frameworks, like Struts. And you'll see a lot more documentation and resources, including my forthcoming book, JavaServer Faces in Action, and several others books as well. Some of these products have already been announced; many others are in the works.
As this industry begins to grow, you can count on JSFCentral to keep you abreast of that growth. Our mission is to serve as the focal point for JavaServer Faces technology, and to help all those involved – from front-end and application developers to those developing components, tools, and implementations – exchange information and grow.