Blog

The Browser is the VM

by | May 13, 2011 | Software Development | 0 comments

Just like thousands (millions?) of others, I spent the last 9 years writing services for Web applications.  I always concentrated on the server side, and never took the browser seriously as a software development platform.  I assume I’m not alone, given the prevalence of sites like theserverside.com.

Well, my new project is using some HTML5/CSS3/jQuery goodness right now, and my viewpoint is changing.  HTML5 obviously provides a much broader surface than HTML4.  Still, consider what browsers have provided the last lo-these-many-years:

  • Widget toolkits: jQuery, extJS, JSF components, on and on: there is no end of really interesting UI toolkits for browsers
  • Programming: JavaScript is a seriously powerful language
  • Remote procedure calls: XMLHttpRequest now, Web Workers soon
  • Local storage: jQuery and other JavaScript libraries use DOM tricks to cache data locally now; HTML 5 offers true local storage
  • Sandboxed execution: Chrome runs each tab separately from the others… hopefully other browsers either have already, or will follow soon

In short, browsers offer all the convenience of other virtual machines.  When I write Java programs, I think of the Java Virtual Machine as my platform; essentially, the JVM is my operating system.  Well, when the user interface developers write code to run in a browser, the browser is their platform; the browser is the operating system.

So: what does all this mean for browser developers?

Browser developers have to understand their platform with the same intimacy (or, hopefully, much more intimacy, given the lackadaisical state of software development these days) as Java and dotNET developers understand theirs.  (Unfortunately the diversity between browsers is much much broader than Java & dotNet folk have to deal with!)

Browser developers have to architect and design their solution with the same care and attention to detail (or again, hopefully much more, given that the Big Ball of Mud architecture is still the most popular) as other platform developers.

System and software architects have to think of browsers as client nodes in a client-server system… Maybe everyone else understands this already, but this is a new thought for me.  I always thought of browsers as similar to dumb terminals in a mainframe time-sharing system.

I am probably late to the game in terms of realizing just how capable browsers really are.  I have a strong background in server-side tools like Oracle and the Spring Framework.  But my knowledge of modern HTML, CSS, and JavaScript is very limited!

The browser is a capable virtual machine in its own right.  It behooves me to understand the platform my users have to live with!

 

Categories

Related Posts

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *