I first came across the Java Portlet technology in 2006. I was working on a data warehousing project, and data from different sources was managed by a portal application. My first encounter with the technology wasnt a pleasant one—I faced issues with inter-portlet communication, Ajax, file downloading, and so on. After a lot of struggles and analysis, I was able to get past the limitations inherent in Portlet 1.0 by building ad hoc solutions involving Java servlets to address the business requirements. The design of these solutions resulted in a highly complex system that was hard to maintain and understand. It left me feeling that the Java Portlet technology wasnt ready for developing web portals in the real world.
But even though Portlet 1.0 (JSR-168) had limitations, it didnt stop businesses from taking advantage of the benefits web portals offered—personalization and content aggregation. The lack of support for some critical features in the Java Portlet technology meant that portlets had to rely on portal server–specific extensions, which resulted in portlets that were not portable across different portal servers and were not Portlet 1.0–compliant.
In 2008, Portlet 2.0 (JSR-286) was released, and it addressed the limitations that existed in Portlet 1.0. Portlet 2.0 was a major step forward in the adoption of Java Portlet technology. The portlet technology received a further boost when portlet bridges made it possible to develop applications using existing web frameworks like JSF, Wicket, Struts, and so on, without learning the Java Portlet technology.
Towards the beginning of 2009, I started working on a portal project using Portlet 2.0. Unlike the early days, I no longer had to worry about developing Ajax portlets or implement ad hoc approaches to perform inter-portlet communication. I felt that the Java Portlet technology had finally arrived. It now addresses all the features that were always expected of it.
During this time, I also evaluated and used Spring Portlet MVC—a subframework of Spring, specifically designed for developing Java portlets. The use of Spring Portlet MVC further simplified the development and testing of portlets, and it became my favorite framework for developing portlets. By early 2009, JSR-329 (Portlet 2.0 Bridge for JavaServer Faces 1.2 specification) was started to simplify the development of JSF portlets using Portlet 2.0; this further supported developing Java portlets using existing web frameworks.
Developing portlets requires not only a good understanding of portlet technology, but also an understanding of how portlet technology can be used with other technologies to develop real-world web portals, and thats the topic of this book. My goal was to open up the exciting world of Java Portlet technology to you and help you get started developing portlets and web portals.