Tuesday, June 28, 2011

Version 0.8.1 released

0.8.1


Calling javascript-functions


Previously remote javascript had to be done using RemoteCallBuilder that was injected to component. This was a bit cumbersome approach.

The RemoteCallBuilder is now removed and replaced with new annotation @ScriptElement that can be used for properties or method return values. To incorporate that three classes were introduced, Script, FunctionCall and ComponentFunctionCall.

Speed enchancements


During buildphase a complex metamodel is created from each component. This was refactored to more efficient model, which reduced the number of checks and other Map-accesses to minimum.

Resource cleaning enhancements


Previously, in development mode, during each page access all resources were reloaded to reflect possible changes which was wasting cpu-power. Now resources are reloaded only when something really changes and speeds up the system.

XSL-post processing


Because templates are XSL-based they can be modified programmatically. For that a XSL-postprocessing feature was added which enables the XSL be modified and also meta-data can be read.

0.8.0


Package and class refactoring


This version has two main functions. First it was a big refactoring version where packages and class names were refactored to be more conicse. Also System configuration model was modified to compeletely different.

Resource loading from components


This version also added a possibility to return resources from components. They can be used to return for instance JSON for javascript handling or for example images or PDF-files for other purposes.

Server push/Comet/delayed updates


In this version I finally managed to create a model which enables to use long polling as a kind of server push. From the framework point of view it is called delayed method call.

Context does not itself provide any comet-handling because it is dependent on web container. It has been tested with Jetty continuations but should be compatible with other types too.

Page flow filter


Because Context is highly stateful and each page call consumes some memory it is possible to exhaust server memory with enough calls. For this I added a page flow filter that can be used to throttle the amount of calls if necessary.

Integration with JRebel


Currently web development using JRebel is quite convinient. In development mode there is practically no need to restart server with few exceptions.

  1. New views and URL changes: When new view is added or view url is changed it is required to restart server because it is currently impossible to reload servlets in Guice Servlet.
  2. Singleton scoped entities: There does not exists a good Guice plugin in JRebel and if Guice managed entities have dependency changes they are not reloaded automatically.

For more information visit www.contextfw.net.

No comments:

Post a Comment