What should be taken into account when choosing between desktop and web as a platform for a new application?

There are definitely a lot of arguments for both platforms but what are the most important to consider?

For example:

  • I think that it is easier to develop a desktop application;
  • On the other hand it is much easier to distribute an online web application;
  • Cloud apps are much more popular nowadays;
  • If the application should interact with physical devices it would be impossible to make it as a web-app

Etc. Sorry for a possible opinion-based question

  • Popularity is mostly irrelevant, although it can be a gross indicator of where technology trends are headed. – Robert Harvey Oct 21 '14 at 1:07
  • Are future career prospects for developers involved a part of the equation? – Den Oct 21 '14 at 13:06

In general, desktop applications (and some browser applications using executable plugins):

  1. Are intended to run on the corporate intranet
  2. Have better access to the local computer
  3. Are platform-specific
  4. Are highly-interactive, but sometimes not
  5. Can be highly computationally-intensive on the client
  6. May require installation
  7. Are more proprietary

In general, browser applications

  1. Can be run on the intranet or internet
  2. Have limited to little access to the local computer
  3. Are platform agnostic
  4. Can be very interactive, but sometimes not
  5. May be highly computationally-intensive on the client
  6. Seldom require installation, but may require a modern browser
  7. Are less proprietary

As you can see, there aren't that many substantial differences nowadays, but some of them can be stark. For example, if you can write your app in HTML5 and CSS3, you won't have to write an app for each native platform (i.e. iOS, Android).

  • Thank you for that big answer! I am going to accept it little later - maybe there will be any other opinions – user1582878 Oct 21 '14 at 3:32
  • "if you can write your app in HTML5 and CSS3, you won't have to write an app for each native platform (i.e. iOS, Android)" - I would say "might not have to" e.g. when user experience quality is not important. – Den Oct 21 '14 at 13:04

@Robert Harvey gives a good rundown comparing desktop and cloud/browser based apps. To this I'd like to add a third category you might consider:

Local Web App

  1. Run on an individual system (desktop or server)
  2. Provide a web app interface (using HTML, JavaScript, AJAX and similar technologies)
  3. Are generally viewed/browsed/used on the same platform they're running on (so both their server and client components are co-resident)
  4. The web app component connects to http://locahost:SOMEPORT or its https equivalent
  5. Gives many of the benefits of GUI apps (local residency for speed, responsiveness, and independence from network outages/performance issues; ability to interact with any local resource)
  6. Gives many of the benefits of web apps (crafted in platform-indpendent way, not requiring platform-specific GUI libraries but instead leveraging modern web app frameworks and tools)
  7. Having some of the drawbacks of GUI apps (esp. if they are locally installed)
  8. Having some of the drawbacks of web apps (e.g. somewhat lesser interactivity, dependence on browsers)

Local web apps are an interesting new application style. I've written a few, and they work nicely. They are a better bridge to cloud apps than GUIs can be, and they nicely piggyback all the year by year advances in web tooling.

  • Thank you for an interesting opportunity, but the complexity of the setup process is a bit scary – user1582878 Oct 21 '14 at 3:31
  • @user1582878 For me, app packaging and installation is the hard part. That's true for any locally installed app though (incl GUI). The setup is under a few dozen lines of Python. But, you do have to have skills across your server and client environments. – Jonathan Eunice Oct 21 '14 at 3:42

One thing that web apps are not good at (yet, at least) is smooth interaction with a user. They don't typically use the keyboard well, and can be fiddly and frustrating with many fine mouse movements, unhelpful focus movements, network delays, UI elements jumping around with reloads, etc.

So, if your users will be using it all day and will want to use shortcuts, will want fast responses, etc....then you might be better off with a desktop application. It can even be a safety issue - you're more likely to get RSI with a mouse, especially if you use those fiddly hover-to-open menus and submenus.

Don't forget Java as a middle-ground, especially now that JavaFX 2 is around. I haven't had chance to use it yet, but it looks better than Swing from both the user and developer's point of view, and you can also embed a web browser in it (with HTML and JavaScript which can interact with the Java) which I'm hoping will be a way to make hybrid web+Java applications. And, of course, Java Webstart makes installation and updates much easier than a native application.

Not the answer you're looking for? Browse other questions tagged or ask your own question.