Sean Goggins gave a very thorough presentation on the Java Portlet Specification (JSR 168) and demoed with multiple implementations.
Things I learned:
Pluto is a reference implementation of a JSR 168 compliant portlet container (not to be confused with a portal). It's an Apache project (originated from IBM?)
Jetspeed 2 is a servlet based implementation of a portal that uses Pluto as its portlet container. It's also an Apache project.
EXO Portal is another servlet based implementation of a portal that supports JSR 168 conforming portlets.
Liferay is a J2EE based implementation of a portal that can be deployed in any J2EE app server.
WebSphere, BEA, SAP, Novell, Oracle all have their own implementations of portals.
You write portlets much like you write servlets. And you can deploy them in any compliant portlet containers.