\chapter{Introduction}
Before we learn to develop web applications, we need a basic understanding of the Internet and the World Wide Web. For a more in-depth explanation of these two terms, take a look at \url{http://en.wikipedia.org/wiki/Internet} and \url{http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol}.

The Internet is a globally distributed network of networks. It connects billions of computers and devices allowing them to communicate with each other.

The World Wide Web (WWW) is just one of many services running on the Internet. It is a huge collection of documents and other resources interlinked via hyperlinks (cf. \url{http://en.wikipedia.org/wiki/Hyperlink}). Each resource has a uniform resource locator (URL, cf. \url{http://en.wikipedia.org/wiki/Uniform_resource_locator}), which gives access to this resource.

Typically we use browsers (e.g. Mozilla Firefox, Google Chrome, Microsoft Internet Explorer) to access the Internet. Browsers use the Hypertext Transfer Protocol (HTTP, cf. \url{http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol}) to communicate with other computers, so called web servers (see next chapter), on the Internet.

The Internet uses a whole suite of protocols that are split into several layers. At the top level, the application layer, we have HTTP and many other protocols. Below, on the transport layer, we have the Transport Control Protocol  (TCP). Beneath this layer we have the Internet Protocol (IP) on the Internet layer.

The WWW has evolved significantly since the early nineties. Today the web browser and related technologies are increasingly becoming the platform of choice for application development, for a number of reasons:
\begin{enumerate}
\item Write once run anywhere. A web browser is installed by default on virtually every desktop, tablet, smartphone and other devices. A web application will run on all of these devices without requiring the user to download and install anything or the developer to provide executables for different operating systems.
\item Updates are instantaneous, i.e. the next time the user uses the application, he/she will automatically be using the latest version.
\item The performance of browser JavaScript engines rivals the best Java just in time compilers (JIT) and the gap to compiled C++ and assembler is dwindling. Today's web apps use multithreading, accelerated 3D graphics and many other techniques that make full use of the available hardware. 
\item There are a large amount of standard application programming interfaces (API) as well as highly sophisticated open source libraries for all kinds of purposes.
\item A virtually unlimited amount of documentation is available.
\end{enumerate}

The following is a small sample list of web applications to provide a glimpse of what can be done:
\begin{enumerate}
\item \url{http://codepen.io}
\item \url{https://mail.google.com}
\item \url{https://www.draw.io}
\item \url{https://www.cubeslam.com/qoxerr}
\end{enumerate}