Web Applications

Web appli­ca­tions have come a long way in the past decade or so. Back in the 90s a ‘web appli­ca­tion’ was basi­cally a group of web forms and web pages hid­den behind some CGI scripts. In 2004, the same thing was basi­cally still true though peo­ple were maybe using servlets rather than CGI. Nowa­days how­ev­er, web appli­ca­tions can be very sim­i­lar to native appli­ca­tions in terms of func­tion­al­ity and usage. Over the years, the web has trans­formed from a doc­u­ment deliv­ery sys­tem to an appli­ca­tion deliv­ery sys­tem and we’ve suc­ceeded in repli­cat­ing just about every native appli­ca­tion in web form to some degree or anoth­er. This is kind of wild.

Yet, to a large degree, web appli­ca­tions still suck. They are slow com­pared to native appli­ca­tions. They don’t inte­grate with the users desk­top as nice­ly. They all run in the same browser typ­i­cal­ly, and if that crashes they all crash. The rea­son of course, is because over the years, the web has trans­formed from a doc­u­ment deliv­ery sys­tem to an appli­ca­tion deliv­ery sys­tem. HTML and CSS are a pow­er­ful doc­u­ment style and lay­out sys­tem, but they are not nec­es­sar­ily the best way to lay­out an appli­ca­tion. They cer­tainly don’t usu­ally achieve a native, inte­grated look with the rest of an appli­ca­tion. Javascript is fine for adding small amounts of inter­ac­tiv­ity to a web site, but it is woe­fully inad­e­quate to the task of writ­ing full, com­plex appli­ca­tions. Just the lim­i­ta­tions of the thread­ing model (or lack there­of) lim­its pos­si­bil­i­ties great­ly.

The thing is, web appli­ca­tions solve a lot of real prob­lems. The make it pos­si­ble for devel­op­ers to make a prod­uct and deliver it to the cus­tomer with­out hav­ing to worry about the state of the cus­tomers machine or about piracy to any real degree. Cus­tomers can use web appli­ca­tions with­out installing any­thing on their com­put­ers or doing any kind of admin work at all. Basi­cal­ly, the web acts as an appli­ca­tion deliv­ery sys­tem where an indi­vid­ual can down­load an appli­ca­tion and run it in a sand­box on the fly. He can use any com­puter the run the same appli­ca­tion and he does­n’t have to worry about it keep­ing it in sync. It turns out that this is a really good way to deliver soft­ware. We just kind of need a bet­ter sand­box.

Back in the day, Java applets looked like they were going to be that sand­box. One could write an appli­ca­tion in Java and have it down­load and run on a (Java) vir­tual machine n the user’s com­put­er. It was a lot like an HTML5 appli­ca­tion writ­ten in Javascript except with native wid­gets and a higher per­for­mance run­time. Then came Macro­me­dia Flash which did­n’t have native wid­gets but still had greater per­for­mance than Javascript for most pur­pos­es. Both of the tech­nolo­gies lost out in the long run, in part because they were con­trolled by sin­gle cor­po­rate enti­ties which made many devel­op­ers want to look for alter­na­tives, but also because they both had tech­ni­cal defi­cien­cies of their own.

Still, if I could have one wish­list tech­nol­ogy for web appli­ca­tions, it would be to edit the DOM on a web­page with a lan­guage and run­time other than Javascript. The JVM would be great as it already has nearly the same level cross plat­form sup­port as the web browser and there are a lot of alter­na­tive lan­guages which tar­get it. I feel like this would be an improve­ment over using Javascript as an ASM for the web if for no other rea­son than allow­ing actual threads to work.

    Last update: 05/09/2014

    blog comments powered by Disqus