Scope is a framework built around an extensible implementation of the Hierarchical Model-View-Controller (HMVC) pattern similar to the pattern described in . It provides an easy-to-use Java library that can be used as a basis for component-oriented application development following the layered architecture detailed in Sun's J2EE and in . HMVC: The layered pattern for developing strong client tiers Cheesman/Daniels: UML Components

Applications developed using Scope are "view-agnostic": a Swing application uses the same infrastructure and patterns as a web application that happens to use XML/XSLT to generate HTML, or a JSP-based application. The framework has been used in production systems built using the default Swing and XML/XSL Servlet implementations, as well as proprietary VoiceXML, ColdFusion and custom XML/XSLT implementations.


Scope provides the following major subsystems:

  • An HMVC implementation in which Controllers respond to Control objects issued from Views as a result of user interaction, or from child Controllers in the chain of responsibility.
  • Infrastructure for binding models to views with full two-way synchronisation: change the view and the model is updated, and vice-versa. (Obvious limitations exist with web applications that cannot update HTML when a model on the web server updates.)
  • Wrappers around common Swing components to implement full data binding with validation.
  • A servlet implementation using XSLT to transform model XML into HTML. The servlet implementation supports persistent per-user application state if required, and automatic repopulation of model objects from form parameters in an HTTP request.
  • An early implementation using JSP Views to suck data from models into an HTML layout. This also supports automatic repopulation of model data from HTTP requests.
  • Infrastructure that allows Scope to act on arbitrary JavaBean model objects. This infrastructure is designed to be decoupled in such a way that an alternative can be plugged in, for example to act on JMX MBeans.
  • An implementation of "active" model objects that broadcast changes in their state to allow views to update automatically. A set of "active" collection models are also provided. Use of these base classes is optional but convenient in complex applications that use a rich GUI, eg Swing, in which fully automated synchronisation between model and view is desirable. However, even where this is not feasible, Scope's Swing implementation without "active" models enables simple semi-automatic data-binding -- see the samples.
  • Support for localisation of user messages.
  • Support for conversion of arbitrary datatypes to and from their String representation.
  • A comprehensive unit test suite to ensure a known quality level.

Help and contact

Scope is distributed with a set of designed to act as tutorials in the use of various features of the framework. samples

A Yahoo eGroup has been set up by Scope users to discuss their experiences. A FAQ is also being compiled by list members -- a useful resource for all users. For further information: http://groups.yahoo.com/group/scope-dev-framework