RAD Frameworks For Web Application Development
A well made drag and drop, all in one, web application development environment has yet to be made. Therefore, it is best to keep the browser and the server decoupled. JSF was an attempt to create a Rapid Application Development (RAD) tool for web applications, and ultimately failed because its tight coupling made it inflexible.
- RAD Frameworks
RAD Web Application Development
Rapid development integrated application development solutions attempt to create an environment
where the developer will not have to write HTML. Ideally, the developer has a library of user interface components
that can be visually dragged and dropped onto their "canvas" and then hooked up to some kind of data interface.
These kinds of rapid application development (RAD) environments have existed for desktop application development for over 20 years, examples being Visual Basic, Delphi, and Powerbuilder. This really makes one wonder why a dominant and successful equivalent has not leaped to the forefront of web application development.
Unfortunately, the architectural difference between the way a web browser interacts with a server and the way a native computer application interacts with its environment makes RAD development a real challenge. Native applications operate in a memory hierarchy to display themselves, meaning each object displayed, whether it is a button or an input, is a memory object holding a reference to its parent object. Any RAD tool, running on a desktop, is also going to represent itself in this way.
Now, how can this memory representation be related across the internet to a browser? The answer is that it can't be done using standard HTML. Only the appearance of the objects can be translated to HTML but the actual relationship between the objects cannot be directly transformed. It is easy to imagine a tool generating HTML to make a web page display the objects as they would appear in a desktop application, but how are the objects actually related to each other? When a user drags one object on a web page, do other objects get dragged along with it? HTML has no way of relaying this kind of information to the browser.
In fact, tight couplings between memory objects on the server and DOM objects on the browser are not always necessary or desirable. Maybe an input is only used temporary on the browser and never actually submits to the server. Why would one want an object on the server waiting for input from it then? Furthermore, an object that wraps a bunch of functionality is going to be much larger than an object that just wraps a placeholder for data, so a user's session on the server is going to be much larger.
Also, any kind of tight coupling is going to limit the number of layout options developers have. Is it possible for a drag and drop development tool to cover all of the things that are possible with HTML and CSS? With HTML5 the things that can be done with CSS became even more interesting, so the importance of hiring a good web designer went up once again.
Interestingly, new JSON frameworks such as Angular are also selling the idea of tight coupling, refered to as "two way data binding". However,once a developer starts working in this environment they find themselves questioning why this is necessary. For example, if an entire table of data is rendered browser side, the entire table will be tightly coupled to a json data object. Typically, selecting a row in this table only results in a single identifier for that row being sent back to the server. So what is the value of binding the entire table? The answer is that there is no value to it, and it ends up creating a mess of complicated relationships that have to be maintained in the code.
References On The Web:
Frustrations with JSF, a RAD Web App Development Tool