The Portlet Specification is another Java Specification Request (JSR-168) that was recently released. According to the Portlet JSR home page,
the specification defines "a Portlet API that provides means for aggregating several content sources and applications front ends.
It will also address how the security and personalization is handled. Portlets are web components (like servlets) specifically
designed to be aggregated in the context of a composite page. Usually, many portlets are invoked to in the single request of a
portal page. Each portlet produces a fragment of markup that it s combined with the markup of other portlets, all within the
portal page markup."
Portals are very popular in enterprise environments and on the Internet (think My Netscape or CitiBank Online), but there are a lot
of different standards, which makes things difficult for portlet developers. Developers of existing Portal servers include BEA, Oracle, IBM, Apache, and
Sun, who are all on the Portlet expert group as well as the JSF expert group. Since portlets need to create user interfaces
and are part of servlet-based web applications, it makes sense that they should work with JSF, and they will. If you develop a portlet,
you'll be able to use JSF as your user interface component framework. This is the whole point behind Faces' ExternalContext interface,
which provides generic access to features of the ServletContext
or the PortletContext, depending on which environment your
JSF code is using.