JSAppFramework

sourceforge.net

Rich Client Browser Application Framework

Home

Overview

JSAppFramework is an application development framework that facilitates the development of thick web browser clients. It's component-oriented design is ideal for building rich, highly interactive browser applications that have superior performance characteristics.

An examination of the internal code of most browser applications will reveal that much of it is common code that is re-invented every time a new project starts up. In addition, although we may initially intend to write efficient and reuseable code, we usually succumb to business pressures and take shortcuts. Thus, most browser code is not object-oriented, has no discernible reuseable component design and is very difficult to read and extend at a later date.

The loose browser application development environment itself is to blame for much of the "spaghetti" style code employed in browser applications today. As a result, programmer productivity in the browser environment is very poor.

JSAppFramework sets out to solve this problem by laying out a design for browser applications that adhere to the following key philosophies:

  • Everything is a component
  • Design for reuse and extensibility at every stage of the project
  • Employ object-oriented coding
  • Code readability and self-documentation is regarded as a high priority - sometimes at the expense of performance, efficiency and terseness
  • Components should be designed to be reuseable and generic and provide mechanisms to easily extend and customize them
  • The inner workings of a component is known only to the component's private code
  • Components expose their functionlity and communicate externally with each other through their interfaces
  • When creating reuseable components and controls, separate the visual aspects (DHTML markup) from the core generic code. Allow the markup to be customized by the application developer.
  • Wherever possible, employ best practice programming patterns when designing components
  • Core framework code should not be modified by the target application developer allowing for upgrades to the core code by the framework developer at any given time
  • The Model-View-Controller design pattern is ideal for user interfaces
  • Achieve performance gains by creating and managing the user interface in the client instead of on the server
  • Achieve greater separation of user interface and business logic/data by moving only XML data and presentation metadata back and forth to/from the server
  • The server is concerned only with business logic, business data and presentation metadata, not the actual assembly of the DHTML markup
  • The client codifies the user interface semantics of the application but does not define the business rules of the application - the client does not define the application - it interprets and presents it. The server performs that function. This makes it possible to employ different user interface platforms and devices such as C++, Swing, PDA, mobile phone, WAP, all accessing the same business logic and data on the server

JSAppFramework also provides a reference implementation of the framework, built with DHTML, JavaScript, XML, XSLT which can be used to form the base infrastructure of a new project. This can save several man months of design, coding, testing, re-design and re-coding time on large projects. Small projects too can benefit, since they usually do not have a large budget and therefore not much time is spent on creating a robust infrastructure on which to build the target application. There is also the added benefit of using a reference design that has proven itself in the field over many years.


SourceForge.net Logo

The latest release of the framework is 0.51. Download it now!


View the project on sourceforge.net.


Browse the source code in CVS.


View a demonstration of the framework in action


Check out this article by Jesse James Garrett of Adaptive Path - Ajax: A New Approach to Web Applications


See how the people at Google Maps and Google Suggest are using rich client techniques to create highly interactive user experiences.


XMLHttpRequest & Ajax Based Applications