What is new in Liferay 7 (DXP) – Introduction

Among all previous releases, Liferay 7 is the most powerful in terms of feature richness, modularity, rapid and ease of development and lot more.

Over the period of times, Liferay became more powerful by every new release. Currently Liferay 7 is latest version with lots of new features. At the time of writing this article, 7.1 is the current version of Liferay.

Liferay 7 (DXP) introduction

As an opensource product, Liferay had maintained two flavours just like all previous releases. The only difference is, the EE (Enterprise Edition) is now called Digital Experience Portal – DXP in short.

Liferay 7 (DXP) is a fully functional and loaded with features and other well known and industry standard frameworks to build web and mobile apps along with web services quickly with good performance, and ease of use. Below are the new and exciting features of liferay 7 (DXP).

Rich user interface

The first noticeable difference with Liferay 7 is, brand new user interface. The eye catching difference you will see is – single page application (or SPA in short). Now a days more applications are moving towards single page application for better user experience and of course to improve performance. (For example, recent version of linkedin is revamped to single page application).

The clear advantage of SPA is, you can build UI layer with other Javascript frameworks like Angular, React or any other library of your choice in Liferay 7.

Liferay 7 supports SAAS based UI development which provides re-usability while building presentation layer (with theme). This eventually make the creation of UI faster.

Till 6.2 Liferay was using Bootstrap 2.x. Liferay 7 is using Bootstrap 3.0 to build the UI and theme. This mean all latest features of bootstrap can be availed in Liferay 7.

One of the most (and awaited) thing you will experience is, the core library for Javascript is JQuery (instead of native AUI ). Many UI (and Java) developer are more comfortable with JQuery. because it’s most common and widely used across the web today. You can use any JQuery based plugin in your custom development.

Additionally, starting with version 7, Liferay brings Lexicon and Clay language to design UI with ease. Clay is build on top of Lexicon which is a design language and provides common framework to build UI interface.

Modular development with OSGi Platform

OSGI stands for Open Services Gateway Initiative. It is set of standards which are used to develop modular system in Java. Liferay 7 is re-designed to provide portal features on top of OSGI architecture.

You can develop Liferay 7 plugins in form of OSGI modules and deploy them on OSGI container. One more level down, the modules are consists of one or more components. Even the modules (applications) would be working independently. OSGI container will manage the life-cycle and dependency between the modules.

Not only that, till 6.2, Liferay was deployed on server as a whole single web application. Due to this architecture, it was not possible to make the features ON and OFF. You have to either deploy entire portal with all functionality or no functioanlity at all.

Starting with version 7, Liferay is re-designed to make many OOTB (out of the box) portlets and features in form of OSGI modules. Apparently you will get fine tuned control to keep only desired (OOTB) modules or features ON while making others OFF. This means, it is possible to have same modules with different version available to use in the portal. This makes a perfect modular application (portal).

One of the best benefits of using OSGI in Liferay 7 platform is to avoid class loader issue. In all previous releases, Liferay was managing the class loader among the plugins. Starting with Liferay 7, the plugins are replaced with modules. Each module has components that works together as bundle with separate class loader. It’s OSGI container job to manage the class loader of each bundle so there are almost no chance of getting ClassNotFoundException or NoClassDefFoundError.

 

Additional changes

Defining your custom classes for specific functionality (for example portlet) is straightfoward now with liferay 7. Unlike previous version, Liferay 7 allows registering the classes with @Component annotation declared withing same class. No more XML configuration required.

However there are few places where the old mechanism is still persist. Also at certain points Liferay has made some changes in API which is not backward compatible. You can find those from here.

Liferay 7 is development environment agnostic. Due to build tool choosen by Liferay 7, you can choose any appropriate development environment. Though Gradle along with bnd tools are the default way of building the application (modules) in Liferay 7, you are free to use other building tools like Maven or Ant/Ivy.

Searching in Liferay 7

For searching and indexing, Liferay 7 is using Elastic Search rather than Solr because it has various benefits like

  • It is emerged to overcome few of the limitation in Solr.
  • Elastic search is more appropriate for cloud and distributed environments.
  • It provides better performance for dynamic data.
  • And you can count few more.

This doesn’t mean Solr is less powerful. Also this article is not for doing comparison between two. The point is, Liferay has chosen it considering the future requirement.

Java 8 support

The major difference with version 7 is, you need Java 8. Liferay 7 will not run with previous version of java other than 8. Also Oracle has announced for no further support for Java 7. So this is a good move to work with latest java version.

WYSIWYG Editor

Liferay provides nice wysiwyg editor called CKEditor to add content at different places. Starting with Liferay 7, new editor called Alloy Editor developed on top of CKEditor. The beauty of this is, it provides inline editing facility. It means when you click on the element, you will see components like text, image, headers, links, alignments etc. It is used at various places like web content, wiki blog, message board etc.

Application Display Template – ADT

All Previous version of Liferay had very limited usage of ADT. Liferay 7 makes the use of ADT at many places. The clear advance of this mechanism is, things can be changed by just updating configuration, instead of updating the code and deployment. In Liferay 7, you can use ADT on following portlets

  • Login
  • Asset Publisher
  • Blog
  • Wiki
  • Breadcrumb
  • Navigation

Service builder with declarative service

Declarative service is the mechanism to provide dependency run-time by OSGI container. With the help of declarative service, we can define the dependency between the components / modules. OSGI container will make sure to set the dependencies before making the module active.

Service builder in Liferay 7 is now using declarative service to provide service builder specific dependencies. So Instead of using XXXLocalServiceUtil class, you can inject the object of XXXLocalService directly in other components. OSGI container will provide the dependency at run-time.

Integrations

With the modular in nature with OSGI platform, Integration with other system is much simpler with Liferay 7 than ever before. All previous releases have certain limiations while integrating with traditional plugions. Modules in OSGI paradism are more powerful than plugins in this regards.

You can connect Liferay 7 with other systems with various mechanism like LDAP (Director Server), OAuth,SAML, Social sign up,CAS, REST implementation etc with ease.

You can refer official liferay site to explore more about the new platform – Liferay 7 (DXP) to develop robust application.

 

Recommended For You

About the Author: Nilang

Nilang Patel is a technology evangelist who loves to spread knowledge and helping people in all possible ways. He is an author of two technical books - Java 9 Dependency and Spring 5.0 Projects.

1 Comment

  1. Hello,
    I want to add a new button in ckeditor of web content to allow users to add videos.
    On searching I came to know about Xuggler plugin and it worked properly. But, it does not allow to align the videos to center and right side. Moreover, it does not give an explicit button to click and resize the dimension of video.
    Thus, please suggest how we can extend the functionalities of a plugin; or we decide to write a new plugin, how to add the new functionality in ckeditor.

    On searching I learnt two things can be done with liferay source code: –

    1. We can upgrade CKEditor, and use the video functionality given in upgraded version.

    2. We can make a customized ckeditor and replace it with ckeditor of Liferay.

    Please suggest if any of the above options can help to achieve the required results.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.