TL;DR
Web application is the one accessed by the browser (complete or part of it). Desktop application is the one directly accessed by the operating system (on a desktop, of course).
Introducing
I want to make it clear that I have done reasonable research to be able to respond in the best possible way, without incurring dubious opinions or information. But I found nothing formal that defines well what characterizes each one, it is all vague and without references. Of course some things are obvious, but many may even seem obvious and not be an inherent feature of each platform.
So don’t take this as a definitive answer, it’s just a summary of what I found written and of personal observations trying to apply an informal scientific method to identify the definition that fits well with practical use.
Due to the low quality of the content I found I had to adopt a more posture to eliminate opinions that clearly do not fit. I noticed that there are many myths in the definition of the terms and consider one of the ways to make the application as characteristic of the platform, which is not even close.
Agree terms
I think we can include mobile applications within the desktop applications for this context, since the applications have very similar objectives and functionalities, what changes is the support platform and specific operation, although each has different characteristics. The fundamental difference between these two platforms is usually only if the device sits on a table and has large screen or stays in the hand of the person and has small screen, and probably an input of ados with virtual keyboard and induction on the screen.
One question comparing web with mobile already exists and it’s a fairly frequent current discussion. And this is relevant because the same features, advantages and disadvantages of the mobile X web can be used in the comparison of desktop X web. In the background what we are comparing is the native X web.
Desktop application includes notebooks, subnotebooks and even some more complete tablet.
Serving application
They are those that run on specific machines probably of high capacity to be a server for external clients. In fact a server application can be on any machine, even mobile devices, although less common, serving external customers or just that machine. What characterizes this type of application is the lack of direct user interaction. Interaction occurs with other local or remote software components.
A server application comes closer to the form of a desktop application, except for the interaction, even when it is serving the web.
I won’t talk about the web server because I don’t think it’s the focus.
Striking features
From what I understood the characteristics that seem to be more convergence to define what each of these two applications is:
- the platform where the application runs
- how user interaction occurs
- where the application is made available.
There are others, of course, but they do not define so clearly what one or the other is. At least there is no consensus.
Desktop applications
We can divide it between those that use a graphical interface, very common today, and textual applications (console).
There are other classifications not so relevant to this context.
Characteristics
We can call a desktop application when it runs: a) directly on top of the operating system; b) through intermediate software that does not impose artificial restrictions on access to the operating system, such as built-in application interpreters or language virtual machines.
Access is through a platform-specific API.
The platform provides the means to program these applications in the way that suits you best. And well-developed applications use the full potential of the platform as much as possible.
User interaction is expected for that platform, at least roughly. And it depends on nothing but itself to complete the interaction.
It must be placed on the machine in some way and be available for use right there (there is the remote access that misrepresents this a little, I will not go into detail).
From what I understand there is the idea that if your application depends on other software that works as a platform for it, the application cannot be considered desktop. For example if the access is done by an access terminal there is an intermediary that invalidates it to be desktop, although the terminal access software itself is a desktop application.
Advantages and disadvantages
In general these applications tend to be a little less secure for the user due to their little limitation. It should choose your software vendors well.
There are initiatives to decrease risk with more limitations and app store certifications. At this point the mobile philosophy differs a little from the desktop that is usually a little more free, but it is not technical limitation, it is artificial imposition.
The application itself runs a higher risk of being damaged by the user because it is exposed to the user.
The general use of the desktop application is usually more reliable and safe to avoid external interference since it has a certain isolation and difficulty handling improper.
In general it can use better authentication and authorization mechanisms.
But security can be good or bad depending more on the programmer than the platform.
In general the desktop application cannot be accessed by external means. Note that I am not talking about access to the solution as a whole which is possible and does not depend on the desktop part.
The user experience can be very good. Large data inputs work smoothly. The interaction usually occurs without snafuss or oddities. They tend to respond faster.
There is a small barrier to start using the application the first time (bring to the machine, eventually install, configure, etc.)
It consumes and makes better use of the machine’s resources. This can be good or bad.
You can access external equipment, the entire file system, any available services, interact with other applications that allow this, and access 100% of the public API of the operating system. You only need to authorize access to any or all resources once.
Some things are easier to develop in it, but given the flexibility some may require an additional effort.
Of course, all this presupposes that the application has been well developed. There are a huge number of programmers who have difficulty producing good results, but it’s not the platform’s problem, it’s the programmer’s problem. Especially web programmers usually have a lot of difficulty transiting on the desktop, hence many choose to make web, even when it is more suitable to do desktop.
Examples of applications
The most obvious are office applications such as word processor and spreadsheet, business systems, computer data administration utilities, games, educational software, and those that meet specific needs.
Web applications
I thought and researched a lot if a client application using technologies typically adopted on the web would be a web application. It concludes that this does not clearly identify the type of application. The way the application was developed cannot determine what the application is. Its internal workings indicate for this type of classification.
Characteristics
We can call a web application when it runs on top of the default web browser or through software that achieves all the same goals. Browser imposes restrictions on machine access.
Access is provided by the standardized API universally provided by the browser.
The platform provides the means to program these applications in the manner determined by W3C. And well-developed applications strictly follow these standards.
User interaction takes place universally on the Internet, at least roughly. And it depends on at least a minimum external initial access using HTTP protocol. In pure web applications interaction occurs with two applications: the browser and the page.
It must be available on demand at least the first time via HTTP (even if it is not remote).
From what I understand there is the idea that if your application does not depend on the browser, even if it uses HTML, CSS, JS, and other typical web technologies, the application cannot be considered web. If the access, even external by HTTP, is done by a desktop application that is not equivalent to the browser is not a web application.
For example Node and Deno can be used for non-web applications.
Advantages and disadvantages
In general these applications tend to be a little safer for the user due to its limitation, even because any access outside the browser must be authorized individually by the user. He must be able to access even what he doesn’t know or trust.
The application runs a higher risk of being modified by the user, so you can’t trust what it emits.
The general use of the web application is usually less reliable and safe as it is vulnerable to external interference and interceptions.
But security can be good or bad depending more on the programmer than the platform.
In general, the web application does not need to access by external means, be it internet or intranet, except in its initial load. Note that today it is not so common for web applications to run mainly offline, but that has changed.
The user experience tends not to be as good. Large data entries are badly damaged. The interaction usually occurs with a few snarls and oddities. They tend to have waits, but it’s not something intrinsic to the application, but rather the infrastructure used almost always.
The only barrier to start using the application the first time is to have an external connection to acquire the application, besides having the browser, obvious. Unless it’s totally local, which is less common.
It consumes and leverages better the ability to interact with the outside world. This can be good or bad.
You nay can access external equipment, file system, any available services, interact with other applications, and only the web API available in that browser can be accessed.
It is not simple to develop it unless it is to run on the intranet and can control the browser that the person will use (which is ironic because if you do, the web application loses almost all reason to exist). The programmer has little or no control over the environment.
Of course, all this presupposes that the application has been well developed. There are a huge amount of programmers who have difficulty producing good results, but it’s not the platform’s problem, it’s the programmer’s problem.
Examples of applications
If we consider that websites are not exactly applications we have the use of collaborative software in general, applications of eventual use by third parties and even when access needs to be made from anywhere in a simple way, and other software that mimics what desktop applications do, achieving varying degrees of success or failure.
Many applications are web because there was a non-technical requirement that determined so.
When to adopt each
If it is an application that the user will use frequently, maybe daily, there is no doubt that the desktop (or mobile) is the most appropriate option. There may be some exception, but it has to have a very good justification. Very collaborative applications can end up being useful as web, even in extreme use.
If the user access will be occasional and it will not have a strong link with the application, it will go from web.
Controversies
Not everyone agrees, not everyone can perceive all characteristics that need to be analyzed and which each platform has. There is a lot of false information that has been disseminated on the internet and as few people produce original content and most only repeat what someone wrote, the information has become ubiquitous. So I understand that many people buy myths about both.
In the other answer there are some points that do not seem to define these types of application, some maybe only that it is not totally like that, others is not the exposed, even may be the opposite.
Web
Depends on Internet connection;
Only for initial access, this feature is not mandatory, although it is very common to access so.
Does not require permissions to execute;
Requires to do specific operations. The user has to authorize individually any access that goes beyond the browser.
Users always use the most updated version;
If it is mandatory online. And this obviously doesn’t include the browser that might be using a very old version that you should support.
Allows you to easily measure what users are doing;
Just like the desktop, with even more measurements possible.
Generally requires knowledge in various development technologies such as CSS, Javascript, HTML, Back-end;
It does not matter for application.
Desktop
Works even without Internet connection;
Some already require internet, as well as a web application. Just because the application is desktop does not mean that it cannot access data over the internet or even access webservices. It is possible, but in general it does not access normal web pages.
Has small screen size, not being a good practice the use of scroll;
In general the visible screen is larger than web that has a space consumed by the browser. You can use scroll without problems, the programmer should choose what makes the most sense for that application. Just as web does not need to use scroll if he doesn’t want to.
Requires administrator permissions to run;
It does not require, unless you do something specific that requires that privilege, just as the web requires authorization to do certain tasks that are trivial on the desktop.
Usually requires installation;
Circumstantial. It is the programmer’s option to require an installation.
Difficulties to keep up to date on all users;
Not true. At least not because of the platform, it may be because of the programmer’s inability.
Security and data transfer are not so worrisome as it runs locally;
It changes very little. The fact of being local and desktop has nothing to do, are orthogonal features. Downloads can be as insecure as web.
Generally requires knowledge of only one technology for development, such as Java Swing, Delphi;
Not quite so, in general need to know some technologies between SQL, XML, JSON, some specific XML-like, maybe to define the UI, some script, among others.
Completion
I cannot say that I was able to answer definitively what each one is and I am willing to improve if someone finds some inconsistency.
https://bitmasters.wordpress.com/2011/03/03/sistema-web-x-sistema-desktop/
– user60252
I had doubts if this question was good, but I went to research and not only is it interesting and useful, as I think it will bombard, this is a demand of many people.
– Maniero
I never thought about the following, but I think it’s reasonable: can a desktop application also be web? For example systems that inform the user that it is outdated, somehow check somewhere on the network. Or, still, system that need a crack to work.
– MarceloBoni
@Marcelobonifazio usually uses the web as the definition of "thing running in the browser". But nothing requires a desktop application to have the server on the local network. One of the advantages of TCP/IP in this scenario is that it can be hybridized, only local, only remote if using network.
– Bacco
@Marcelobonifazio I’m seeing if I can find reliable information that will determine this limit. I was thinking: if an application is this typical desktop but consumes everything from a webservice or something, makes it a web application? I don’t think so, but I want to make sure, I hope to get it at the end of the research process.
– Maniero
As Silvio would say: This question is worth a million reais.
– Wallace Maxters