the thin line between web apps and desktop apps
I've been working a lot lately with web apps, mostly with javascript and json-rich web UIs. I have to say I get impressed all the time with what I can achieve through these technologies.
More and more, I ask myself whether I would have preferred to go with a classic GUI to start with (whether it was C#/VB.Net + WinForms, or C/C++ + GTK/QT or Java or 开发者_开发百科anything). I, however, have been able to accomplish everything I wanted in terms of a user interface with web-related technology.
And although I feel I have everything I need, more and more things keep coming in (and will keep coming in forever), like HTML5, new javascript capabilities, and probably even more things.
So, as web apps become even more and more able, I ask you:
- How thin is the line between web apps and desktop apps as of now?
- What is the future of this line? How capable will web apps be in the distant future? In this sense, is there a definition of what web apps should be, or are they just going to improve it more and more forever?
I would like to know what W3 has to say about it, though I haven't looked into it yet.
In reality we have simply come full circle in the computing world. The web browser of today is simply the green screen terminal of 30 and 40 years ago.
It used to be that you would buy time on a University's computer to run your program and then pay for time it took for your program to process and run. This was inefficient from an end user stand point since it was done in a batch and queue process so your results would have to wait till the next day. From the University's point of view though they had more computing power than they knew what to do with, so farming it out made sense and gave a nice revenue stream.
Flash forward a few years and desktops began to be as powerful if not more powerful than the University's computers and the days of batch and queue processing died off. But desktop centric applications suffer from a single fundamental flaw, multi-user needs. If more than one user needs to use the application at the same time, a server is needed in the mix to handle the multi session data needs.
The client application is useful for doing things such as data validation, but the thicker the client, the larger the risk you run with different versions of the client populating data at the server wrong.
The solution, the "web" client. Using the term web though is actually wrong in my personal opinion. The html/browser based client removes the issues found with multiple versions of a desktop client since all users are using the same version all the time. Gone are the days of deploying an upgrade across thousands of desktops. The browser based client simply needs updating on the server side and all users are instantly getting the new features.
To answer this question about the future, let's look more than a year into the past:
http://www.codinghorror.com/blog/2009/08/all-programming-is-web-programming.html
And in fact, it references an even earlier post from 3 years earlier. The future is Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.
http://www.codinghorror.com/blog/2007/07/the-principle-of-least-power.html
Apart from some UI issues, web apps are real apps.
What is the future? Wish I had a crystal ball...
However, I would hazard to guess that the trend will go on and web will subsume most if not all of desktop applications.
Both have still their meaning. Webapps will get cover global connected applications, applications that exists because there is the web. They get really more important from day to day or the builder make us thinking they are important.
GUI still will be there because for a lot of people with not so much computer skills it is still easier to operate and understand. And there are really very very complex GUI application that maybe will get never into the web (CAD for example). Their complexity will be always in front of the progress of web development. You cannot catch them.
So I believe this line is notable and will be there for long time. Not all will get into the web.
Having just made the choice of using a "web" API or Desktop API here are the most significant differentiators that I see right now:
- Support of native features
- For example on the iPhone: Direct access to low level APIs
- With the current browser development speed we should be there soon
- Offline workflows
- First steps done here with offline mode in HTML5
- API support for "desktop UIs" (flexible, configurable, fast)
- Libraries such as ExtJS are not there yet, but close
- With WebGL, Canvas, and more and more powerful CSS features it has become a lot easier to create powerful UIs
All in all there is still quite a bit of work to be done but I think a few years from now there will be no difference between web and desktop applications, some of them will work offline, some won't.
Microsoft had that vision with .hta a long time ago, at that time it just wasn't powerful enough. Google is continuing now with Chrome.
Web apps will get closer to Desktop apps as the time goes. The reason behind this is the requirements. More and more people are hooking into internet and giving time or wasting time on net. So, requirement for browser is increasing. Second, as business are going global (globalization !) It is already global but in future the requirement is much more. Even small shop need to use internet for tax etc. Developing countries are using net in governance so checking for tax is easy. For all these even if a owner has 4 small shops then he need to have a aggregate data for his selling. So, all 4 shops better need interconnection and calculate everything financial every day. People in a single team are working from remote. So, they need to share documents on regular basis. So, Google docs etc. Google docs has capability for online editing from various user at a same time. and still docs keeps synchronized. Competition are increasing day by day. So, all business data need to be on one place for analytic. Who will collect all data from desktop application each day and synchronize each day. So, even if company will use Desktop app for speed and reliability then also he need some kind of net connection and synchronization software for those desktop applications. In this way you see that desktop app are getting closer to web app!
So, if you visualize all these scenarios then you will find it very difficult to avoid web applications. Web app has future. For efficiency and speed, Web app will have a sort of software that will act as a desktop app and get downloaded when you use that.
精彩评论