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.
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).
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.
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.
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.
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
- Asset Publisher
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.
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.