Tabula Framework: REST Server and REST Editor (Alpha version 0.50.00)
Tabula is a Java Web Framework, comprised of several subprojects, such as a server and GUI tools. Right now there is an early alpha version of the server and REST editor available.
The framework is based on SOFEA, removing the UI responsibilities from the server to other applications. The server itself should deal 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. It uses a platform independent 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 server can automatically generate the service layer for an application's domain object classes, or it can be manually defined. There are video tutorials documenting these procedures.
The REST Editor is a GUI that allows editing the server's service layer on the fly, creating resources, choosing the supported HTTP methods and mime types, as well as configuring which controllers to trigger upon a request. videos are also available for the editor.
The controller layer uses another project 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.
Video tutorials for manually configuring both the controller and the AOP system are to be launched shortly. Both are going to have their own GUI tools in the future, so that creating actions, and applying aspects becomes very easy.
It currently uses Neodatis ODB as a persistence solution, but the developer is free to use other solutions, as demonstrated by using MySQL with the server in one of the benchmarks platforms.
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 in the future, developing small to medium applications.
Being in alpha, there is still a lot of rough edges, and code to improve. Some functionalities are not implemented yet, and many need to be enhanced. The whole purpose of the project right now is to try out different ideas and approaches to web development. As such, I would appreciate any comments, criticisms, ideas and advices.
Google Code : http://code.google.com/p/tabulasoftmed/
Video Tutorials : http://tabula.softmed.org/?page_id=45
Blog : http://tabula.softmed.org/
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)