top of page

A New Vision For Web Apps

 

 

Over the past several years I have been of the belief that the basic architectural model of the web is flawed. There are too many technologies and it is a world that is too damned chaotic. I thought that having applications that consisted of complex interactions of server-side and client-side technologies, differences in browsers and web server platforms, and the technologies that run on them was just too much.

 

The alphabet soup of Java and Javascript, JQuery, HTML, HTTP, Web Sockets, MVC, Web API, XML, XSLT, Servelets, NodeJS, BackboneJS, Angular, Bootstrap, TypeScript, etcetera makes my head spin. My head has been spinning for two decades now, but happily, I think it is getting better.

 

The complexity and diversity of web technologies had led me to believe that many of these technologies should be junked in favor of something much simpler. I wasn't alone in my yearning to see the browser become an application delivery device. Indeed Java Applets was an attempt in that direction. You simply download applications and run them in a sandbox in the browser (can I tell you that I secretly hated Duke!). From what I remember, applets lacked any sort of data or CRUD capability and was mostly an animation utility. ActiveX objects was a similar attempt at the utopian vision of being able to download applications in the browser and run them from there. It also ran out of gas for various reasons.

 

Although it is true that we have an ever growing Tower of Babble in terms of web technologies, I think I am beginning to see a glimmer of light at the end of the tunnel with SPA applications. We are not, as I had thought, simply morphing off into an ever expanding world of web development chaos. This world has always been pretty chaotic. To the contrary, the last 20 years of change in web development paradigms and technologies has been very fruitful, identifying and solving one technological hurdle after the next, sometimes unwittingly perhaps.

 

We have gone from out-of-process, or CGI, web development in the 1990s to API integrated web servers. Doing so moved web development significantly forward. It meant that companies like Microsoft and Sun made available (and enhanced) their existing programming APIs to web developers. Previously, applications were written in PERL or as shell scripts (or some other language of that time), were not managed by the web server, and were very slow as they spawned new processes with each user request.

 

Another significant change that pushed the web even more towards becoming a bona fide application platform is AJAX. AJAX techniques allowed us to solve another big problem, namely the lack of responsiveness of browser applications, owing to the constant refreshing of the browser. It was during the AJAX revolution that the DOM and the browser APIs began to take center stage in web development and client-side Javascript APIs took off. You could now begin to build sophisticated web based applications that seemed responsive.

 

The previously mentioned events were brewing between the years 2000 and 2005. Following that was the advent of the mashup, around 2007. RESTful web services, another major leap forward in web development, allowed web developers to create applications that aggregated content from various providers and tie them up into a single new application (Google Maps, YouTube, etc.). The combining of asynchronous (AJAX) calls to lightweight web APIs was big, perhaps not big enough to call itself a seismic shift in web development (and the corresponding opportunity to make money), but like with most technological breakthroughs it was another, perhaps heavy, feather that landed on the scales of change.

 

Emerging from these client centric programming technologies and techniques (Javascript, JQuery, DOM, browser APIs, etc.) was a way of developing web applications that focused largely on the browser. It became clear that you could create some amazing applications in the browser that rivaled and exceeded what could be done with traditional stand-alone applications. The applications that could be built with browsers in many cases were as responsive and feature rich as desktop applications. And the benefits were clear. You could host applications in the cloud, virtually eliminating the need for customers to update their software.

 

As the first decade of the 21st century rolled on it became clear that to be able to write efficient, maintainable server-side code, we needed to be able to use and evolve some of the software design techniques already in use in more traditional software development, namely build and testing tools, design patterns, and the many other tools and technologies that were already available. The one thing that was getting in the way of this, however, was the nature of the server-side code behind pages. It was difficult to achieve a “separation of concerns” with them. They were tightly bound with the page that they were attached to, making it difficult to separate out the business and data access logic layers.

 

This problem was soon addressed by the heavy hitters Sun and Microsoft, as they began to implement the MVC architectural pattern for web applications. MVC allowed developers to have a data Model that represented an application’s data, a View, and a Controller that passed the model to the View. Indeed, the model and view could be bound together using object relational mapping such that changes in the view could be detected and saved back to the model, essentially performing CRUD operations. Today, some of the newer Javascript frameworks (AngularJS, KnockoutJS, BackboneJS, Kendo) are doing MVC and MVVM client-side binding in the browser, passing the model to the repository using REST.

 

The fairly recent milestones (MVC and object relational mapping) in web development have paved the way for ever more efficient development techniques to be applied to web development. The advent of agile programming methods have also helped facilitate a more effective means of developing applications that have a better shot of moving at the speed of business. Unit testing, automated testing, test driven development are other tools that have come to the party, adding to a more and more robust set of tools for web development.

 

As I mentioned at the beginning of this article, I thought the web was doomed because of too many competing technologies, too much chaos. Mea culpa…I was wrong. While there are a dizzying number technologies, it has not doomed the web—it has made it stronger. Perhaps by divine luck, the marble has landed in the right technology slot. The problems we have been solving over past two decades have set us up to begin to reap a windfall due to the explosion in mobile technology.

 

The nature of mobile devices with their small footprint and need for a real-time, responsive user interface, is a perfect fit for the technologies that have been brewing and expanding over the years. The new paradigm for mobile is not an Applet…it is not ActiveX…it is SPA. Single Page Applications (SPA). These applications draw on the many technologies that have come before it, and some new ones (REST, JASON, JQuery, etcetera). Mobile applications, which are by their nature client centric, are a perfect fit for the evolutionary winners of these chaotic technologies that, perhaps coincidentally, have been developed.

 

While we might not exactly have order, it is the coupling of a few technologies with lightweight Web APIs that will create a new “singular” vision. That vision is SPA. The application is in the browser...the CRUD is in HTTP...the transport is TCP/IP...and the lime is in the coconut...eat it all up!

bottom of page