The Java Portlet Specification defines a contract between the portlet container and portlets and provides a convenient programming model for Java portlet developers. Portlets are pluggable user interface software components that are managed and displayed in a web portal, for example an enterprise portal or a web CMS. A portlet can aggregate (integrate) and personalize content from different sources within a web page. A portlet responds to requests from a web client with and generates dynamic content. Portlets produce fragments of markup (HTML, XHTML, WML) that are aggregated into a portal. Typically, following the desktop metaphor, a portal page is displayed as a collection of non-overlapping portlet windows, where each portlet window displays a portlet. Hence a portlet (or collection of portlets) resembles a web-based application that is hosted in a portal. Some examples of portlet applications are e-mail, weather reports, discussion forums, and news. A portlet is managed by a portlet container. Portlet standards platform independent application programming interfaces that are intended to enable software developers to create portlets that can be plugged into any portal supporting the standards. An example is the Java Portlet Specification. A Java portlet resembles a Java Servlet, but produces fragments rather than complete documents, and is not bound by a URL. A portlet container runs portlets and provides them with the required runtime environment. A portlet container contains portlets and manages their life cycles. It also provides persistent storage mechanisms for the portlet preferences. A portlet container receives requests from the portal to execute requests on the portlets hosted by it. A portlet container is not responsible for aggregating the content produced by the portlets; the portal itself handles aggregation. A portal and a portlet container can be built together as a single component of an application suite or as two separate components of a portal application. JSR 168 The Java Portlet Specification V1.0 was developed under the Java Community Process as Java Specification Request JSR 168, and released in its final form in October 2003. The Java Portlet Specification V1.0 introduces the basic portlet programming model with: two phases of action processing and rendering in order to support the Model–View–Controller pattern. portlet modes, enabling the portal to advise the portlet what task it should perform and what content it should generate window states, indicating the amount of portal page space that will be assigned to the content generated by the portlet portlet