By portals, I mean enterprise portals (like Liferay, JBoss Portal, Apache Jetspeed, etc.).
The biggest problem with them is that the "applications" or "portlets" that occupy its pages we're really meant for dashboard-like information. Just show the most relevant information in a small space on the page. If you want more detail and functionality, you should be able to click on something and be taken to a full-blown website.
In reality, IT managers here the word "applications", and they then try to cram the full web app into the portlet. So now you're stuck trying to provide web app functionality in an environment where the only programmatic links you can generate are to yourself, you have no ability to control what other things are going to be on the same page as your app. Forget being able to set HTTP caching headers, since you aren't in control of the page.
A lot of these Java-based portals have plenty of open standards. A lot of JSR-### compliance.
From my perspective as a developer, I don't use the document sharing or publishing features of Liferay. My focus is on the portlet development. This means JSR-168 and JSR-286 portlet APIs.
I know nothing about SharePoint, so I can't really compare the two. I just know that I really dislike Java portlet development, and am ready to never have to do it again.
The biggest problem with them is that the "applications" or "portlets" that occupy its pages we're really meant for dashboard-like information. Just show the most relevant information in a small space on the page. If you want more detail and functionality, you should be able to click on something and be taken to a full-blown website.
In reality, IT managers here the word "applications", and they then try to cram the full web app into the portlet. So now you're stuck trying to provide web app functionality in an environment where the only programmatic links you can generate are to yourself, you have no ability to control what other things are going to be on the same page as your app. Forget being able to set HTTP caching headers, since you aren't in control of the page.