This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
I recently started a new job where I am returning to Java development after several years doing other things, and it looks like I will be assigned to a Liferay project in a couple of months' time. I don't have any serious experience with Java web stuff, although I have a couple of years' previous experience in server-side J(2)EE a long time ago, some Eclipse and general Java core development, plus some tinkering with servlets and various web app frameworks in Java and other languages. Starting Liferay will probably be a good learning exercise, but I'm wondering what specific areas I should look at in advance, and also how useful these skills are generally, because as far as I can tell nobody out there seems to use Liferay much.
Yes, it would be a good learning exercise to know Liferay.
As it's about portal & portlets the usage is limited but, Liferay is one of the leader in this space and there exists Liferay forum. Spending time there would be a good start.
Knowing JSR-286 the portlet specification would help in general.
There are Liferay specific topics to know about but would help only if they are part of your project.
e.g. Alloy UI, hooks and ext. plugins. Also check out their out box portlets like document and media library.
You can download the community edition and start playing with it.
@Chris, I was in exactly your position an year and a half ago. My project was a complete rewrite using Liferay 6.1, and some of the features required understanding its deepest internals (though this may not be the case in your project). From that experience, my tips are:
1. Portlet programming is quite different from regular servlet programming, in just about everything (concepts, deployment, lifecycles, URL handling, etc.).
2. If it's feasible and the decision is in your hands, use the latest liferay 6.x versions for your project. Shun 5.x - they're a pain.
4. I would recommend using Spring Portlet MVC, rather than the plain portlet APIs.
5. If your project plans on doing a lot of customization of liferay core or out-of-the-box portlets bundled into Liferay, then I would recommend you get *very familiar* with liferay source code structure. Documentation is minimal, and so understanding behaviours involves trawling through its source code. A good editor with "find in files" features is priceless.
6. If your portlets are UI intensive (complex UIs and user interactions), then I would recommend staying away from their Alloy UI framework. It's good feature wise, but documentation is not good at all. Trying to implement complex UIs with alloy UI will involve higher implementation effort. Stick to jquery or vaadin (which liferay supports well).
7. Authorizations (roles and permissions) behaviours take sometime to understand. If your project relies on fine grained permissions, experiment a lot with roles and permissions and their influence on various liferay features before starting any implementation.
8. Overall, liferay is as much a framework as a portlet container. It likes to pigeon hole applications into its own world view. Things are easy if you can fit in your UI and interactions into the framework's world view. Effort required shoots up if you want to customize anything heavily, however. Liferay makes customizations possible at every level, but beware of the effort involved. Prototype things if such customizations are involved.
It's a new project, using a lot of Spring, and I think we'll be trying to keep things simple initially on the Liferay side. Right now, I've just bought Portlets In Action and downloaded Liferay CE, so it's time to start learning this stuff.