Status message

A Jakarta Portlet Creation Review has been created for this proposal.

Jakarta Portlet

Monday, March 24, 2025 - 12:46 by Neil Griffin
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the community. Please login and add your feedback in the comments section.
Is this a specification project?
Patent License
Implementation Patent License
Parent Project
Proposal State
Community Review
Background

The Jakarta Portlet project aims to migrate the JSR 362 Portlet 3.0 Specification and API from the Java Community Process (JCP) to the Eclipse Foundation under Jakarta EE. This transition ensures the continued maintenance of the Portlet standard, aligning with the broader Jakarta EE ecosystem. By preserving and modernizing the specification, the project will provide support to developers and organizations to ensure portlet applications can be deployed within a portlet container running inside a Jakarta EE servlet container or application server.

Scope

The Jakarta Portlet project defines the Specification and API, which enables the development of modular, server-side components that can be deployed within a portlet container running inside a Jakarta EE servlet container or application server. 

The Jakarta Portlet project migrates the JSR 362 Specification and API from Java EE to Jakarta EE. This includes updating package namespaces from "javax.portlet" to "jakarta.portlet", migrating XML namespaces from "http://xmlns.jcp.org/xml/ns/portlet" to "http://jakarta.ee/xml/ns/portlet", and aligning Java EE dependencies such as "javax.servlet" with their Jakarta EE 10 equivalents.

Future iterations of the project may introduce new features and enhancements, but the initial scope is strictly limited to completing the namespace and dependency migration to ensure compatibility with Jakarta EE 10 and to ease the migration path for developers and organizations.

Description

The Jakarta Portlet project is responsible for defining the Specification and API, which enables the development of modular, server-side components that can be deployed within a portlet container running inside a Jakarta EE servlet container or application server. 

The Portlet Specification defines requirements for the portlet container, including an execution lifecycle and phases such as HEADER_PHASE, EVENT_PHASE, ACTION_PHASE, RESOURCE_PHASE, and RENDER_PHASE. The portlet lifecycle follows a request/response design similar to the servlet lifecycle, where each portlet has the opportunity to participate in the lifecycle and contribute output to the response. The Specification also specifies requirements for a client-side JavaScript API, including a client-side facility called the Portlet Hub. The Portlet Java API, Javadoc, and JSDoc define the contract for a portlet application to interact with the portlet container. A portlet application consists of one or more portlets that are packaged within a single Jakarta EE Web Application Archive (WAR) artifact.

The Specification also defines minimal requirements for a portal, which is a related technology responsible for aggregating output from a portlet container into a cohesive view, typically a complete HTML document rendered in a browser. Portals typically provide other features, such as page definition, portlet location on pages, and user management.

Why Here?

Hosting the Jakarta Portlet project at the Eclipse Foundation within the Jakarta EE community ensures the continued development and maintenance of the Jakarta Portlet Specification under an open and collaborative governance model. This transition aligns the specification with Jakarta EE standards, providing a clear migration path for existing Java EE-based portlet applications while fostering innovation and long-term stability.

By being part of the Jakarta EE ecosystem, the project benefits from a well-established community of developers, enterprises, and vendors who contribute to and rely on Jakarta EE technologies. This collaboration enhances interoperability, facilitates adoption, and ensures that portlet applications remain a viable option for organizations deploying modular, server-side components within portals leveraging portlet containers that rely on Jakarta EE servlet containers and application servers.

Future Work

The initial focus of the Jakarta Portlet project is the migration of the JSR 362 Portlet 3.0 Specification and API to Jakarta EE, including renaming package namespaces, updating XML namespaces, and aligning Java EE dependencies with their Jakarta EE 10 equivalents. Following the completion of this transition, future work would likely involve aligning with Jakarta EE 11 and formalizing the requirements for MVCBean portlets, which would introduce a dependency on the Jakarta MVC API, enabling developers to use a familiar API for developing portlets that adhere to the Model-View-Controller (MVC) design pattern.

To grow the community, the project plans to quickly complete the work of migration to Jakarta EE so that developers can begin transitioning their portlet projects. In addition, the project will provide a basis for other MVC projects to migrate to Jakarta EE, such as PortletMVC4Spring and the proposed Jakarta Faces Bridge, which each have their own communities that contribute to the overall portlet ecosystem.

Project Scheduling

The project is expected to progress quickly, given that the work of migrating the Portlet APIs and Technology Compatibility Kit (TCK) is already complete. In addition, the work of migrating Apache Pluto (the compatible implementation) to these new APIs (as well as related Jakarta EE 10 dependencies) is also complete.

Project Leads
Interested Parties

Liferay, Inc.

Initial Contribution

The initial contribution to the Jakarta Portlet project will consist of the Specification document, Java API, JavaScript API, and Technology Compatibility Kit (TCK). In order to adhere to semantic versioning principles, the project version will be "4.0," as the transition from "javax.portlet" to "jakarta.portlet" constitutes a breaking change, along with the dependency on Jakarta EE 10 APIs, which is also a breaking change.

The copyright is currently held by IBM Corp. and will require IBM’s authorization and the transfer of relevant intellectual property rights, including copyright and/or ownership.

The Jakarta Portlet API does not depend on any third-party libraries beyond existing Jakarta EE 10 specifications, such as Jakarta Servlet.

Source Repository Type