nickc: For a long time, people just mostly did what Sun (then Oracle) said: write your servlets and deploy them in a separate app server (analog to IIS). Eventually enough people realized that there wasn't much point to that painful separation, and started writing self-contained apps that used their own HTTP server. This opened up the field to a lot of different styles of doing that general idea.