Image of an arrow

Liferay Montreal user group: Le premier meetup de la rentrée.

Avatar

Nicolas Juneau

Le 18 août à Montréal s’est tenue la première instance du Liferay Montreal User Group depuis septembre 2013. Le meetup fut centré sur les nouveautés apportées par Liferay 7, principalement pour les développeurs.

Tour du mobilier

01-ui

Le premier facteur qui saute aux yeux, c’est la nouvelle interface graphique. Ce qui est important de comprendre, c’est que malgré un remaniement presque complet du UI, les fonctionnalités sont très similaires à la version 6.2 de Liferay. On remarque par ailleurs une expérience intégrée entre le panneau de contrôle et le site en soi. Bonne ou mauvaise chose? À vous de juger.

Nouvelle suite d’outils frontend

Suite au petit tour d’interface, le développement frontend a été abordé. Liferay 7 propose beaucoup de nouveautés de ce côté. Notamment une suite basée sur des outils tels que Yeoman, NPM et Gulp. Le développement frontend est maintenant isolé du backend. Auparavant, les développeurs faisaient appel au SDK ou au plugin Maven pour créer des thèmes. Maintenant, le flot de développement des fonctionnalités frontend ne dépend plus des fonctionnalités de Maven ou de Ant.

Générateur Yeoman

Yeoman est un outil en ligne de commande pour générer des projets. Il est analogue aux archétypes Maven.

Pour générer un thème, cette ligne suffit :

yo liferay-theme

Il est même possible de générer les Layout Templates avec la sous-commande « layout » :

yo liferay-theme:layout

Hot-deploy

Les thèmes peuvent être déployés automatiquement aussitôt qu’une ressource du thème est changée :

gulp watch

Usage par défaut de FreeMarker

Alors que les thèmes étaient typiquement développés à l’aide du moteur Velocity dans Liferay 6.2, les thèmes sont maintenant créés à l’aide du moteur FreeMarker par défaut dans Liferay 7.

Nouveautés et régressions

Staging: Gabarits de publication

Gabarit de publi

Liferay 7 propose un nouvel outil intéressant de publication : les gabarits de publication. Dans Liferay 6.2, chaque publication de site devait être paramétrée manuellement.

Maintenant, il est possible de configurer un « gabarit » de publication afin de ré-effectuer une publication avec des configurations sauvegardées. Moins de manipulations, moins d’erreurs.

Fonctionnalités disparues de la CE

Tel qu’annoncé par Liferay, certaines fonctionnalités ont été retirées. Le clustering et le support des bases de données propriétaires ont notamment été retirés de la version communautaire1. On note aussi le retrait du support de LCS et Audience Targeting 2.0 en version communautaire2.

2https://web.liferay.com/fr/web/bryan.cheung/blog/-/blogs/audience-targeting-2-0-and-lcs-will-not-be-compatible-with-liferay-portal-7-community

Développement backend avec OSGi

La base

OSGi a été au centre de ce meetup étant donné les ramifications.

Liferay 7 repose maintenant sur le cadriciel de services OSGi3. Ce cadriciel est notamment utilisé par l’IDE Eclipse. Sans entrer dans les détails de OSGi, ceci cause les différences suivantes :

  • Tous les modules sont maintenant des « bundles » au format JAR

  • Certains « hooks » sont maintenant remplacés par des « bundles » implémentant des services spécifiques

  • Les modules sont déployés dans le conteneur OSGi (en occurrence, Apache Felix4), pas dans le conteneur Web

Le fait d’utiliser OSGi introduit un nouveau concept lors du développement : Les dépendances dites « runtime ».

Dans un développement d’application Web typique, les dépendances sont spécifiées « compile time » à l’aide d’outils tels que Maven ou Ivy. La spécification des dépendances nous garantit qu’au moment de la compilation du programme, tous les éléments sont présents pour le compiler.

Cependant, ceci ne garantit pas que les composantes nécessaires au bon fonctionnement du programme seront présentes une fois le programme déployé. C’est là que OSGi entre en jeux : chaque module OSGi doit définir ses dépendances d’exécution. Par exemple, nous pouvons définir que « Portlet A » dépend de l’API « portal-kernel ». Si le conteneur OSGi détecte que « portal-kernel » est défectueux ou absent, « Portlet A » sera automatiquement mis hors service.

Voici deux diagrammes illustrant la différence :

Illustration 2: Développement avec OSGi

Comme on peut le voir dans les images précédentes, les modules Liferay 7 sont déployés dans un runtime OSGi, contrairement à un runtime classique EE. Les modules OSGi peuvent cependant être interconnectés au container Servlet via un « Extender » OSGi. Liferay fournit par ailleurs plusieurs « Extenders » par défaut afin de faciliter le développement d’applications Web.

Les annotations

Les portlets dans Liferay 7 peuvent maintenant être déclarés à l’aide d’annotations. Voici un exemple :

@Component(
immediate = true,
service = Portlet.class
property = {
// portlet.xml props here
}
)
public class MyPortlet extends MVCPortlet {
//…
}

Il faut noter que l’usage de l’annotation OSGi « @Component » n’est pas une manière standard JSR-286 de déclarer un portlet. Cependant, il permet au portlet d’être déclaré comme composante OSGi. De plus, aucun « portlet.xml » n’est nécessaire.

Outils de développement

Liferay propose de nouveaux outils pour le développement backend :

  • Liferay Workspace (basé sur Gradle)

  • Blade CLI (générateur de projets et exécuteur de tâches)

Le « liferay-maven-plugin » est maintenant discontinu5. Cependant, cela ne veut pas dire que développer avec Maven n’est plus possible. Simplement, le plugin Maven de Liferay n’est plus vraiment nécessaire pour effectuer la plupart des tâches. Il est possible de créer un projet Maven de toute pièce et de l’assembler en utilisant des plugins tels que :

  • maven-bundle-plugin (provenant du projet Apache Felix)

  • bnd-maven-plugin (Bndtools)

Par ailleurs, un exemple complet de projet développé avec Maven a été présenté et publié sur Github : https://github.com/njuneau/lr7-test-project .


Articles similaires

Image of an arrow

En continuant nos rétrospectives de 2023, nous souhaitons mettre en lumière les contributions que nous avons apportées tout au long de l’année aux divers projets open source que nous utilisons quotidiennement pour nos besoins et ceux de nos clients, ou auxquels nous sommes stratégiquement impliqués par leur développement ou leur maintenance. En tant que membre […]

Bonjour ! Je m’appelle Emma Falkiewitz et j’ai 21 ans.‌‌ Je suis en 4ᵉ année d’école d’informatique à l’université de technologie de Compiègne (l’UTC) en France. Je viens de terminer mon stage à Savoir-faire Linux où j’ai travaillé sur Jami. Comment t’est venu ce choix de carrière ? Au lycée, j’étais déjà intéressée par l’informatique, […]

[L’introduction est en français, le reste du texte en anglais] 2023 fut une année très prolifique pour Savoir-faire Linux, et à l’occasion de notre participation et de notre sponsorisation du LF Energy Summit 2024, nous souhaitions partager une rétrospective des conférences auxquelles nous avons participé en 2023. Grâce à nos investissements en R&D ainsi que […]

Salle Shuli Goodman

Notre vie personnelle et professionnelle est souvent jalonnée de rencontres avec des femmes et des hommes qui nous ont marqués et inspirés, que ce soit par leurs compétences, leur engagement social ou politique, leur vision, leur leadership… Nous avons cette tradition chez Savoir-faire Linux qui est de rendre hommage à certaines de ces personnalités remarquables […]

Parce que l’UX ne se limite pas au monde connecté, si vous allez un jour à Miami et que vous devez prendre le train, ne cherchez pas plus loin : optez pour la Brightline. Ce réseau ferroviaire a su inclure l’UX et l’expérience client dans son processus et rend le train extrêmement agréable à emprunter. […]