[MUSIC]
Now that we've talked about software application frameworks,
I'd like to talk with you about web application frameworks.
In other words,
software frameworks that enable you to build full stack web applications.
That's what's of interest to us in this course.
An application framework is designed to support the development of web
applications, so this is just a software framework for developing web applications.
And it generally includes a number of tools that help you.
For example, there's generally support for
connecting the web app to a database back end.
In addition, there might be support for updating the schema associated with this
database whenever the data model associated with the web app changes.
Often there's a templating framework for generating dynamic web content.
And by providing a template, what you get is a consistent look and feel for
every page in your web application that can be automatically created.
In addition, by populating these web pages dynamically, that is,
by reading data from the database at the time the page is being built, what is
displayed in the browser can be kept consistent with what's in the database.
There's generally HTTP session management and some middleware support.
The most common way of tracking customers as they use a website is to
assign them a unique session ID, and each user's browser then transmits this session
ID back to the web server with every request that is made from the browser.
This is how you'll keep track of who is who when you have multiple users
interacting with your web application.
Web application frameworks also generally include a default web server and
other malware components that just work out of the box.
In other words, you don't have to spend a lot of programmer time
trying to set them up and configure them.
Many web application frameworks provide code generators for
creating the scaffolding of a web application.
This often includes the creation of tests for testing the web application as well,
to make sure it's performing the correct operations.
We'll talk a lot more about testing in a later course.
At this point, I just want to mention the importance of testing and
the fact that modern web applications should support
a continuous testing framework because that's how software is developed nowadays.
In addition, a web application might include support for internationalizing
your web app so that you can look at the browser a person is using and
determine their language and deliver content accordingly.
It might have support for securing your web app or for deploying it.
I mentioned that many web applications frameworks include a scaffolding system
that allows you to easily generate a model view controller framework
that also includes something called a REST API.
We'll talk more about the model view controller design pattern later in
this lesson.
And, I'll talk more about the REST API in a later module.
Here's a quote from the inventor of Rails about programmer efficiency.
It's David Heinemeier Hansson, and he says that the point is that the cost
per request is plummeting, but the cost of programming is not.
Thus, we find ways to trade efficiency in runtime for efficiency in thought time
in order to make the development of applications cheaper.
I believe we've long since entered an age where simplicity of development and
maintenance is where the real value lies.
So this is getting at something that I continue to bring up.
The programmer's time is incredibly valuable.
Programmers nowadays make a lot of money, so it's more important to save on their
time than to squeeze out a little bit more efficiency In program running time.
And this is the philosophy behind most
agile web development processes nowadays and they're embedded throughout Rails.
I'd like to talk about some other popular web application frameworks so
you can get a sense of what's going on in this space in general,
in this space of web application frameworks.
All of the frameworks that I'll discuss are provided as open-source software.
So to understand the specifics of how you can use this software,
just take a look at the license.
These licenses generally describe how you have to provide attribution notices with
any software you might develop that's based upon the framework.
Each of these frameworks, by the way, uses the model view controller design pattern
that we'll discuss later in this lesson.
Now Ruby on Rails is the one we're going to use.
The Rails framework is based on Ruby.
We've already discussed this when we discussed the background of Rails.
The only other thing I want to mention is that most of the other frameworks that
I'll talk about next took their inspiration from Rails.
And by the way, in 2016, it was estimated that there
were over 1.2 million websites that were using Rails.
Another very popular framework is Play.
And you can develop Play code using either Java or Scala.
And you might be interested to know that this is the framework that Coursera
is using.
ASP.NET MVC was created by Microsoft and
is provided as an extension to their ASP.NET development environment.
And yes, it's also open-source.
Django is a Python framework.
They mention that Pinterest and Instagram and Bit Bucket have all used them.
Another popular Ruby based framework is Sinatra.
This is an extremely lightweight model view controller framework, and
it has been used by LinkedIn, BBC, and a few others.
In fact many people who use Ruby on Rails also use Sinatra.
If you've got a system that you're trying to build that doesn't have a very
intensive backend database, sometimes Sinatra's a popular choice.
Indeed it's common for many companies to use multiple frameworks.
They'll mix and match some of the frameworks that I'm showing you here.