Neuigkeiten zu Liferay 7 auf der DevCon 2015
Wie im letzten Jahr fand auch dieses mal die Liferay Developer Conference im Kongresszentrum „Darmstadtium“ in Darmstadt statt. In der bewährten Location konnte man sich in entspannter Atmosphäre mit anderen Entwicklern austauschen und die neusten Entwicklungen und Vorträge zu Liferay verfolgen.
Viele Vorträge hatten das Ziel die Entwickler für die kommende Liferay 7.0 Version zu rüsten. Generell kann man sagen, dass Liferay 7 vor allem Verbesserungen für Entwickler bereit hält. Große Themen waren das neue OSGI Komponenten Modell, die Migration auf Version 7, Änderungen an der Core API sowie die neuen Frontend-Technologien für kommende Versionen. Laut Aussage von Brain Chan wurde für dieses Release im Vergleich zu vorherigen Releases das vier- bis fünffache an Zeit und Geld investiert.
Das OSGI Komponenten Modell
Ein großes Thema war natürlich das neue OSGI Komponenten Modell. Neben vielen Beispielen wurden auch die neuen Extension-Points beschrieben. Extension-Points sind die Stellen im Code, an denen man sich in Liferay 7 mit eigenen Erweiterungen oder Anpassungen über sogenannte OSGI Bundles einhängen kann. Eine kleine Auflistung findet sich hier im Liferay Blog. Eine ausführliche Dokumentation soll im Liferay Developer Network zur Verfügung gestellt werden. Dieser Punkt wurde vom Publikum besonders begrüßt, da Liferay das Thema Entwickler-Dokumentation in der Vergangenheit gerne vernachlässigt hat. Pünktlich zur Konferenz wurde auch die bisherige Liferay 7 Dokumentation erweitert, damit die Entwickler nach den Vorträgen die Möglichkeit haben das Gelernte direkt in die Tat umzusetzen.
Tools für die Migration auf Liferay 7
Wer schon bereits ein Liferay Portal auf eine neue Version migriert hat, kennt wohl die Probleme und Fallstricke, die bei der Migration auftreten können. Gerade wenn man bei der Implementierung möglichst viel Funktionalität von Liferay genutzt hat, wird man feststellen, dass die Migration einiges an Zeit und Knowhow abverlangt. Liferay behält es sich bislang vor, die API von Core Services bei neuen Versionen relativ frei zu ändern. Das stellt uns Entwickler bei der Migration natürlich vor gewisse Probleme:
- In der neuen Liferay-API ändert sich die Signatur einer Methode ohne dass die Änderung dokumentiert ist. Meist muss man sich stark mit dem Liferay Sourcecode auseinandersetzen, um herauszufinden wie die geänderte Methode in Zukunft zu benutzen ist.
- In der neuen Liferay-API ändert sich das Verhalten einer Methode ohne dass die Änderung dokumentiert ist. Diese Fehler werden meist erst nach der Migration zur Laufzeit entdeckt. Bestenfalls fällt das Fehlverhalten beim Testen auf. In ungünstigen Fällen wird das Problem erst auf dem Live-System erkannt.
- Es wurden Änderungen in den JSP’s von Liferay durchgeführt ohne diese zu dokumentieren. Wenn man Liferay JSP’s mittels Hook überschrieben hat, bleibt einem nichts anderes übrig als die angepassten JSP’s mit der alten und der neuen Liferay Version zu vergleichen. Eine sehr mühsame und zeitraubende Aufgabe.
Dave Truong zeigt die Möglichkeiten zum Upgrade auf Liferay 7 und die zukünftige Entwicklung des Migration-Tools.
Die Liste an Problemen, die bei der Migration auf Entwickler warten, kann sehr lang werden. Dies hat auch Liferay eingesehen und stellt mit Liferay 7 ganz neue Werkzeuge für die Migration zur Verfügung. Zusätzlich werden jetzt alle Änderungen an der API in den sogenannten BREAKING CHANGES dokumentiert. Diese Informationen sollen Entwicklern nicht nur als Nachschlagewerk dienen, sondern auch in der Liferay eigenen IDE genutzt werden um Hinweise für die Migration anzuzeigen. Aus meiner Sicht ein sehr nützliches Feature, da man direkt an der passenden Stelle im Code in der gewohnten Entwicklungsumgebung Hinweise zu Änderungen bekommt.
Zusätzlich soll das bisherige Migration-Tool aus dem Liferay Core entfernt und in ein eigenständiges Tool ausgelagert werden. Das neue Migration-Tool soll Multi-Threaded arbeiten und wie Liferay 7 auch mit OSGI umgesetzt werden. Dadurch hat man die Möglichkeit das Migration-Tool über die Extension-Points um eigenes Verhalten zu erweitern. Dies ermöglicht es z.B. vor, während oder nach der Liferay Standard Migration zusätzlich eigenen Code ausführen. Liferay zielt mit dieser Umstrukturierung natürlich auch darauf ab, dass die Community das Migration-Tool durch eigene Erweiterungen stetig verbessert. Ziel ist es, dass sich das Migration-Tool beim Starten die neusten Updates und Anpassungen aus der Community herunter lädt.
Weiterhin wird es die Möglichkeit geben alte Portlets, Themes, Hooks, etc in ein OSGI Bundle umzuwandeln. Ob das tatsächlich out-of-the-box und voll automatisiert für alle individuell implementierten Portlets ohne Probleme funktioniert, wage ich an dieser Stelle zu bezweifeln. Besonders Mutige können jetzt schon das neue Entwicklungs- und Migration-Tool BLADE (Bootstrap Liferay Advanced Developer Environments) ausprobieren. Die Migration eines Portlets kann man mit dem Command-Line basierten Tool z.B. wie folgt durchführen:
blade migrate {project}
Neue Frontend-Technologien
Neuigkeiten gibt es auch im Fronend-Bereich. In den bisherigen Liferay Releases hatte Liferay auf die von Yahoo entwickelte JavaScript Libraray YUI aufgebaut. Diese hat sich letztendlich nicht durchgesetzt und wird nicht mehr weiter entwickelt. Um nicht wieder von der externen Entwicklung eines Frameworks abhängig zu sein geht Liferay mit einer Eigenlösung namens Metal.js ins Rennen. Dabei arbeitet Metal.js nach dem Vorbild von Sprachen wie CoffeScript oder Sass mit einem sogenannten Source-to-Source Compiler oder auch „Transpiler“. D.h. man entwickelt seine JavaScript Komponenten in einem Metal.js spezifischen Format und kompiliert den Code mit dem Transpiler in ein jQuery Plugin oder ein AMD Module. Weil der Code mit dem Transpiler umgewandelt wird, kann man in Metal.js bereits ECMAScript 6 verwenden. Bei ECMAScript 6, das auch als Javascript 2015 bekannt ist, handelt es sich um die kommende JavaScript Spezifikation, die in Zukunft von den Browsern unterstützt werden soll. Mit ES6 nähert sich die JavaScript-Syntax sehr deutlich der Java-Syntax an. So ist es in ES6 zum Beispiel möglich, Klassen mit Methoden und Attributen ähnlich wie in Java zu definieren.
Fazit
Alles in allem stellt Liferay mit der Version 7 ganz neue Konzepte vor, die vor allem den Entwicklern entgegen kommen. Ein Schritt der aus meiner Sicht längst überfällig war, da der Erfolg eines Software-Projekts auch immer von einer guten Code-Basis abhängt. Einzig die Frage, wann mit einem ersten Stable-Release zu rechnen ist bleibt noch offen. In allen Vorträgen lies Liferay anklingen, dass es noch viel zu tun gibt und es wäre nicht das erste Mal, dass Liferay ein Releasedatum nach hinten schiebt.
Weiterführende Infos:
- Blog Artikel zur Liferay DevCon 2014 und die Video-Integration von empulse
- Whitepaper – Die 10 wichtigsten Funktionen des Mitarbeiterportals
- Intranet Demo auf Basis von Liferay anfordern
- Informationen zum Liferay Portal
- Informationen zu Web-Portalen allgemein
Wünschen Sie weitere Details oder haben Sie konkrete Fragen?
Vereinbaren Sie einfach einen Beratungstermin mit uns. Gerne präsentieren wir Ihnen den Funktionsumfang von Liferay in einer Live-Demo.
Über den Autor
empulse Team
Unser kompetentes und erfahrenes Team von (Java-)Entwickler ist stark in Beratung, technischer Konzeption und zuverlässiger Umsetzung komplexer Projekte. In unseren Reihen haben wir Spezialisten für unterschiedliche Themengebiete, die hier ihr Fachwissen zum Besten geben.