Liferay has a wide variety of frameworks that make it much easier to develop complex functionalities for your own applications with little effort. These frameworks have evolved from the applications bundled with Liferay out of the box so they have been proven in the real world, even in very high performance portals.
This chapter is a placeholder that provides a quick description to the main frameworks provided with Liferay 6. Note that what follows is a work in progress since more sections will be added over time and some of the current sections will evolve into its own chapter as we add more information and detailed instructions on how to use them over time.
File Storage Framework: Allows storing files using the backend of the Document Library. By using this framework you won't have to worry yourself about clustering or backups since that will already be taken care of for the Document Library itself. This framework is used, for example, by the wiki and the message boards of Liferay to store attached files in pages and posts respectively. You can check the sourcecode of these two portlets for great real-life examples of how to use the framework.
Workflow Framework: Allows adding Workflow functionality to your own portlets. One great benefit of using this framework is that you will be able to reuse all of the workflow management UIs provided by Liferay. Also you will be able to abstract your code from the specific workflow engine that will be used (JBPM, Liferay Kaleo, …). Many Liferay portlets use this framework. If you want a simple example to learn how to use it, the blogs portlet is a good start.
Comments Framework: Allows adding comments easily in any portlet without any database code. Many Liferay portlets use this functionality, for example the blogs portlet for the comments of each entry.
Custom fields: A portlet that uses custom fields will allow the end user to extend the fields of its data entries with custom ones defined by the end user. To see a list of data types in Liferay that support this functionality just go to the Control Panel > Custom Fields.
Report abuse: Allow end users to report that some information published in a page should not be there.
Inline permissions Framework: Allows enhancing your SQL queries so that the database takes care of checking for view permissions. This is particularly useful when doing queries for data entries that could result in a large number of items (and thus checking of permissions afterwards would be very ineficient) or when you want to implement pagination (which would not work fine if permissions are checked afterwards and an item is removed). The Document Library or the Message Boards of Liferay are examples of portlets that use this functionality.
ServiceContext: The ServiceContext object contains a set of fields that are common to many different services. It is used, for example to carry tags, categories, permissions information, … It is not a framework in itself but rather a utility object that helps usage of the other frameworks.
Check in the near future for new editions of the Developer's Guide for extended information on each of these frameworks.