Many people entering a software development career are often told to focus on web applications over desktop ones. Apparently, many believe that desktop apps are a dying technology. While it is true that certain business functionality that was, in the past, performed by desktop apps is now commonly performed by hosted browser-based web apps, there are still many use cases for desktop apps and none of them are going away any time soon.
It is extremely difficult to imagine your life without desktop apps. Anything that is actually installed on a full-sized computer is one of them. Yes, web apps can do many things, but the browser that is needed to access them is, itself, a desktop app. Any integrated development environment (IDE) that programmers use to build software is a desktop app, even when it's only ever used to write code for the web. There are countless of other examples that you can find if you'll think about it.
Of course, web apps do have distinct advantages over desktop apps in some areas. However, it is the other way round in some other areas. So, if you are undecided which way to take your programming career, let's have a look at the pros and cons of both technologies.
The advantages of a web app
This means that many types of applications can now be built as web apps. For enterprise software in particular, this also adds the advantage of not having to install a copy on every single machine within the organisation, enormously saving on cost.
Even creating files is not an issue for a web app anymore. It will be able to store them on the server or in the cloud cluster, available for download to your own machine when requested. This is how Google Docs have been able to compete with Microsoft Office.
However, while web apps are capable of doing many different things, there are still some things that desktop apps can do than the web ones can't. Some of those capabilities are likely to never be available to web apps.
Desktop app sometimes is a much better, or even the only, choice
Let's start with the fact that only software installed on the actual machine can access device drivers on that machine. Yes, you can stream videos and play sound off the web, but this is only possible because your browser, which in itself is a desktop app, has access to those drivers.Nothing that has to run in a background can be done by a web app. Once your browser is closed, so is your web app. However, if you need to download a large file, it is much better to do it as a background process. You don't want to accidentally close the browser while you've already downloaded half of the file, which already took you over an hour. This is why popular gaming platforms such as, Steam and Origin, have to be installed before you can download any games.
Anything that requires highly performant and very complex UI that depends on a good GPU can only be done as a desktop app. This especially applies to games. Of course, there are very impressive browser games out there. However, the most cutting edge games will always have to be installed. First of all, in order to enable high-quality graphic and the complexity of open world play, the code needs to run as close to the hardware as possible. Secondly, games take a lot of space. If a PS4-level game was played through the browser, you would experience prohibitively long loading times, as all of this data would have to get delivered via the Internet.
Likewise, any business software with a wide range of advanced functionality should be done as a desktop app, especially when such software is capable of generating work that authors wouldn't necessarily want to place on other people's servers. This is why IDEs, such as Visual Studio and database management systems, such as SQL Management Studio, are desktop apps. If you intend to write closed-source code, you don't want to compile it on somebody else's server. Likewise, if you own some sensitive data, you don't want to rely on third party for its storage.
These are just some of the use cases for desktop apps. Countless of other examples can be thought of. This is why the biggest technology vendors are still actively developing and promoting tools for building desktop-based software.
UWP is heavily promoted by Microsoft
.NET Framework, a proprietary software development technology made by Microsoft, always came with the ability to build desktop apps. Over the years, the technologies used for this purpose have significantly evolved. At the beginning, it was Windows Forms. Several years later, it was Windows Presentation Foundation (WPF). This technology is compatible with any officially supported version of Windows OS and is still widely used. However, since the introduction of Windows 10, a completely new framework for building desktop apps has been released. It is called Universal Windows Platform (UWP).
Unlike its predecessor, this technology is not compatible with any version of Windows that came before Windows 10. However, there are parts of this platform that are very similar to WPF. For example, both technologies use XAML, a proprietary flavor of XML, to build user interfaces. Unlike WPF, however, which is specifically tailored for building desktop apps, UWP utilises mobile-first approach. It uses the same concept as in building modern website front-end. You can build your user interface to be easily accessible on a small hand-held device and then scale it out to make it look sufficiently good on larger screens. This allows the same app to operate on any Window device, regardless of whether it is a phone, a tablet or a desktop.
This technology is heavily promoted by Microsoft. For example, virtually every issue of MSDN Magazine has an article outlining its benefits. The company anticipates that installable apps will remain a major market for foreseeable future.
So, despite some fear within the software development circle, desktop apps are far from being confined to the recycling bin of the history. Even though some functionality traditionally performed by desktop apps is now done by web app, the market for desktop app is still booming.
Software vendors aren't only maintaining their old technologies for building desktop apps, but are also introducing new ones. Another good news is that the new generation of desktop app building technologies is not confined to the desktop. Microsoft's UWP can be used for mobile app development while Electron, the technology based on Node.js, allows you to easily port your web app code into desktop apps and vice versa. So, if you desktop app development is something that you want to do, but aren't sure whether it's worth it, I can assure you that it totally is.
Written by Fiodar Sazanavets
Posted on 17 Apr 2018