Survey of Technologies for Web Application Development
---
paper_title: The World-Wide Web

paper_content:

Publisher Summary This chapter discusses the history and growth of World Wide Web (W3). The World-Wide Web was developed to be a pool of human knowledge, which would allow collaborators in remote sites to share their ideas and all aspects of a common project. Physicists and engineers at CERN, the European Particle Physics Laboratory in Geneva, Switzerland, collaborate with many other institutes to build the software and hardware for high-energy physics research. The idea of the Web was prompted by positive experience of a small “home-brew” personal hypertext system used for keeping track of personal information on a distributed project. The Web was designed so that if it was used independently for two projects, and later relationships were found between the projects, then no major or centralized changes would have to be made, but the information could smoothly reshape to represent the new state of knowledge. This property of scaling has allowed the Web to expand rapidly from its origins at CERN across the Internet irrespective of boundaries of nations or disciplines.
---
paper_title: A reference architecture for Web servers

paper_content:

A reference software architecture for a domain defines the fundamental components of the domain and the relations between them. Research has shown the benefits of having a reference architecture for product development, software reuse and maintenance. Many mature domains, such as compilers and operating systems, have well-known reference architectures. We present a process to derive a reference architecture for a domain. We used this process to derive a reference architecture for Web servers, which is a relatively new domain. The paper presents the mapping of this reference architecture to the architectures of three open source Web servers: Apache (80KLOC), AOL-Server (164KLOC), and Jigsaw (106KLOC).
---
paper_title: Principled design of the modern Web architecture

paper_content:

The World Wide Web has succeeded in large part because its software architecture has been designed to meet the needs of an Internet-scale distributed hypermedia system. The modern Web architecture emphasizes scalability of component interactions, generality of interfaces, independent deployment of components, and intermediary components to reduce interaction latency, enforce security, and encapsulate legacy systems. In this paper, we introduce the Representational State Transfer (REST) architectural style, developed as an abstract model of the Web architecture to guide our redesign and definition of the Hypertext Transfer Protocol and Uniform Resource Identifiers. We describe the software engineering principles guiding REST and the interaction constraints chosen to retain those principles, contrasting them to the constraints of other architectural styles. We then compare the abstract model to the currently deployed Web architecture in order to elicit mismatches between the existing protocols and the applications they are intended to support.
---
paper_title: Designing with Web Standards

paper_content:

You code. And code. And code. You build only to rebuild. You focus on making your site compatible with almost every browser or wireless device ever put out there. Then along comes a new device or a new browser, and you start all over again.You can get off the merry-go-round.It's time to stop living in the past and get away from the days of spaghetti code, insanely nested table layouts, tags, and other redundancies that double and triple the bandwidth of even the simplest sites. Instead, it's time for forward compatibility.Isn't it high time you started designing with web standards?Standards aren't about leaving users behind or adhering to inflexible rules. Standards are about building sophisticated, beautiful sites that will work as well tomorrow as they do today. You can't afford to design tomorrow's sites with yesterday's piecemeal methods.Jeffrey teaches you to: Slash design, development, and quality assurance costs (or do great work in spite of constrained budgets) Deliver superb design and sophisticated functionality without worrying about browser incompatibilities Set up your site to work as well five years from now as it does today Redesign in hours instead of days or weeks Welcome new visitors and make your content more visible to search engines Stay on the right side of accessibility laws and guidelines Support wireless and PDA users without the hassle and expense of multiple versions Improve user experience with faster load times and fewer compatibility headaches Separate presentation from structure and behavior, facilitating advanced publishing workflows
---
paper_title: Ajax: A New Approach to Web Applications

paper_content:

Despite this, Web interaction designers can’t help but feel a little envious of our colleagues who create desktop software. Desktop applications have a richness and responsiveness that has seemed out of reach on the Web. The same simplicity that enabled the Web’s rapid proliferation also creates a gap between the experiences we can provide and the experiences users can get from a desktop application.
---
paper_title: Scripting: Higher-Level Programming for the 21st Century

paper_content:

A fundamental change is occurring in the way people write computer programs, away from system programming languages such as C or C++ to scripting languages such as Perl or Tcl. Although many people are participating in the change, few realize that the change is occurring and even fewer know why it is happening. This article explains why scripting languages will handle many of the programming tasks in the next century better than system programming languages. System programming languages were designed for building data structures and algorithms from scratch, starting from the most primitive computer elements. Scripting languages are designed for gluing. They assume the existence of a set of powerful components and are intended primarily for connecting components.
---
paper_title: Performance comparison of dynamic web platforms

paper_content:

Over the last few years, the World Wide Web has transformed itself from a static content-distribution medium to an interactive, dynamic medium. The Web is now widely used as the presentation layer for a host of on-line services such as e-mail and address books, e-cards, e-calendar, shopping, banking, and stock trading. As a consequence (HyperText Markup Language)HTML files are now typically generated dynamically after the server receives the request. From the Web-site providers' point of view, dynamic generation of HTML pages implies a lesser understanding of the real capacity and performance of their Web servers. From the Web developers' point of view, dynamic content implies an additional technology decision: the Web programming technology to be employed in creating a Web-based service. Since the Web is inherently interactive, performance is a key requirement, and often demands careful analysis of the systems. In this paper, we compare four dynamic Web programming technologies from the point of view of performance. The comparison is based on testing and measurement of two cases: one is a case study of a real application that was deployed in an actual Web-based service; the other is a trivial application. The two cases provide us with an opportunity to compare the performance of these technologies at two ends of the spectrum in terms of complexity. Our focus in this paper is on how complex vs. simple applications perform when implemented using different Web programming technologies. The paper draws comparisons and insights based on this development and performance measurement effort.
---
paper_title: Developing Interactive Web Programs

paper_content:

Developing interactive Web programs poses unique problems. Due to the limitations of server protocols, interactive Web programs (conceptually) consists of numerous “scripts” that communicate with each other through Web forms and other external storage. For simplistic applications, one can think of such scripts as plain functions that consume a Web page (form) and produce a Web page in response. For complex applications, this view leads to subtle, and costly, mistakes. These lecture notes explain how to overcome many of these problems with a mostly functional programming style that composes scripts via (hidden) first-class continuations.
---
paper_title: Service combinators for web computing

paper_content:

The World Wide Web is rich in content and services, but access to these resources must be obtained mostly through manual browsers. We would like to be able to write programs that reproduce human browsing behavior, including reactions to slow transmission-rates and failures on many simultaneous links. We thus introduce a concurrent model that directly incorporates the notions of failure and rate of communication, and then describe programming constructs based on this model.
---
paper_title: 1 Technologies for a Web Object Model

paper_content:

The World Wide Web is an increasingly important factor in planning for general distributed computing environments. This article surveys Web technologies that look to integrate aspects of object technology with the basic infrastructure of the Web.
---
paper_title: Intermediary Architecture: interposing middleware object services between Web client and server

paper_content:

This paper describes the Intermediary Architecture , a middleware architecture which interposes distributed object services between Web client and server. The architecture extends current Web architectures with a new kind of plug-in, making a new colleciton of Web applications easier to develop. Example services including Web annotations and Web performance monitoring are described.
---
paper_title: Object-oriented Web application development

paper_content:

Most Web applications are still developed ad hoc. One reason is the gap between established software design concepts and the low-level Web implementation model. We summarize work on WebComposition, a model for Web application development, then introduce the WebComposition Markup Language, an XML-based language that implements the model. WCML embodies object-oriented principles such as modularity, abstraction and encapsulation.
---
paper_title: JAVA FRAMEWORKS AND COMPONENTS ACCELERATE YOUR WEB APPLICATION DEVELOPMENT

paper_content:

Part I. Why Frameworks/Components?: 1. Components and application frameworks 2. Components: the future of web-application development 3. What do they provide and what are the benefits? Part II. Selecting Frameworks and Components: 4. Choosing component libraries and application frameworks 5. Open source and components/frameworks Part III. Using Components and Frameworks: 6. Frameworks and developement methodologies 7. IDE's 8. Strategies for using frameworks, best practices Part IV. Summary and the Future: 9. Conclusions: the future of frameworks/components.
---
paper_title: A cookbook for using the model-view controller user interface paradigm in Smalltalk-80

paper_content:

A switch actuating device adapted for conjoint rotation with a rotatable assembly of a prime mover. Means for mounting to the rotatable assembly so as to be conjointly rotatable therewith includes a pair of sets of opposite surfaces, and switch operating means conjointly rotatable with the mounting means is arranged for axial movement thereon between a pair of opposite positions. A pair of centrifugal weight members are responsive to the rotational speed of the device to effect the axial movement of the switch operating means between its opposite positions and include a pair of sets of means arranged for guiding engagement on the oppposite surface set pair upon the axial movement of the switch operating means between its opposite positions, respectively. A pair of springs are respectively biased between the centrifugal members. A method of assembling a switch actuating device is also disclosed.
---
paper_title: Expert One-on-One J2EE Development without EJB

paper_content:

Written for architects and developers, this guide presents alternatives to EJB and explains how to manage transactions, solve common problems, design applications, access data, use open source products to enhance productivity, and design.
---
paper_title: Patterns of Enterprise Application Architecture

paper_content:

Preface. Who This Book Is For. Acknowledgements. Colophon. Introduction. Architecture. Enterprise Applications. Kinds of Enterprise Application. Thinking About Performance. Patterns. The Structure of the Patterns. Limitations of These Patterns. I. THE NARRATIVES. 1. Layering. The Evolution of Layers in Enterprise Applications. The Three Principal Layers. Choosing Where to Run Your Layers. 2. Organizing Domain Logic. Making a Choice. Service Layer. 3. Mapping to Relational Databases. Architectural Patterns. The Behavioral Problem. Reading in Data Structural Mapping Patterns. Mapping Relationships. Inheritance. Building the Mapping. Double Mapping. Using Metadata. Database Connections. Some Miscellaneous Points. Further Reading. 4. Web Presentation. View Patterns. Input Controller Patterns. Further Reading. 5. Concurrency (by Martin Fowler and David Rice). Concurrency Problems. Execution Contexts. Isolation and Immutability. Optimistic and Pessimistic Concurrency Control. Preventing Inconsistent Reads. Deadlocks. Transactions. ACID. Transactional Resources. Reducing Transaction Isolation for Liveness. Business and System Transactions. Patterns for Offline Concurrency Control. Application Server Concurrency. Further Reading. 6. Session State. The Value of Statelessness. Session State. Ways to Store Session State. 7. Distribution Strategies. The Allure of Distributed Objects. Remote and Local Interfaces. Where You Have to Distribute. Working with the Distribution Boundary. Interfaces for Distribution. 8. Putting it all Together. Starting With the Domain Layer. Down to the Data Source. Data Source for Transaction Script. Data Source Table Module (125). Data Source for Domain Model (116). The Presentation Layer. Some Technology-Specific Advice. Java and J2EE. .NET. Stored Procedures. Web Services. Other Layering Schemes. II. THE PATTERNS. 9. Domain Logic Patterns. Transaction Script. How It Works. When to Use It. The Revenue Recognition Problem. Example: Revenue Recognition (Java). Domain Model. How It Works. When to Use It. Further Reading. Example: Revenue Recognition (Java). Table Module. How It Works. When to Use It. Example: Revenue Recognition with a Table Module (C#). Service Layer(by Randy Stafford). How It Works. When to Use It. Further Reading. Example: Revenue Recognition (Java). 10. Data Source Architectural Patterns. Table Data Gateway. How It Works. When to Use It. Further Reading. Example: Person Gateway (C#). Example: Using ADO.NET Data Sets (C#). Row Data Gateway. How It Works. When to Use It. Example: A Person Record (Java). Example: A Data Holder for a Domain Object (Java). Active Record. How It Works. When to Use It. Example: A Simple Person (Java). Data Mapper. How It Works. When to Use It. Example: A Simple Database Mapper (Java). Example: Separating the Finders (Java). Example: Creating an Empty Object (Java). 11. Object-Relational Behavioral Patterns. Unit of Work. How It Works. When to Use It. Example: Unit of Work with Object Registration (Java) (by David Rice). Identity Map. How It Works. When to Use It. Example: Methods for an Identity Map (Java). Lazy Load. How It Works. When to Use It. Example: Lazy Initialization (Java). Example: Virtual Proxy (Java). Example: Using a Value Holder (Java). Example: Using Ghosts (C#). 12. Object-Relational Structural Patterns. Identity Field. How It Works. When to Use It. Further Reading. Example: Integral Key (C#). Example: Using a Key Table (Java). Example: Using a Compound Key (Java). Foreign Key Mapping. How It Works. When to Use It. Example: Single-Valued Reference (Java). Example: Multitable Find (Java). Example: Collection of References (C#). Association Table Mapping. How It Works. When to Use It. Example: Employees and Skills (C#). Example: Using Direct SQL (Java). Example: Using a Single Query for Multiple Employees (Java) (by Matt Foemmel and Martin Fowler). Dependent Mapping. How It Works. When to Use It. Example: Albums and Tracks (Java). Embedded Value. How It Works. When to Use It. Further Reading. Example: Simple Value Object (Java). Serialized LOB. How It Works. When to Use It. Example: Serializing a Department Hierarchy in XML (Java). Single Table Inheritance. How It Works. When to Use It. Example: A Single Table for Players (C#). Loading an Object from the Database. Class Table Inheritance. How It Works. When to Use It. Further Reading. Example: Players and Their Kin (C#). Concrete Table Inheritance. How It Works. When to Use It. Example: Concrete Players (C#). Inheritance Mappers. How It Works. When to Use It. 13. Object-Relational Metadata Mapping Patterns. Metadata Mapping. How It Works. When to Use It. Example: Using Metadata and Reflection (Java). Query Object. How It Works. When to Use It. Further Reading. Example: A Simple Query Object (Java). Repository (by Edward Hieatt and Rob Mee). How It Works. When to Use It. Further Reading. Example: Finding a Person's Dependents (Java). Example: Swapping Repository Strategies (Java). 14. Web Presentation Patterns. Model View Controller. How It Works. When to Use It. Page Controller. How It Works. When to Use It. Example: Simple Display with a Servlet Controller and a JSP View (Java). Example: Using a JSP as a Handler (Java). Example: Page Handler with a Code Behind (C#). Front Controller. How It Works. When to Use It. Further Reading. Example: Simple Display (Java). Template View. How It Works. When to Use It. Example: Using a JSP as a View with a Separate Controller (Java). Example: ASP.NET Server Page (C#). Transform View. How It Works. When to Use It. Example: Simple Transform (Java). Two Step View. How It Works. When to Use It. Example: Two Stage XSLT (XSLT). Example: JSP and Custom Tags (Java). Application Controller. How It Works. When to Use It. Further Reading. Example: State Model Application Controller (Java). 15. Distribution Patterns. Remote Facade. How It Works. When to Use It. Example: Using a Java Session Bean as a Remote Facade (Java). Example: Web Service (C#). Data Transfer Object. How It Works. When to Use It. Further Reading. Example: Transferring Information about Albums (Java). Example: Serializing Using XML (Java). 16. Offline Concurrency Patterns. Optimistic Offline Lock (by David Rice). How It Works. When to Use It. Example: Domain Layer with Data Mappers (165) (Java). Pessimistic Offline Lock (by David Rice). How It Works. When to Use It. Example: Simple Lock Manager (Java). Coarse-Grained Lock (by David Rice and Matt Foemmel). How It Works. When to Use It. Example: Shared Optimistic Offline Lock (416) (Java). Example: Shared Pessimistic Offline Lock (426) (Java). Example: Root Optimistic Offline Lock (416) (Java). Implicit Lock (by David Rice). How It Works. When to Use It. Example: Implicit Pessimistic Offline Lock (426) (Java). 17. Session State Patterns. Client Session State. How It Works. When to Use It. Server Session State. How It Works. When to Use It. Database Session State. How It Works. When to Use It. 18. Base Patterns. Gateway. How It Works. When to Use It. Example: A Gateway to a Proprietary Messaging Service (Java). Mapper. How It Works. When to Use It. Layer Supertype. How It Works. When to Use It. Example: Domain Object (Java). Separated Interface. How It Works. When to Use It. Registry. How It Works. When to Use It. Example: A Singleton Registry (Java). Example: Thread-Safe Registry (Java) (by Matt Foemmel and Martin Fowler). Value Object. How It Works. When to Use It. Money. How It Works. When to Use It. Example: A Money Class (Java) (by Matt Foemmel and Martin Fowler). Special Case. How It Works. When to Use It. Further Reading. Example: A Simple Null Object (C#). Plugin (by David Rice and Matt Foemmel). How It Works. When to Use It. Example: An Id Generator (Java). Service Stub (by David Rice). How It Works. When to Use It. Example: Sales Tax Service (Java). Record Set. How It Works. When to Use It. References Index. 0321127420T10162002
---
paper_title: Tools and approaches for developing data-intensive Web applications: a survey

paper_content:

The exponential growth and capillar diffusion of the Web are nurturing a novel generation of applications, characterized by a direct business-to-customer relationship. The development of such applications is a hybrid between traditional IS development and Hypermedia authoring, and challenges the existing tools and approaches for software production. This paper investigates the current situation of Web development tools, both in the commercial and research fields, by identifying and characterizing different categories of solutions, evaluating their adequacy to the requirements of Web application development, enlightening open problems, and exposing possible future trends.
---
paper_title: Declarative specification of data-intensive Web sites

paper_content:

Integrated information systems are often realized as data-intensive Web sites, which integrate data from multiple data sources. We present a system, called STRUDEL, for specifying and generating data-intensive Web sites. STRUDEL separates the tasks of accessing and integrating a site's data sources, building its structure, and generating its HTML representation. STRUDEL's declarative query language, called StruQL, supports the first two tasks. Unlike ad-hoc database queries, a StruQL query is a software artifact that must be extensible and reusable To support more modular and reusable site definition queries, we extend StruQL with functions and describe how the new language, FunStruQL, better supports common site-engineering tasks, such as choosing a strategy for generating the site's pages dynamically and/or statically To substantiate STRUDEL's benefits, we describe the re-engineering of a production Web site using FunStruQL and show that the new site is smaller, more reusable, and unlike the original site, can be analyzed and optimized.
---
paper_title: To Weave the Web

paper_content:

The paper discusses the issue of views in the Web context. We introduce a set of languages for managing and restructuring data coming from the World Wide Web. We present a specific data model, called the ARANEUS Data Model, inspired to the structures typically present in Web sites. The model allows us to describe the scheme of a Web hypertext, in the spirit of databases. Based on the data model, we develop two languages to support a sophisticate view definition process: the first, called ULIXES, is used to build database views of the Web, which can then be analyzed and integrated using database techniques; the second, called PENELOPE, allows the definition of derived Web hypertexts from relational views. This can be used to generate hypertextual views over the Web.
---

Title: Survey of Technologies for Web Application Development

Section 1: THE DEMAND FOR DYNAMIC CONTENT
Description 1: Discuss how the Web evolved from a static hypertext to a dynamic content medium and the early solutions for dynamic content.

Section 2: Web Technology Design Pressures
Description 2: Describe the pressures influencing the evolution of Web technologies, particularly from the perspectives of Global Distribution, Interactivity, and Human Factors.

Section 3: Objective
Description 3: Outline the paper’s objective to classify technologies and techniques that underpin dynamic Web applications and provide a roadmap for technology selection.

Section 4: SUPPORT FOR DYNAMIC CONTENT
Description 4: Explore the historical progression of technologies that allow for dynamic content on the web.

Section 5: An Architecture for Distributed Hypermedia Applications
Description 5: Review the architectural foundations of the Web, including HTTP, HTML, web servers, browsers, and related technologies supporting dynamic content.

Section 6: Initial Dynamism
Description 6: Discuss early technologies for Web dynamism including HTML forms, CGI, and scalable CGI implementations.

Section 7: Interpreted Template-Based Scripting
Description 7: Explain the use of template-based scripting languages like SSI, ColdFusion, Server-Side JavaScript, ASP, and PHP for generating dynamic web content.

Section 8: Active Server Pages (ASP)
Description 8: Detail the workings and advantages of ASP as a scripting language for building dynamic web applications.

Section 9: SCALING UP TO THE ENTERPRISE
Description 9: Cover the architecture and middleware technologies used in large enterprise applications, focusing on application servers and tiers.

Section 10: Java-based Architectures
Description 10: Examine Java technologies including Java Servlets, JavaServer Pages (JSP), and J2EE for enterprise Web application development.

Section 11: .NET
Description 11: Discuss the .NET platform and its features comparable to J2EE for enterprise Web application development.

Section 12: Architectures Based on Other Languages
Description 12: Look at alternative languages and architectures for web development beyond J2EE and .NET.

Section 13: CLASSIFICATION OF SYSTEMS SUPPORTING DYNAMIC WEB CONTENT
Description 13: Summarize and classify the technologies relevant to dynamic content generation.

Section 14: WEB PROGRAMMING VS. REGULAR PROGRAMMING
Description 14: Compare the maturity levels and practices of web programming to traditional programming.

Section 15: Frameworks and Patterns
Description 15: Discuss the emergence of frameworks and design patterns in web application development.

Section 16: Categories of Web Frameworks
Description 16: Classify web frameworks into categories such as Web application and user interface frameworks, persistence frameworks, and lightweight containers.

Section 17: Model-View-Controller (MVC)
Description 17: Explain how the MVC design pattern is applied in web development and its implementations.

Section 18: Application-driven Web MVC Frameworks
Description 18: Detail application-driven MVC frameworks like Apache Struts and their architectural components.

Section 19: Page-driven MVC Frameworks
Description 19: Describe page-driven frameworks and their approach to web development, including WebObjects, Tapestry, ASP.NET, and JSF.

Section 20: Other Programming Technologies
Description 20: Cover less mainstream technologies addressing flow control issues in web development.

Section 21: Model-Driven Development of Web Applications
Description 21: Discuss model-driven approaches to web development, including initial progress and the MDA standard.

Section 22: Authoring Tools and Development Environments
Description 22: Overview the tools and environments that support web development, ranging from simple authoring tools to comprehensive development environments.

Section 23: Summary
Description 23: Summarize the current state of server-side application development approaches and the complexity of web application development.

Section 24: CONCLUSIONS
Description 24: Present the study's conclusions on web application infrastructure, development, and future challenges.