liferay devcon 2014: lliferay platform - a new and exciting vision
TRANSCRIPT
How about...
?File storage
Localized content
Social Meta-Data
SearchComments
Tagging Categorization
Authentication
Workflow
Relationships
µ µµ µ
Reusable Services
Liferay offers many reusable services for building Apps
IdentityUser ManagementPermissionsContent ManagementDocument ManagementDynamic Forms...
Create Native Apps backed by Liferay in a fraction of the time
Liferay Screens
Screen UI
Screen Local
Characteristics
✓Fully functional Screenlets backed by a Liferay server
✓100% themable
✓Compatible with iOS/Android SDKs
✓Open Source
JM
Juan
New frontend development workflow
Multi-browser test automationResource OptimizationFast dev environment (watch)
Zeno
Portlets are great.... as widgetsSite Admin
✓ I can add portlets whenever I want
Frontend Developer
x So many limitations
Independent Web Apps leveraging Liferay
Angular JS ApplicationIntranet for persons with disabilities
Supporting Standalone Apps
Remote APIsHTTP 2.0Web Sockets
Reusable services
Liferay Core JS
SSO • Theming • Permissions
Local APIs
Native mobile OS UI
Native App
Mobile DeviceWearable, IoT
Mobile SDK Client
Eduardo
New!
Scale indiv. modules separately.C
Dependencies are declared.A
Uses standard OSGi extension points.B
Only deploy needed modules.F
True hot deployment.D
Breaking the platform and reusable services into OSGi modules yields many benefits
Blogs
Modular Platform
µ µ
µ µ µservicesE
Dependency Management
Import-Package:com.liferay.polls,\com.liferay.blogs,\com.liferay.users
Export-Package:com.liferay.messageboards
MANIFESTCan be autogenerated with bnd
Fixes the class loading hell in a very elegant way
Ray
Miguel
OSGi Extensions
auto.login.hooks=com.liferay.samples.MyAutoLogin
Instead of
@Componentpublic class MyAutoLogin implements AutoLogin {
...}
Use an annotation
Using OSGi Declarative Services
Make any custom class extensible
@Componentpublic class MyMenuClass {
...
@Referencepublic void setMenuRenderer(MenuRenderer mr) {
_menuRenderer = mr;}
}
Using OSGi Declarative Services
Make any custom class extensible
@Componentpublic class MyMenuClass {
...
@Reference(cardinality = ReferenceCardinality.MULTIPLE,policy = ReferencePolicy.DYNAMIC, ...
)public void addMenuItem(MenuItem mi) {
_menuItems.add(mi);}
} Using OSGi Declarative Services
Better ways to develop UI Extensions
Granularity + Maintainability
No more need for JSP overrides!
Carlos
Semantic VersioningVersion each module independently
Standard to differentiate breaking changes
Automatic compatibility checks
semver.org
✓Dependencies on
specific modules and versions, not a big Liferay version
Autogenerated conf UI1. Injected in your service
@Activateprotected void activate(AmazonRankingsConfiguration conf) {
String rankingsId = conf.amazonRankingsId(); ... }
2. Fully dynamicChange the configuration at any time
Draft
API
Ray
Embrace and contribute to best of breed applications instead of building our own
State of the art dev tooling
+
Mobile Apps/IoTNative, Hybrid, Web, ...
Amazing sites & portalsWhich keep getting better
Innovative Web AppsWith any technology
Liferay Platform More modular and extensible