The Java platform provides an standard referred to as JSR-168 that standarizes how portlets interact with portlet containers and ensures compatibility across different portal products as long as portlet adheres to the standard. Liferay Portal provides a 100% compatible portlet container that guarantees that any portlet that adheres to the standard specification will be able to run within Liferay.
In JSR-168 a portlet application may aggregate several different
portlets and is packed in a WAR file just as a standard Java web
application. The portlets of the application are defined in a file
called portlet.xml
that is placed in the
WEB-INF
directory inside the WAR file. This file
can be seen as an extension to the web.xml defined in the Java Servlet
Specification. The Java Portlet specification allows portlet
containers
For more information related to JSR-168 it is recommended to read the specification itself. Also several articles introducing development of JSR-168 portlets and explaining how to use several portlet frameworks are available online.