Developing portlets for Viewpoint requires a level of knowledge in certain technologies aside from being only a Java developer. Below are brief descriptions of some of the technologies used and links to books/webpages for more information.
HTML stands for Hyper Text Markup Language. An HTML file is a text file which contains markup tags that tell the browser how to display the page. You should already have some basic understanding of HTML, but if you don't, read the Basic HTML tutorial below:
CSS stands for Cascading Style Sheets that are used to define how HTML elements are displayed. You can define a style for each HTML element and apply it to many web pages. This allows you to make global changes just by changing the style.
JavaServer Pages (JSP) are an extension of Java Servlet technology. According to Sun, "JavaServer Pages (JSP) technology provides a simplified, fast way to create web pages that display dynamically-generated content." "A JSP page is a page created by the web developer that includes JSP technology-specific and custom tags, in combination with other static (HTML or XML) tags." Viewpoint portlets are built using JSPs so you should have a good grasp on the technology before attempting to write your portlet.
Spring is a layered Java/J2EE application framework. Its layered architecture gives you a lot of flexibility and also provides a lot of functionality that Java programmers need. Spring MVC provides additional functionality for building web applications.
Portlets are small reusable Web components that can display targeted and relevant information to portal users. Users are able to assemble a customized viewing experience from a number of available portlets. The portlets that are available to the end user can be controlled by what role they have been assigned within the portal.
From a technology perspective, Portlets are the smallest decomposition unit that corresponds to a self contained application. They are simply web applications, just like servlets, and are deployed within a .war file into a servlet container. The difference is that portlets do not exist to be executed by themselves, they are managed via an encapsulating Portal server, such as Liferay.
Here are some useful information sources to get you up to speed on Portlets: