PrimeFaces is an open source component library for JSF2 offering an extensive suite of Ajax enabled controls. It provides the usual components expected by application developers such as a datatable, tree, accordion panel, autocomplete and tabs. In addition it includes several other unique or otherwise interesting components which are not found in similar competing offerings such as:
- Breadcrumb navigation
- Simple Spreadsheet
- Calendar view
- Star Rating
- Wizard
- Manual Image Cropping
- Growl Style Notifications
Among the components one can also find implementations for image comparison, tag cloud generation and even an OS X styled stack. One reason for such diversity, according to Prime Teknoloji (the company behind PrimeFaces), is that the firm is not a software vendor. It is a consulting company actually using PrimeFaces for its clients.
This is a major characteristic of PrimeFaces that sets it apart from the competition, the company argues, since Prime Teknoloji acts both as the producer of the library and as the consumer when it acts on behalf of its clients. This has a heavy impact on core development since important bugs are fixed as soon as possible. Keeping the library lightweight and usable is also a major goal for PrimeFaces as any deviations will be instantly visible to Prime Teknoloji clients.
PrimeFaces also offers PrimeFaces Mobile, a version targeted at iPhone/Android (based on jQuery Mobile).
For this new release InfoQ contacted Project Lead Çağatay Çivici to learn more about it:
InfoQ: What are the new features of Primefaces 3.x?
PrimeFaces 3 development took almost a year, compared to 2.x, there are various new components, reimplementation of some previous components, internal enhancements for performance, optimized resource loading, more flexible Ajax behavior callbacks and more. In general, PrimeFaces 2.x can be seen as a port of PrimeFaces 1.x to JSF 2.0 which was for JSF 1.2.
InfoQ: How compatible is this version compared to Primefaces 2.x? Is the migration easy? Will Primefaces 2.x still get support and bug fixes?
Migration is not hard but not easy as well, mainly due to the fact that component callbacks are implemented as Ajax behavior events. PrimeFaces 3.x is an important milestone for us. That is one of the reasons why it took almost a year, as it was our chance to do major changes. Starting with PrimeFaces 3, the framework will be much more stable.
InfoQ: Can Primefaces be mixed with other JSF libraries (such as IceFaces and Richfaces)?
We have never worked on trying PrimeFaces with other libraries, our users however have done this. PrimeFaces and RichFaces both use jQuery so by using only one include on jQuery per page they should be able to work together. Regarding IceFaces, we don't know any user that uses both, which is likely due to the nature of the IceFaces D2D approach.
InfoQ: How important is HTML5 for you? Was it easy adding HTML5 support?
HTML5 is very important for us because it provides us a development environment to come up with rich features in PrimeFaces. HTML5 is integrated in PrimeFaces with graceful degradation, for example the fileUpload component allows Ajax uploads, multiple selection, drag and drop from filesystem, however on non HTML5 browsers it uses iframe transports. Also the chart component uses the HTML5 canvas element. In addition we use the data-* feature a lot. Regarding PrimeFaces Push, it is powered by WebSockets.
InfoQ: Where is current development aimed at? What can we expect from PrimeFaces 4?
Currently there are no plans for PrimeFaces 4, we would like to stay on PrimeFaces 3.x for some time. As of now, PrimeFaces 3.1 is released with 7 new components, new features to various components and a significant amount of maintenance. Our roadmap is about delivering the most voted feature requests, our own ideas and of course maintenance to improve the quality of the library. When we decide to do PrimeFaces 4, it should be for something special.
InfoQ: What is the release schedule from now on regarding major and minor versions?
The current schedule starting from PrimeFaces 3.x is monthly based, so we are trying to release a new PrimeFaces 3.x iteration every month.
The Java artifacts are not yet in Maven Central but only in the PrimeFaces Repository (Prime Teknoloji is currently looking at this matter). For more information see the reference documentation, the Forum and the Wiki. The source code is hosted in Google code.