views:

144

answers:

6

Recently, the pace at which web browsers improved and implemented new technologies (e.g. HTML5) seemed to have accellerated considerably. At the same time, the tools for developing web applications, like e.g. jQuery, or the myriads of web frameworks have also made web development much easier.

Are we now at a point were it makes sense to develop a pure single-user desktop application using web technologies? Assuming we can just install the latest browser together with our application, we don't have to worry about compatibility with older browsers.

+3  A: 

IMHO web based applications are the future. Currently there are applications that will take a very long time to get onto the web, like adobe products. The web will still need to advance a lot more before we get to that point.

Web browsers sill are behind the times and there is far too much browser share going to the browsers the don't support (or poorly support) such features as HTML5, CSS3, etc.

Cloud technologies are the way to go if you don't mind dealing with cross browser headaches. The best advantages to a client with cloud apps is that they can access it anywhere without downloading a thing.

But if you are referring to have a web based technology downloaded to the users desktop then you can use adobe air :)

Dale
+2  A: 

I personally do everything with web technolgy that I prevously would have done in a desktop application. The javascript frameworks take a lot of pain out of browser differences. It definately the way to go for internal applications. The possible problem with outward facing applications is that you have to assume that people have not turned javascript off.

Edit:

If you're looking to actually develop desktop applications using web technology like javascript etc the adobe air might be the way to go

Steve Mc
+1  A: 

No. And that is not a point one can get to, as such. Web applications will always be more limited than desktop applications, for the reasons of security and privacy alone, not to mention cross-platform sensibility, implementation quality and straight up visual and design requirements.

As such, unless your application can deal with some pretty severe limitations (zero chance of elevated privileges, likely limited access to the file system, if at all, no document exchange, speed limitations, limitations in computing power used,…), it simply isn't a realistic approach.

Edit:

By means of clarification to the "visual and design requirements" bit: Users generally expect a certain look and feel with their desktop applications, conforming to this look and feel over multiple platforms is an absolute pain; because everything has different sizes no matter where you go. If your not planning on supporting multiple platforms anyway, then what is the point in the first place?

In other words, you end up in a situation where you can use 90% of development time maintaining style sheets that make it look sane on each platform; or make it ugly on all platforms (ref: Java )

Williham Totland
I totally agree. Maybe Google will be making this a non issue as their chrome OS is web based?
Dale
I was more thinking about putting the server part of the web application also on the desktop, that one would run with the usual privileges.
Fabian
At the point where you are maintaining the core logic of the application in a cross-platform manner; you don't really *gain* anything by putting the UI in a web browser. UI is rarely the tricky bit.
Williham Totland
Most applications don't need super security although their are plenty of web applications that do (think banks).Limiting access to the file system seems like a good idea and limitations in computing power would actually be an arguement for web applications.
Steve Mc
@Steve Mc: I'm thinking you don't quite understand the question; read it again. Read my answer again, too; what I said was that a) the web browser generally has poor access to the file system, for reasons of security, and b) there are limits to how much that can be done in a single operation when using a web browser; trying to do it in JS will cause the browser to stop the operation (ref: halting problem), doing it on the "server" will lead to timeouts, meaning that you have to spend a lot of time reinventing the wheel, just to make a progress bar.
Williham Totland
This is actually my everyday job - and there is no problem maintaining the look and feel over multiple platforms. This is what the js frameworks are for.
Steve Mc
If you are writing a server application that needs to search through your entire network and move documents around and change access rights - then don't create a web application.
Steve Mc
@Steve Mc: Not the look and feel; the platform-specific *proper* look and feel; including everything from the proper location of buttons (right side or left? 20px, 12px or 8px from the edge of the window? Cancel or OK first?) to the specifics of keyboard shortcuts (On Mac OS X, Save is Command-S irrespective of language; on Windows it varies, if used at all)
Williham Totland
Actually - I don't think most users do expect proper platform-specific look and feel. Most nowadays have grown up in the web environment and expect their applications to have the look and feel of the web
Steve Mc
Look and feel has nothing to do with the possibility of creating desktop applications integrated with the web. Just because they might not look the same doesn't mean you can't create them. There are many ways to work around the security problems. Such things may be new to Windows users but applications over the internet have been around for decades on *nix.
Rob
"I'm thinking you don't quite understand the question; read it again." So should you. The author asks, whether web technologies could/should be used to develop desktop applications. And the answer is yes, because there are multiple possibilities to deploy web technologies on the desktop bypassing any of the limitations you mentioned. Your claims are based only on your lack of knowledge on the subject and the things you can read on the countless apple fanboy blogs.
back2dos
@back2dos: Why would one use an unsuitable environment where one has to work around limitations, when one could work directly in the appropriate environment where the limitations don't exist in the first place? Baffling.
Williham Totland
@Willham Totland: There are reasons, but that's out of the scope of the question. Also, it's not so much of a work around, if you chose the right way of deployment. Mozilla seems to like web technology: http://www.ohloh.net/p/firefox/analyses/latest , http://www.ohloh.net/p/thunderbird/analyses/latest .
back2dos
@Willham Totland: I honestly believe any limitations of the web environment far outway the limitations of the desktop environment - if not now, then very shortly. I feel less restricted in the web environment. The UI experience is now equal to that of the desktop (and I would argue more flexible). It is easier to deploy to multiple platforms (eg multiple OS). Local storage (ie db) is now possible. Any drawbacks if not solved now - will be. Frameworks, whether JS or other do take all the pain out of cross browser differences - differences which are becoming less and less by the day.
Steve Mc
+1  A: 

Yes, we are now at that point where it can be done, except for the always problematic IE. This has been possible for quite some time in Firefox with XUL and Prism. I have seen a couple of applications showing the capabilities you speak of. They worked in all the modern browsers. Of course, none of them can work in IE. IE always holds back the web.

Rob
A: 

No - there are three specific experiences that you can offer the user, and there's reasons in many apps not to muddle them up

Lightweight - pure web, client just needs to be able to run a browser - this can be further broken down into mobile clients, clients running in challenged environments (low cpu, low bandwidth,etc)

Rich Internet Applications - Much heavier weight web applications - not so much traditional asp.net anymore (I hope) because the apps beat the hell out of the comms channel (viewstate) and the host server (often postbacks cause scads of code to run on the server just for 3 lines of 'real' functionality) - I'd propose jQuery for it's wide playing field, Silverlight for the more limited playground but the undeniably rich experience, and wonder when the promises of HTML 5 will really be in the market

Thick Client Applications - custom code, access to the file system, 3D rendering, all the bits that really need local code with access to local resources

Now that that is said, the positive spin on your question relates to factoring your applications well - pay attention to the separation between your tiers, especially with respect to the separation between your presentation tier and the logic tiers it talks to -

1) Use a global communications mechanism - errr, that means REST, cause anyone can speak it - all your clients can use it - SOAP isn't so globally usable

2) Don't be monolithic, be service oriented - break your functionality up so specific bits can be accessed directly - this means its easy for jQuery and rich clients to easily access the bits they need when they need them - you want to be in the position that you don't care who/what the client is (for lightweight you, for all else them) you create the service once and everybody uses it in more or less the same fashion

3) Make presentation unique for the different media/delivery types/ make services uniform - (that said, with rich clients it sometimes pays to offload service processing onto the client to spare your server and increase your scalability)

Mark Mullin
A: 

The discussion raised here is exactly the reasons why Visual WebGui was designed; to allow developers and users to enjoy both worlds (desktop and web). Visual WebGui is a server based web technology that allows native web applications to run via standard browsers and doesn't require any special plug-ins or installations on the client.

On the development side it allows simple drag and drop (VB6-like) development practices and concepts (XAML programming also available now) that can be easily utilized to recreate desktop richness on the web.

Here you can find info about the Visual WebGui Technology