The options I've tried are:
- The framework liferay provides. (MVC Portlet, Alloy UI)
- Spring Portlet MVC
- Vaadin
- Java Server Faces (Portletfaces and Primefaces components)
- Java Server Faces (Portletfaces and IceFaces components)
- Apache Wicket.
In my opinion, I would rate these frameworks in the following way:
- JSF Primefaces
- Spring Portlet MVC
- Vaadin
- Liferay Framework
- JSF IceFaces
- Wicket.
This is the discussion of each:
JSF Primefaces
This is the one I found best, easy to configure, most of the components working out of the box, and easy spring integration. The con is, if you're used to JSF 2 and greater you'd find some missing features which are kind of important like view scoped managed beans and you loose the ability to send parameters over EL (this is because of the spring integration). But in general terms this framework fits great for general portlet development.
Spring Portlet MVC
This framework really gets along with the portal and is the ideal thing if you like to code tons of javascript and have fine grained control over everything. The con is the increased development time and if you have a project with lots of portlets then you'll have a lot of xml files.
Vaadin
Vaadin does a great job also for portlet development most of the components work out of the box, but it has some annoyances:
- Every time you change something you need to re deploy your portlet.
- You need to have the same vaadin library you're developing deployed on your portal which may cause problems with older vaadin portlets.
- Compile-time weaving for spring integration.
- Some features mising.
Liferay Framework
This framework works really well on liferay, but is really a developer nightmare, not well documented, lots of javascript and java code, difficult to integrate with your own spring context. In general terms, this is only well-suited for really simple portlets with no ajax support.
JSF IceFaces
This is supposed to be the best option for liferay JSF portlet development, or at least that's what the creators say, nevertheless I couldn't really make it work after several hours of configuration and web browsing, but as it is a JSF framework, the basic jsf features work well, and I think with the proper documentation this could get really good.
Wicket
Even though I love wicket and was the first option I tried, I was disappointed that it barely worked. No wicket magic for ajax support and also wicket dropped support for portlets on 1.5 so really, is not a good option for liferay.
Well, that's it with the frameworks, I hope this short review can help you to find the best framework for developing liferay portlets.