Curso Intensivo Liferay 7 Digital Experience I

Montando nuestro entorno de trabajo

Hola! Aquí comienza una serie de tutoriales en los cuales aprenderemos todos los conceptos principales de la última versión de Liferay.


¿Qué es Liferay?

Si buscamos en Google sobre Liferay lo primero que veremos es que se trata de un CMS (para quien no conozca las siglas vienen del inglés Content Manager System, lo que sería en español un Gestor de Contenidos), sin embargo Liferay es una plataforma que abarca mucho más que esto. Yo lo definiría como un completo sistema web con gran capacidad y versatilidad para adaptarse a los requerimientos de diversos perfiles de clientes; lo mismo podemos montar nuestra propia web personal (tal y como está montado este servidor) o podemos construir una gran plataforma empresarial con gran cantidad de usuarios.


¿Cómo está construido?

Liferay se fundó en el año 2002. Está construida totalmente en Java sobre el estándar JSR (Java Portlet Specification) y desde entonces ha recorrido un largo camino evolucionando mucho, con el último gran cambio introducido en la versión 7.0 donde se ha roto el monolito para fragmentar la plataforma en múltiples módulos OSGI y se ha implementado la reciente versión JSR 362 Portlet 3.0, con todas las ventajas que esto trae (de este tema hablaremos posteriormente con más profundidad).

Actualmente debido al gran refactoring que han realizado Liferay ha evolucionado de un gran conglomerado de software a una serie de pequeños módulos que encapsulan una funcionalidad cada uno, permitiendo así reemplazar cada módulo nativo con uno propio.


Lo bueno y lo malo

La principal ventaja que yo siempre le he visto a la plataforma es su capacidad de integrarse a multitud de frameworks y sistemas externos (debido a el gran ecosistema Java de aplicaciones que existen), por ejemplo podremos integrarlo sin dificultad con gran parte del ecosistema de Spring Framework, dándonos gran potencia a la hora de desarrollar.

Otra cosa que siempre me ha gustado es tener la capacidad de extender el sistema con facilidad, siempre con acceso al código fuente al ser un software Open Source. Todo el código  lo podéis descargar y seguir en el repositorio de Github.

Y no podemos dejar de hablar de la facilidad que nos brinda para crearnos un portal web en muy poco tiempo.

 Como aspecto negativo me gustaría comentar que no estoy de acuerdo con la tendencia que tiene Liferay para modificar herramientas estándar del mercado cambiándoles el nombre y haciéndolas suyas, añadiendo una curva de aprendizaje innecesaria. Por ejemplo, han sustituido Gradle por Blade CLI que no es más que un Gradle con una capa extra de funcionalidades, que trae consigo problemas de compatibilidad y de actualizaciones .

En resumen, se podría ser que es el CMS más completo del mercado en mi opinión (con el permiso de Wordpress que lo lastra mucho que esté basado en PHP), aunque especifico que no es el mejor en ningún aspecto específico.


Manos a la obra

Dejemos atrás la teoría y pongámonos con la parte divertida para montar nuestro entorno de trabajo sobre el cual desarrollaremos una aplicación web de productividad sobre tareas pendientes y completadas (TODO's).

Para desarrollar nuestra aplicación y cualquier otra aplicación sobre Liferay 7 necesitaremos tener instalar las siguientes herramientas:

Reiterar que Blade CLI es un "Gradle modificado" y con algunos comandos extras para facilitar el desarrollo en la plataforma, pero no es totalmente imprescindible, una vez inicializado el workspace podremos usar Gradle en vez de Blade.

En nuestro entorno usaremos la última versión Community recién salida del horno(Liferay 7 GA4) la cual podéis descargar aquí.

El portal está construido básicamente a partir de un tomcat integrado con otros sistemas y el bundle completo consta con la siguiente estructura con la que nos deberíamos ir familiarizando.

En la carpeta data se almacenará la Galería Multimedia, el indexado de Elasticsearch y la base de datos embebida Hypersonic que viene por defecto (esta base de datos no está preparada para entornos productivos, solamente para pruebas y demos).

Después podemos destacar la carpeta deploy que es donde pondremos todos nuestros desarrollos para que se vayan desplegando.

La carpeta osgi, de la cual dedicaremos un post completo para analizar el mecanismo que nos provee el portal para los desarrollos modulares a través de OSGI. Aquí adentro entre otras cosas podremos ver los desarrollos que tenemos desplegados y borrarlos si se quisiera. También podremos configurar determinados parámetros del sistema a través de los ficheros .conf alojados dentro de osgi/configs (por ejemplo, configurar un Elasticsearch externo).

Por último nos queda el tomcat en sí, donde lo más importante serán los ficheros alojados dentro de conf, en los cuales podremos configurar todo lo relacionado con el servidor (puertos, conectores y base de datos entre otros).


Inicializando el entorno

Ya después de tener instaladas todas las dependencias inicializaremos el workspace ejecutando el siguiente comando en la carpeta deseada:

blade init

Si todo ha ido bien se os debería haber creado una estructura de carpetas igual a la siguiente:

Donde la carpeta modules será donde desarrollaremos los módulos OSGI y en themes desarrollaremos los temas de apariencia de Liferay.

Y ya con esto solo nos faltaría arrancar el portal yendo a .../<liferay_home>/tomcat-8.0.32/bin y ejecutar el comando sh startup.sh en entornos Linux o Mac o ejecutar startup.bat en Windows. Los logs del portal los veremos en el fichero .../<liferay_home>/tomcat-8.0.32/logs/catalina.out

Después de unos cuantos minutos veremos la pantalla de configuración donde podremos configurar la base de datos, nombre de usuario y añadir datos de ejemplo.

Y posteriormente de configurar todo y aceptar las condiciones ya por fin veremos nuestro CMS en marcha con la pantalla de bienvenida.

Espero que hayáis entendido todo bien y no se olviden que en los siguientes tutoriales del curso veremos como crear un tema de apariencia, como extender el portal, crear un portlet propio para aumentar la productividad y veremos como optimizar el portal para entornos productivos. Cualquier duda estaré encantado de responderla en los comentarios...¡Happy Decoding 🖖!

Más entradas de blog

Integra Realm Database en Android

Como ya sabemos Android es un sistema operativo con un ecosistema gigantesco en el que...

Spring Boot con Kotlin

En el mundillo del desarrollo web en Java está de más hablar de Spring Framework . A lo largo...

Añadir comentarios