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
2
In general, desktop applications (and some browser applications using executable plugins):
- Are intended to run on the corporate intranet
- Have better access to the local computer
- Are platform-specific
- Are highly-interactive, but sometimes not
- Can be highly computationally-intensive on the client
- May require installation
- Are more proprietary
In general, browser applications
- Can be run on the intranet or internet
- Have limited to little access to the local computer
- Are platform agnostic
- Can be very interactive, but sometimes not
- May be highly computationally-intensive on the client
- Seldom require installation, but may require a modern browser
- 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).
2
@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
- Run on an individual system (desktop or server)
- Provide a web app interface (using HTML, JavaScript, AJAX and similar technologies)
- Are generally viewed/browsed/used on the same platform they’re running on (so both their server and client components are co-resident)
- The web app component connects to
http://locahost:SOMEPORT
or its https equivalent - 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)
- 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)
- Having some of the drawbacks of GUI apps (esp. if they are locally installed)
- 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.
2
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.