Chapter 1. Introduction

Table of Contents

Features
License
Credits
Contact Information

SISCweb is a framework to facilitate writing stateful Scheme web applications in J2EE environments.

SISCweb sports an interactive, REPL-based web application development style. Developers can write applications interactively, without ever restarting the context, and, insofar as it is desirable, without ever losing application state. (In fact, save for the Java portion, SISCweb itself is developed interactively in its own REPL.)

Through the use of continuations, SISCweb does away with the page-centric execution model typical of web applications (see [1].) Every time a response is sent to the browser, the program execution flow is suspended, to be then resumed from that exact point when the browser submits a request. Some consequences of this approach are:

  • Programs are more easily structured around their problem domain rather than their presentation.
  • Developers are mostly freed from having to manually manage the lifecycle of objects in the session. The need to to store objects in the session is greatly reduced because when the browser submits a request, and the program's execution flow is resumed, all the language-level variables that were in scope are again available.
  • Thanks to SISC's serializable continuations, accumulated program state is transparent to server restarts.
  • Programs can be made resilient to page reloads and browser window cloning with much less effort.
  • An extra security layer is added because URLs (which now encode a reference to program state) cannot easily be manipulated, hidden form variables are not needed anymore, and in general the automatic state management in SISCweb should be more difficult to hack than the ad-hoc solutions developers are forced to implement in traditional web frameworks.

Note

This document is a work-in-progress. Readers not familiar with other Scheme web frameworks might want to also read through the documentation of more mature implementations:

SISCweb is open-source software licensed under the MPL, the GPL, and the LGPL.

SISCweb is based on SISC (http://sisc.sourceforge.net/), a Scheme interpreter for the JVM with full continuations, and is heavily influenced by other Lisp web frameworks:

A couple of initial design decisions were also lifted from Matthias Radestock's servlet code in the contrib section of the SISC CVS tree.

Also special thanks to Anton van Straaten, Dominique Boucher, Ben Simon, Dan Muresan, Felix Klock and Tony Garnock-Jones for bug reports, suggestions, and/or work in support of SISCweb.

Comments, ideas, and bug reports are welcome at:



[1] Christian Queinnec. "Inverting back the inversion of control or, continuations versus page-centric programming". Technical Report 7, LIP6. May 2001. ( http://www-spi.lip6.fr/~queinnec/Papers/www.ps.gz )