When I started interning here at Intelliware, Tom McGrady was kind enough to give me a brief overview of the development of web applications. Here is (the much belated :)) content of that talk detailing the major phases in the development of web applications.
Web Development as an Industry
Web development essentially encompasses all of the activity required to develop a web-site. According to Wikipedia, as of 2005 there are over 30,000 web-development companies in the United States and the industry is expected to grow over 20% by 2010.
Web applications or “webapps” are simply applications that a user accesses through a web browser over a network (such as the Internet). Webapps are based on the client-server computing model in which a client will send a request for a resource to a server. The server listens for these requests and responds by locating the resource, doing any processing, and sending the results back to the client in a standard format supported by most web browser such as HTML or XHTML. Although the server sends static content back to the client the sequence of pages will provide the user with a dynamic experience.
Evolution of Web Development Technologies
The technologies that go into the design and development of webapps have undergone a series of steps. All technology has a certain life-cycle and is eventually phased out as users discover better and more efficient ways of performing a task. The following list captures some of the key steps in the development of webapps and illustrates how some technologies were phased out by others.
Key Steps in Web Development
Here’s a summary of the key steps:
HTML – HyperText Markup Language
HTML is a simple markup language used to design web pages and display information in web browsers. HTML specs are maintained by the World Wide Web Consortium (W3C). Early versions of HTML had a very loose syntax rules. Over time, efforts have been made to make the syntax much stricter. XHTML is W3C’s successor to HTML.
CGI Scripts – Common Gateway Interface
Ordinary HTML pages are static and every time the server sends it out, it transmits the exact same bytes. It will only change if someone actually updates the HTML file itself. Many kinds of content actually change continuously. Think of the stock market index or final scores of sporting events. Getting this dynamic content into a web page motivated the development of CGI or Common Gateway Interface scripts. As illustrated below, a user makes a request by which sends data to a web server responsible for generating an HTML page in response.
These requests can be handled by CGI (Common Gateway Interface) scripts. CGI scripts generally require new processes to be spawned for each request which increases the workload of the server. This problem inspired the development of alternate ways to handle HTTP requests.
Servlets are Java technologies response to CGI Programming. Servlets use Java to generate the HTML for a web page. Servlets are more efficient than CGI. Rather than spawning multiple, heavyweight operating system processes to respond to each request, servlets use lightweight Java threads. Servlets can also communicate directly with web servers, simplifying operations such as looking up images etc. Servlets require the entire page content to be generated via the program even if the majority of the page’s content is static in nature.
Custom Tag Libraries
Custom tag libraries allows the Java programmer to write code that provides various services such as database access, and provide this functionality to the authors of the JSP pages. These actions and services are presented as a set of tags contained in a library. Custom tags abstract out the complexity of the underlying service allowing JSP authors to perform an action without having to understand the underlying detail.
JSP is supposed to be a good way to separate the dynamic and static parts of your web page, however it does take some discipline to prevent your pages from becoming hard to maintain. One framework developed to help with this is Struts. Struts is maintained as a part of Apache Jakarta project and is open source. Struts is essentially a presentation framework based on the Model-View-Controller concept. The organization of a webapp designed using the struts framework is illustrated below:
One of the difficulties in organizing a web-page is keeping the ?view? components nicely organized.
Struts and Tiles
In order to organize JSP and HTML view components, the Struts framework can be coupled with the Tiles framework. The Tiles framework presents its view components as – you guessed it – tiles! These tiles are organized by an XML configuration file (tilesDefinition.xml) that allows for reuse of the tiles as well as the layouts that organize them.
Struts and Validator
JSTL (expression language)
The JSP Standard Tag Library is a collection of JSP 1.2 custom tag libraries that implement basic functionality common to a wide range of server-side Java applications. By providing standard implementations for typical presentation-layer tasks such as data formatting and iterative or conditional content, JSTL allows JSP authors to focus on application-specific development needs, rather than “reinventing the wheel” for these generic operations.