I am using a little-known, yet very powerful, framework called RIFE. I discovered it when I came across a heated discussion between Geert Bevin, the author of the framework, and the Ruby on Rails camp.
What I like most about RIFE is the separation between presentation and logic, and the ease with which raw HTML code can be manipulated using Java code. This provides the foundation for creating visual components with little difficulty.
Templates are simple HTML files interspersed with RIFE tags. There are only four tags: the placeholder (or value) tag
V marks a location on a page where content can be inserted; the block tag
B marks a region of contents that can be manipulated as a unit; the directive tag
I allows inclusion of templates; and, the default block tag
BV identifies a block of content as the default one to be rendered at a placeholder location. Any HTML code enclosed within any of these tags can be manipulated by code, which allows for interesting effects. For example, a block of text can be marked as an error message and displayed at a specific location whenever that error occurs; similarly, one of several blocks of text in different languages can be displayed according to the user’s chosen locale. As would be expected, the RIFE framework already provides such pre-built components.
The ease of developing components in this way puts RIFE ahead of most other frameworks. In JSF, for example, visual elements are rendered by Java code, which is a rather un-natural way of developing web pages; in RIFE, visual elements are created with raw HTML code, and are interspersed with the template tags so that they can be manipulated by a backing Java class.
However, RIFE has much more to offer: a persistence subsystem, a CRUD rapid application development module, automatic validation, etc. But, perhaps even more important, RIFE has a dedicated community that is constantly growing as new users realise the productivity gains to be derived from the framewok. Geert Bevin is very active in the community, always taking time to listen to his users’ suggestions and help them. With so many web frameworks available nowadays, all following the same principles, RIFE comes as a breath of fresh air.