Status

Jucas is currently in alpha status.

Main Features

Jucas is object- (component-) orientated: You may think of Jucas as a form of Struts where the ActionForm-Beans (DataObjects) also contain the controller code. This way the first principle of object-orientated programming ? keeping data and logic together ? can be fulfilled. Where in Struts there are globally named Actions and global shared ActionForm-Beans (DataObjects) in Jucas there are named Components which can be retrieved from a Component-Manager (like in EJB but much simpler) and which encapsulate their own state even in the request and session scopes.

No control code in JSP or other templates for the View (MVC): Like in Struts when an Http-Request comes in the parameters of the request are set directly on the defined Components. The Components than do the request-processing and adapt the model independent of the view.

Easy to implement Components: Components are JavaBeans which implement a simple Interface or extend a simple class. No extra classes, xml-files or interfaces ? all in one java class. For designers with no Java knowledge full featured components can also be defined in XML with JavaScript.

Both centralized and decentralized event based control: Jucas supports both forms of control. Like in Struts all request processing goes through a central point (the JucasFilter). Here the centralized control can be hooked in. The central controller gets the component from the Component-Manager and like in Struts sets the request-parameters on the component. Because the components hold their own state and control logic - contrary to Struts - they can also have JavaBeans style event-listeners registered and fire events. This way OO-Techniques especially composition and delegation are possible and recommended.

Model-View-Controller (MVC) pattern and agnostic about the view technology: Like Struts the core of Jucas only cares about the Controller and the Model part which can than be rendered by any view technology. However Components may but they don't have to paint themselves.

Pull MVC - Controller is Model II and View is Model I: As stated control and model are separated in Jucas from the view like in Model II. However because the view-designer can plug components together like legos the Model I pattern (where a View uses different JavaBeans) is more flexible for the view-designer than Model II. Jucas supports Model I for the View. This is accomplished by using a Component-Manager through which one, more or even all components in the Web-app can be retrieved and than used (ie model access, form input etc) by each view as needed. The framework takes care that the request handling is split up between the used components, without interfering with the view. This way the component is not a frame(-work) (I call you) but a service to the views (use me). While the advantages of the separation of Model, View and Controller are maintained, the designer gets the lead back - like it should be in the UI-Layer.

Other Features

  • Jucas is easy to use, because it is a minimalistic framework, which does not provide everything you need but rather is open to support a variety of other libraries.

  • Jucas is easy to understand. There is not a lot of code or APIs and the idea of having a Component-Manager with Components on which the request-parameters are set is simple.

  • Jucas is modular and easy to extend. From the form of component creation and definition over the services provided to components up to the whole request- and exception handling can be defined by using simple interfaces.

  • Jucas works easily together with other Web-Frameworks

  • Jucas itself holds no state in the Session. The framework can work without ever using Session. However if a component or the user wants a component can be held in Session.

  • agnostic not only about any templating machine but also on the page-flow definition.

  • Components may store parts of their state encapsulated in Session or in Request scopes.

  • Like most other GUI frameworks Jucas enforces single threading for one user (in one user session). No pain with multi-threading. Components don't have to be thread save even if held in Session.

  • Jucas provides various services for components.

  • New Services can be easily defined and pluged-in

  • Jucas components are ?real? objects which can be instantiated multiple times having their own state

  • Components pooling is simple to implement.

  • While Jucas is agnostic for the view technology additional support is given for FreeMarker and JSP.

  • Once Jucas is setup new views or components can be added or changed without any configuration or change to the configuration.

  • Central parameters of Jucas are configured in one central XML-File.

  • Jucas is standard-compliant using XML, JavaBeans and JavaScript

  • Jucas is Free under an apache style license.