Work is in progress

I haven't announced version 0.5 because there's nothing special to announce and I had no time to adjust documentation. It will remain in SNAPSHOT state. It had many minor improvements and fixes: I gave it a try in a real project. The only significant improvement is a new 'page' package.

For version 0.6, two significant improvements are planned:

  • Target Servlet 3 and support full-duplex comet. I expect problems about thread-local contexts but didn't dig into this yet.
  • Generalize forms module into stateless component framework. For that purpose I'm exploring "enemies camp" - stateful component web frameworks: Tapestry lightly and Wicket heavily.

You can monitor my progress on GitHub, although I don't plan to push 0.6 commits often.

About

is a thin, stateless, strictly typed web framework written in Scala on top of Java Servlet API. The name "lib.web" is just a shortcut for root package name: ru.dimgel.lib.web.

The major design concepts are:

Thin

First, aims not to cover all aspects of web application development. Its responsibility is web layer only. Currently contains:

  • Strictly typed wrapper over Servlet API.
  • Auxiliary components necessary for Servlet API wrapper to shine. These components can also be used on their own, with other frameworks or with plain servlets.
  • Forms module. It's currently rather simple (no AJAX support, for example), but I'm already designing its much more powerful successor.

My point is to keep the whole thing simple and focused. There are lots of tools for various aspects of web application development, and that's great. I dislike solid "all-in-one" frameworks for their lack of flexibility and have no plans about inventing another one.

Stateless

Statelessness is a requirement for good upward and downward scalability. Particularly, for effective work under strong RAM limitations (e.g. VPS).

In , state management is isolated into separate extensible hierarchy of strategies. This allows application writers to use and mix large range of solutions, from 100% stateless to 100% stateful.

Strictly typed

heavily uses strict typization and abilities Scala type system (particularly, its very powerful generics). This allows to minimize mistypings and to encode many API restrictions into type system. I believe you'll find it easy to do right with just because it would be very hard to do wrong. ;)

Pluggable

Although was initially designed as a wrapper over Servlet API, most of its auxiliary components (e.g. parameter validators or header parsers) can be used independently, with plain servlets or with any other framework.

See also: subpackages and internal dependencies