Web applications have come a long way in the past decade or so. Back in the 90s a ‘web application’ was basically a group of web forms and web pages hidden behind some CGI scripts. In 2004, the same thing was basically still true though people were maybe using servlets rather than CGI. Nowadays however, web applications can be very similar to native applications in terms of functionality and usage. Over the years, the web has transformed from a document delivery system to an application delivery system and we’ve succeeded in replicating just about every native application in web form to some degree or another. This is kind of wild.
Yet, to a large degree, web applications still suck. They are slow compared to native applications. They don’t integrate with the users desktop as nicely. They all run in the same browser typically, and if that crashes they all crash. The reason of course, is because over the years, the web has transformed from a document delivery system to an application delivery system. HTML and CSS are a powerful document style and layout system, but they are not necessarily the best way to layout an application. They certainly don’t usually achieve a native, integrated look with the rest of an application. Javascript is fine for adding small amounts of interactivity to a web site, but it is woefully inadequate to the task of writing full, complex applications. Just the limitations of the threading model (or lack thereof) limits possibilities greatly.
The thing is, web applications solve a lot of real problems. The make it possible for developers to make a product and deliver it to the customer without having to worry about the state of the customers machine or about piracy to any real degree. Customers can use web applications without installing anything on their computers or doing any kind of admin work at all. Basically, the web acts as an application delivery system where an individual can download an application and run it in a sandbox on the fly. He can use any computer the run the same application and he doesn’t have to worry about it keeping it in sync. It turns out that this is a really good way to deliver software. We just kind of need a better sandbox.
Back in the day, Java applets looked like they were going to be that sandbox. One could write an application in Java and have it download and run on a (Java) virtual machine n the user’s computer. It was a lot like an HTML5 application written in Javascript except with native widgets and a higher performance runtime. Then came Macromedia Flash which didn’t have native widgets but still had greater performance than Javascript for most purposes. Both of the technologies lost out in the long run, in part because they were controlled by single corporate entities which made many developers want to look for alternatives, but also because they both had technical deficiencies of their own.
Still, if I could have one wishlist technology for web applications, it would be to edit the DOM on a webpage with a language and runtime other than Javascript. The JVM would be great as it already has nearly the same level cross platform support as the web browser and there are a lot of alternative languages which target it. I feel like this would be an improvement over using Javascript as an ASM for the web if for no other reason than allowing actual threads to work.