What's a web application? [Beginner's Guide]
Author: Nikolai Tenev
Web Application, Website, Web service, Pros and Cons, Beginner's Guide
Product Descriptions, Enterprise, Guides
Wondering what is a web application and what's the difference between a web app and a desktop program? Here's a simple definition and some more details to help you grasp the concept better.
If you're using the Internet, chances are - you're already using web applications (or apps, for short). The whole G Suite, office 365, the whole ZOHO suite, Salesforce, HubSpot, FreshBooks, Dropbox, the browser version of Slack, etc. are all examples of web applications.
So what's the definition of a web application?
A web application is any application that's developed using web technologies and is usually executed in a web browser, by going to a specific URL.
I'm saying "usually executed", because in some use cases developers use "wrappers". The role of the wrappers is to make the experience of using the web application indistinguishable from using a native desktop or mobile application.
How web applications work?
Every web application consists of two parts:
- One is the so called front end or client side, which is the part that is executed in the browser of the person, using the application (or a user for short). This part serves as an interface for the user to enter data, run commands and view data. Think of this as something similar to a car's dashboard, steering wheel, navigation system, etc.
- The other one is the so called back end or server side. This is the part that is executed on a remote computer called a server. All the users from the front end connect to this part to input or query data and to run commands. The back end usually works together with other services like data repositories, email servers, external APIs, etc. Using the car analogy from the previous point, think of this part as the engine, tank, wheels, cruise control, etc.
Technically a web application can consist only of the first part, but usually that's not the case.
Whenever a user accesses the web application, usually by typing a URL into the address bar of a web browser, the following happens:
- The client side loads, showing dynamically generated (meaning generated at the moment, as opposed to static pages, that are created ahead of time, like this blog post) web page to the user. It is possible that at some point the client side will contact the server side in order to acquire data, needed to show the page.
- The user uses the interface of the web page to issue commands to the web application. This can consist of filling out forms, pressing buttons, accessing links and so on. Basically doing stuff.
- Now there are two things that can happen, depending on whether data from the server side is needed or commands are being sent (if there's a server side at all):
- Client side only. The client side will do some calculations in place and it'll show the resulting, dynamically generated web page to the user.
- With server side. The client side will send commands and data to the server side (called making a request). After it receives the response from the server, it'll show the resulting, dynamically generated web page to the user.
- Go to point 2.
That's a very basic description, but it's enough to give you a good idea of what's going on behind the curtains.
Some technical details about the web apps
Front end/client side technological stack
HTML is the simplest tool of the mentioned above. It's used to describe the structure and content of the different screens (or pages if you prefer) of the web app.
CSS is used solely to describe the visuals of a web app. This includes simple animations, fonts, colors, sizing and spacing, borders, etc.
Back end/server side technological stack
The server side is a bit more complicated. There are numerous options when it comes to serving your app, each with its own tools, languages, etc.
I'll list some of the more widely used server side languages. I'm going to use a popular usage index from TIOBE to rank them.
This is one of the well-established languages. It has a great eco system of different tools, libraries, etc.
Very often it's used in enterprise applications, because it's a secure, performant and flexible language providing developers with a lot of options.
Another very wide-spread language with a vast number of libraries and tools.
It's known for its rapid prototyping capabilities and it's frequently used to create different tools or MVPs quickly.
It lacks a bit in performance compared to others, but there are ways to remedy this.
C# is kind of the Microsoft version of Java. It has similar syntax and features, but it's not as widely used as Java.
Applications developed in this language tend to stick to the Microsoft tech stack.
On the performance part - it's not exceptionally fast, but theoretically it can be pretty performant for some more specific (IO bound) use cases.
Today PHP powers 80% of the internet. It is really popular and Wordpress, the most widespread blogging CMS, uses it.
Out-of-the-box performance isn't really great. Of course there are ways to remedy the situation a bit like HHVM.
One of the biggest business advantages of PHP is the abundance of cheap shared hosting for it. This is especially useful when bootstrapping or creating an MVP.
Web applications vs. websites
I guess by now everybody reading this is wondering "What is the difference between a web application and a website?".
Truth be told:
There's no clear distinction between the two. Technically every web application is also a website.
There is however common understanding that websites are above all informational. This means that the important part of a website is its content and this content is mostly static. Examples of websites include Forbes.com, Bloomberg.com, DigidWorks.com.
Web applications on the other hand are characterized by the ability of the user to do stuff (send commands, perform actions, call it however you want). Web applications have content too, but it's dynamic, and they allow the user much more interaction in comparison to a website. Some good examples of web applications are Gmail, Google Docs, Google Analytics, Office 365, Amazon AWS, JIRA, Asana, Wave and so on.
Web applications vs. web services
A web service is a piece of software that accepts commands and serves data in any format. The format can be JSON, XML, some proprietary data format or something else.
Usually people refer to web services as APIs. The API is the interface of a web service, the part somebody can interact with and thus use the service.
When talking about web applications, usually a web application contains a web service. It's the back end part (or the server), that's serving data to and accepting commands from the front end part (or the client).
Basically you can think of it like this:
A web application is meant to serve the user. It's an interface, that's meant to be used by humans. On the other hand a web service serves machines and it's an interface, that's used by other computers and devices.
Web applications vs. mobile applications
Web apps and mobile apps can be almost the same or they can be very different. It depends on the purpose of the application and on the chosen way to implement it.
There are web applications that are built in such a way, that they can be used on mobile devices just as easily as on desktops. These can be pure web apps that are accessed just like any normal web site - through a browser, or wrapped web apps (hybrid apps), that use some kind of wrapper, to make them more native-like.
There are also frameworks like React Native and Flutter, that use web technologies to create native applications. It's kind of a mix between web applications and mobile applications trying to get the best of both worlds. Their strongest advantage is that you only have to support a single code base for all operating systems, as opposed to supporting a separate code base for every mobile OS when coding mobile apps natively.
Pros and cons of web applications
Depending on the project a web application might or might not be the best choice. They are becoming increasingly more popular, but there are still use cases, where a web application is not the best fit.
Unlike desktop and mobile applications, you can run a web application on every device that has a web browser.
This makes them much more convenient than their counterparts.
Web applications don't need to be installed. The only thing that a user has to do, in order to start the application, is to navigate their browser to a certain URL.
Again this is a big convenience for end users, because it eliminates the need for big downloads, installation and configuration, hard disk space requirements, etc.
Updates are handled by the developers of the application. The end user does not have to do anything to use the latest version of a web application.
Less software piracy
You can't crack a web application. You might be able to "lend" your account to somebody, but it's impossible to use it for free if the authors of the app don't want you to.
Hackers might be able to get access to an account they don't own in less secure web apps, but that happens rarely in comparison to software piracy.
Less resources for development
In most cases, developing a web application takes less time (and therefore money), than developing a desktop app.
This is a bit controversial. In general every piece of software that performs network communication is vulnerable to attacks.
So why are web apps secure?
Because they are sandboxed in the browser environment. They access everything through the browser and can't access the user's computer directly. This makes it impossible for a web application to cause data loss on a user's machine.
Also if a computer is stolen or damaged too badly to recover, your data is safe on the servers of the web application.
Access from everywhere
Web apps store their data in a centralized server (or servers). This means that a user can access their data from everywhere, without the need to transfer files.
Easy data backups
This is another benefit from the centralized data storage - it's easier to create automated backups of your data.
You can track what your users are doing. Of course I'm not talking about their private data, but rather what features are they using, are they utilising the application to its fullest potential, etc.
This is very convenient for the providers of the application, because with this information they can determine ways to improve their software.
The developers of a web application can choose the most optimal deployment environment and that's the only one they'll have to support. This eliminates issues caused by problems in the device of the end user and also issues caused by using different operating systems.
Performance and hardware access
Some of the more specialized software programs need a bit more resources than the rest.
CAD software and vector and raster graphics editing software among others need 2D and 3D computing power. That's provided by your computer's graphics processor, but accessing it through the browser can be limiting and is usually not enough for the needs of programs like Photoshop, CorelDRAW, AutoCAD, Solidworks, Revit, ArchiCAD, LibreCAD, etc.
Digital audio workstation software might need access to specialized hardware on your machine which is impossible to access through the browser alone.
These are just some examples of software, that can't be implemented as web applications.
The simple rule of thumb is:
If you need access to some specific hardware on the users computer or your application is very performance dependent, then web applications aren't the way to go.
Just like any other application, that uses the Internet, web applications are vulnerable to a variety of attacks. They can be hacked, users can be misled into giving their credentials for accessing sensitive data and so on.
That's why it's crucial to harden the security of the web application and it's server. Implementing the best security practices often isn't enough. The users of the web application have to be educated on the subject of security in order not to be easily scammed.
Despite what many people think, all these things apply to traditional desktop applications with network communication as well. So this isn't exactly a web application problem, rather an Internet usage one.
As you can see web applications are a very versatile tool. Their fairly quick development time and great accessibility make them preferred for a variety of use cases.
They help companies reduce costs, increase efficiency and optimize processes. With the ever increasing Internet usage amongst businesses and people, web applications are becoming the norm for software with very small exceptions.
Sharing is caring: