Web-based application developers face a dizzying array of platforms,
languages, frameworks and technical artifacts to choose from. We survey,
classify, and compare technologies supporting Web application development. The
classification is based on (1) foundational technologies; (2)integration with
other information sources; and (3) dynamic content generation. We further
survey and classify software engineering techniques and tools that have been
adopted from traditional programming into Web programming. We conclude that,
although the infrastructure problems of the Web have largely been solved, the
cacophony of technologies for Web-based applications reflects the lack of a
solid model tailored for this domain.