Helma Logo
main list history

New features in Helma 1.7

This page documents new features in Helma 1.7. As Helma 1.7 hasn't been released yet, this page is incomplete and work-in-progress.

Case sensitive HopObject property names

Property names in HopObjects are now case sensitive. This means that obj.foo, obj.Foo and obj.FOO no longer point to the same property. This feature should help to enforce good programming habits and speed up property access.

Programmatically generated collections

Helma 1.7 defines a new static method on HopObject constructors that allows to generate HopObject collections via JavaScript. The method is called HopObject.getCollection() and takes a single JavaScript object as argument. It returns a HopObject that is equivalent to the one you would get by defining it as a collection in a type.properties file.

Programmatically defined HopObject mappings

There is a new and experimental definePrototype function that allows to define prototype mappings via JavaScript. In its current implementation, there is a global function called definePrototype() that takes two arguments: The prototype name, and a JavaScript object describing the type mapping.

Apache Commons Daemon support

Helma 1.7 introduces Apache Commons Daemon support, making it possible to run the embedded Jetty server on port 80 for ordinary users on Unix and running Helma as service on Unix and Windows systems. There also is a Debian/Ubuntu package that indorses Commons Daemon jsvc utility to install Helma as service.

Lazy collection loading

Query parameter argument to HopObject.href()

HopObject.href() now takes a JavaScript object as optional second argument after the action name. The argument's properties will be encoded to a query string and added to the returned URL. The object may also contain nested objects, which will be encoded using the outer[inner] format. For example, the following call:

root.href('', {foo: 'bar', nested: {x: 1}});

returns /?foo=bar&nested[x]=1, which is parsed back to the original object structure when received by Helma.


Helma 1.7 features a profiler for measuring function runtime and invocation frequency. Profiling data is written to the event log and the response's debug area. To enable the profiler set the the rhino.profile app property to true. More information can be found on the Profiler page.

Links to this page: Helma 1.7.0 Changelog, Helma 1.7.0 Released