“Liferay Enterprise Portal.” Sure, Liferay packs all the features that make it a strong “Portal.” In partnership with Sun, Liferay has a large and experienced team behind their portal capabilities including their implementation of the latest JSR-286 portlet specification / industry standard.
The JSR-286, for its part expands the existing portlet specification in meaningful ways:
- Portlet filters
- Portlet Event support
- Public Render Parameters
- Resource serving
With the strength of its support for the portlet specification one might be tempted to think of Liferay as “just another portal.” That classification would be misguided.
Liferay is a platform and a framework for developing collaborative and social applications and services. Portal is just the mechanism for aggregating and distributing these capabilities.
At the heart of Liferay is a service oriented architecture. Liferay ships with a host of out-of-the-box services for creating collaborative applications. To cite a few (but not all) examples:
- Profile Service
- Search Services
- Group Services
- Calendar Service
- Friend Services
- Activity Services
- Forum Services
- Blog Services
- Rating Services
- Tagging Services
If the out of the box services do not provide the functionality coverage you’re application requires or you need to create your own domain specific or composite services; Liferay provides a capability called Service Builder. Service builder makes it very easy to create services. With the modification of a simple XML file and the execution of a code generation script you can quickly create all the basic plumbing for your services. If you need persistence, all the Hibernate work is created for you. If your service needs to be remoted through interfaces like SOAP, all that plumbing can be generated for that as well. The only code you need to write is the code that is custom to your service. All the machinery is quickly taken care of by Liferay; the framework.
Liferay makes use of Hibernate to handle data persistence. Service builder does all the work of configuring and coding against Hibernate for you making this somewhat transparent to you. There is real world value here. You deal directly with your model not low level JDBC code. You can configure read / write separation (a special thanks to a community contribution for this. – community matters) and your application is immediately enabled for several mainstream / popular relational databases.
In addition to a rich services framework, Liferay also enables application developers with powerful eventing and lifecycle capabilities called Hooks. Applications can register to receive and act upon portal and portlet start up and shutdown events, user activities, persistence level CRUD (create, read, update, delete) events, CMS activities and many other out of the box events. It’s also possible for applications to register and fire their own events for consumption by sibling applications.
To support your presentation tier Liferay has developed a host of tag libraries that work in concert with standard tag libraries. This makes it very easy to create standards based, lightweight presentations on top of your application and services code. In addition to server side libraries, Liferay is designed to work extremely well with JQuery, a leading JavaScript / AJAX library for rich application UIs. The Liferay team even hired a JQuery committer in order to drive home the integration and to help emphasize the importance of strong user experience and quality of UI within the platform.
Is Liferay a Portal? Yes of course it is. Liferay has a strong implementation of the industry standards and is the most popular open source JSR-286 portal in the space today. However Liferay is much, much more. If you need to build a collaborative or social application: Liferay takes care of all the boilerplate coding and provides the fundamental capabilities out-of-the-box allowing you to focus your time, attention and money on your business problem.
