Design Goals

Chrysalis has the following design goals:

  1. To provide a framework for Java web development supporting data-entry-oriented business applications.
  2. To function on any server supporting the Servlet 2.2/JSP 1.1 standard.
  3. To be simple. The core of the Chrysalis system should take at most 10 pages of explanation (the Chrysalis Quick Start).
  4. To facilitate "out of container" unit testing for components.

Chrysalis has some secondary goals supporting its design goals:

  1. Chrysalis should limit the design decisions that developers have to make. For a given task, there should be only one way to do it.
  2. Chrysalis should be modular, so that special features (internationalization, security) can be used or ignored, depending on development needs.

Chrysalis has the following "non-goals":

  1. Chrysalis is not intended to be a general purpose framework. You could not build something like Axis, Cocoon or a portal site with Chrysalis.
  2. Chrysalis does not address data system access; some other technology (EJB, JDO, JDBC, Hibernate) must be used to access enterprise data systems. These data access technologies will be responsible for issues like connection pooling, data caching and so forth.

Chrysalis and Other Web Frameworks

There are already dozens of Java web development frameworks available. A number of these frameworks are popular, well-tested and successful. Why have we created another one?

Chrysalis has support for the most popular features of modern Servlet/JSP web frameworks:

  • Modern, View, Controller.
  • Automatic Bean Updates, from request data.
  • Simplified View Generation, via jhtml custom tags.
  • Configurable View Redirection.
  • Request Interception, using standard java.servlet.Filter classes.
  • Page Templates, defining common page layout.
  • Security, integrated with the container or custom
  • Internationalization, for client-side validation, server side validation, view generation, bean attributes and error messages.

We feel that Chrysalis has a number of nice features missing from other frameworks. Here are a few of the features of Chrysalis that we distinguish it from existing frameworks.

  • Stateful Controllers: Chrysalis controllers have multiple methods, and can maintain state on behalf of application clients. This reduces or eliminates the need to interact with the servlet session, and make it easier to group common controller logic into individual classes.
  • Hierarchical Configuration: Chrysalis uses a hierarchical configuration mechanism, allowing configuration value to defined at the class/page level, package/directory level or globally.
  • Sophisticated Client-Side Validation: Chrysalis uses a fairly sophisticated, object-oriented JavaScript validation library. This library is independant of the general Chrysalis framework, and can be used separately for JavaScript form validation.
  • Support for Modern Standards on Older Containers: Chrysalis has partial support from some of the nicer features of the modern Servlet/JSP API (filters, JSTL Expression Language) with an implementation that will function on Servlet 2.2/JSP 1.1 containers.
  • Out-of-Container Testing: Chrysalis controllers are designed to easily support of out-of-container testing, so that you can write unit tests for your controllers that will function outside the Servlet engine. Chrysalis is not unique here (some other frameworks also support out-of-container testing). This feature is sufficiently uncommon, however, that we feel justified in claiming it as a distinguishing feature.