Search in the Documentation:

Portlets vs. Modules

In order to differentiate portlets from modules, we offer the following table that summarizes the differences:

 

Portlet

Module

Classification

Older technology, extension to traditional Web server model using well defined approach based on strict isolation mode.

Using newer, loosely defined "Web 2.0" techniques, integration at both server or client level.

Philosophy/Approach

Approaches aggregation by splitting role of Web server into two phases: markup generation and aggregation of markup fragments.

Uses APIs provided by different modules as well as content server to aggregate and reuse the content.

Content dependencies

Aggregates presentation-oriented markup fragments (HTML, WML, VoiceXML, etc.).

Can operate on pure content and also on presentation-oriented content (e.g., HTML, JSON, etc.).

Location dependencies

Traditionally content aggregation takes place on the server.

Content aggregation can take place either on the server-side or on the client-side, but usually happens on the server.

Aggregation style

"Salad bar" style: Aggregated content is presented 'side-by-side' without overlaps.

"Melting Pot" style: Individual content may be combined in any manner, resulting in arbitrarily structured hybrid rendering and editing.

Event model

Read and update event models are defined through a specific portlet API.

CRUD operations are based on JCR architectural principles, and on the client REST interfaces allow content interactions.

Relevant standards

Portlet behavior is governed by standards JSR 168, JSR 286 and WSRP, although portal page layout and portal functionality are undefined and vendor-specific.

Base standards are JCR API, REST, JSON and XML. Defacto standards include JQuery as a Javascript framework.

Portability

Portlets developed with the portlet API are in theory portable to any portlet container.

Modules are Jahia specific.

Repositories

Portlet repositories have been a pipe dream for a long time, but despite multiple efforts they have never taken off and they stay usually specific to a portlet container implementation. .

Modules are available on Jahia’s forge, developers and integrators are encouraged and free to post them there, or anywhere else they wish.

Performance

A page will be fully dependent of the rendering speed of each portlet to achieve good performance, which may be difficult if closed source portlets are present in the system.

Modules have built-in support for page caching if they re-use Jahia-stored content, which is generally the case.

In general, integrators looking for a powerful and rapid integration solutions will probably want to use modules. The main use case for portlet usage is the integration of legacy applications that are only available as portlets. In the case of other systems (servlets, web services) it is preferred to use modules as the integration will be more robust, easier to re-use and deploy and to maintain,of course.