Liferay Platform
Vice President Engineering
A new and exciting visionJorge Ferrer
Liferay's goal is not be well positioned but to
add value?
How can a portal platform provide the
most value today?
And in the future?
A year of great innovation for Liferay
Three trends for a new vision
Image Credit & Copyright: Brandon Goforth
1Mobile development has been a hurricane of innovation
By tuttletree @flickr
When was the last time you did this?
By pedromourapinheiro @flickr
How are these apps being built?
Image credits: myshadesofgray.wordpress.com
How about the backend?
Hmm, anyone knows Java?
Ruby on Rails?Django?
Don't let the backend be an after thought!
Developing the backend of a mobile App
from scratch is rarely a good option
Do you really want to implement user
management once again?
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...
Some of you are already doing this
Forums App Blog reader Blogs, Agenda, Content
But it requires knowing Liferay really well...
Right?
Create Native Apps backed by Liferay in a fraction of the time
Liferay Screens
Screen UI
Screen Local
How long does it take to build an App?
(Including the backend)
How about 1 minute?
Characteristics
✓Fully functional Screenlets backed by a Liferay server
✓100% themable
✓Compatible with iOS/Android SDKs
✓Open Source
JM
Juan
#LRNAS2014
That's much better. Just for Mobile Phones?
By nepaltibet2005 @flickr
Image credits: control4.com
Will be a $300 billion market by 2020
#LRNAS2014
Perfect!
Bruno
The Web is a better platform than ever before
2
Much better browsers....
... for desktop & mobile
New Standards, Frameworks and techniques
The JavaScript revolution
SPA
New frontend development workflow
Multi-browser test automationResource OptimizationFast dev environment (watch)
Zeno
How can we leverage this within Liferay?
Think beyond Portlets...
Portlets are great.... as widgetsSite Admin
✓ I can add portlets whenever I want
Frontend Developer
x So many limitations
Full Page Apps within a Liferay Site
I own the page!
I'm free!
Standalone Apps backed by Liferay
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
And developers got all the freedom back :)
v4 to be based on jQuery
WebComponents
To use any frontend tool
"Real Time" Applications
Updates
Server Push & Async Requests
+ Servlet 3.1
Igor Iliyan
These new ways of leveraging Liferay demand an even better platform
Author: Mike Richard / Source: vagabondish.com
Fine grainedModularity and Extensibility
3
Goal 1
Use just the pieces of Liferay you really need
Maintainable & Scalable
Breaking down the monolith
Author: Mike Richard / Source: vagabondish.com
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
Goal 2
Extensibility built to last
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
@Componentpublic class MyMenuItem implements MenuItem {
...}
Make any custom class extensible
Audience TargetingA great example
1 Appmade of
30+modules
Highly Extensible
Julio Eduardo Eudaldo
Better ways to develop UI Extensions
Granularity + Maintainability
No more need for JSP overrides!
Carlos
Big focus on APIs and efficient protocols
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
Goal 3
Work less, do more
Autogenerated conf UIStrongly Typed
You can even define custom types
Autogenerated conf UI
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
+
It's a exciting time to be a Liferay Developer
You can reuse your knowledge to do
more than ever before
Mobile Apps/IoTNative, Hybrid, Web, ...
Amazing sites & portalsWhich keep getting better
Innovative Web AppsWith any technology
Liferay Platform More modular and extensible
The Liferay Way
Using state-of-the-art tools
Open Source
Following Standards
Don't stand still while so many new things are
happening
Get involved earlyDevelop Apps with ScreensUse the new dev toolsTry out the Liferay 7 milestones
JM JuanRay
Carlos
Julio Eduardo Eudaldo
Look for these guys!
MiguelBrunoZeno Eduardo
Thanks!
Enjoy
@jorgeferrer
Don't forget to vote!