Tabula is a Java Web Framework, comprised of several subprojects, such as a server and GUI tools. Right now there is a preview version of the server available for Windows and Linux.
The framework is based on SOFEA, removing the UI responsibilities from the server to other applications. The server itself deals with business logic and persistence, among other issues. In order to expose this functionality, there is a REST service layer, implemented with the RESTlet library. I've created a simple XML format specification to declare and configure the services, allowing for runtime changes. The implementation supports Java and Groovy classes as request handlers.
The main goal of the framework is to reduce app restarts during development as much as possible, while providing a simple environment for prototyping and developing small to medium applications.
The controller layer uses another project of mine, named JTAction. It's a library for handling composite actions. Each action is a state machine, where each state is built by several steps. Actions are cached but can be changed via a remote refresh request. Action steps can be implemented with Java or Groovy scripts. JTActions can also be used as request handlers for the service layer.
There is also a custom AOP system which defines an approach to create, edit and apply aspects to JTActions through a rule system based on request parameters. This allows to add for example logging and authorization aspects, and is already used to automatically refresh the REST service layer when any PUT, POST or DELETE methods are performed on the stored rest service configuration objects.
The persistence layer uses a custom persistence abstraction layer. Ideally, I would have used JPA, and though I like it, it doesn't support real time changes such as redefining groovy classes. The implementation uses Neodatis ODB, an object based database system, which is still under development, but is showing great promise.
There will be SWING-based editors for some of these components, such as configuring REST services, building JTActions from groovy scripts and applying aspects. The goal is to ease development of the whole application, hide any XML details from the developers, instead showing a configuration interface, and support runtime changes of the application.
The whole purpose of the project right now is to try out different ideas and approaches to web development. As such, currently this is a proof of concept and should not be used for deployment.
Due to time restraints, some aspects of the framework may be changed or removed. The source code also reflects the time restraints unfortunately, but as this is something I plan of using and developing along the way, it will improve.