ポートレットの開発は、JSR 168 に定義された仕様に基づいて、実装します。ポートレットで使用する API も JSR 168 で定義されています。基本的にはサーブレットと同じですが、ポートレットは独自のライフサイクルを持つため、その点において、サーブレットの開発スタイルとは異なります。
ポートレットでは、JSF や Struts などのウェブアプリケーションのフレームワークも利用可能です。ウェブフレームワークを利用することで、ポートレット固有のライフサイクルを気にすることなく、サーブレットと同様の開発環境を実現することができます。ですので、ポートレット固有の学習コストなどを削減することができます。ウェブフレームワークの中でも、JSF では、仕様の中にポートレットに関しても記述しているので、サーブレットとポートレットの違いをフレームワークで吸収して、利用しやすいものになっています。ウェブフレームワークを利用せずに、ポートレット API を用いて、ポートレットを開発する場合は、以下の節のライフサイクルなどを理解する必要があります。
サーブレットでは、1回のリクエストで呼ばれるメソッドは同一ですが (たとえば、doGet や doPost など)、ポートレットでは、アクションの処理と描画の処理が明確にわかれています。それぞれ呼ばれるメソッドは、Portlet インタフェースの processAction メソッドと render メソッドです。これは、ポータルのページ上に複数のポートレットが存在していたときに、アクションが呼ばれるポートレットは1つであり、アクションが呼ばれないポートレットでは、描画処理だけを行うためです。