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
- Remote procedure calls: XMLHttpRequest now, Web Workers soon
- 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.
The browser is a capable virtual machine in its own right. It behooves me to understand the platform my users have to live with!