[MUSIC] Let's now more formally define what is a Web App? So now that we have a few terms under our belt, we can define what we mean by a web application. Here's a formal definition. A web application is accessed by users via the Internet, using a browser as the client, and consists of a collection of client and server scripts, HTML pages, and other resources that may be spread across multiple web servers, or through the World Wide Web. So examples of this are web mail, online retail stores, online banks, online auctions, Wikis, blogs, document storage. In short it's many of the things I showed you in the opening lecture. So it's important to understand all of the pieces of this definition. That the app is accessed via the Internet using a browser. And that there are many things that are happening on the server side and that it leverages the World Wide Web. Let's talk a little bit more about what we mean by the Web Apps and the World Wide Web. So when I say web, and just use the term web, I mean the World Wide Web. In other words, a web application is an application that uses the World Wide Web. What exactly is the World Wide Web? Well it's a system of interlinked documents that are accessed via the Internet using HTTP. So the web operates on top of the Internet using HTTP. So it's important to understand the difference between the Internet and the World Wide Web, the World Wide Web operates on top of the Internet. Now web page is contain hypermedia, along with hyperlinks to other web pages. Hypermedia can be text, graphics, images, video and other multimedia content. And it's the hyperlinks that give the web its phenomenal structure. If you think about it, it's absolutely amazing. Almost all of the human knowledge is contained in the structure of the hyperlinks in the World Wide Web. It's what makes the web useful and it's what gives it it's tremendous value. It's amazing if you think about it. So a Web App in summary is built on top of the World Wide Web, one of the most amazing structure that mankind has ever built. And the World Wide Web is built on top of the Internet, an astonishingly complex network of computing devices. What are the advantages of web applications? Well, you the ubiguity and convenience of using a browsers as a client is one of the most important advantages that you have with a web application. Everybody has a browser running on almost any device that they own, from desktop, to tablet to phone. And there's inherent cross platform compatibility in today's browsers content delivered to just about any browsers going to render in that browser nowadays. You have an ability to update and maintain web apps without disturbing the installed based on potentially thousands of client computers as long as you make sure that your web app works on current generations of browsers everything will be fine. And there's this amazing reduction in IT cost by going to a web app because of the point that I just made. Much easier to maintain applications that are meant to be deployed as web applications. Now, what are the disadvantages? Well the user’s experience, as compared to desktop apps used to be a problem. Now that's really not the case, it used to be the case that you can really tell a difference between whether or not you were on a desktop application or a web application. Now a days it's very difficult to distinguish between the two, so I think now a days this is not really an advantage. But there are privacy and security concerns associated with your data on a web app. Anyone around the world can potentially access your application. So if you're really after privacy and security, sometimes folks have to build standalone apps that don't run in a networked environment. But one of the things we want to do is leverage the World Wide Web when we're building a web application. So that's not much of a disadvantage, if that's your goal. Now, from a programmer's perspective, this is probably the main disadvantage. Web apps are difficult to develop and debug. What I like to say is there's a lot of moving parts, if you think about you have to be able to program at the level of a database. At the level of middleware, you have to understand all the protocols that are a part of the middleware, and sometimes this involves writing scripts. And you have to understand how to write code that will display webpages properly. So this involves understanding HTML, JavaScript, and possibly some other programming languages. So there's a lot of moving parts in a web application, a lot of different programming languages you have to understand in order to make a web application work properly.