General File Structure of an Application

[AppDir] is the main code repository.

The [AppDir] of a Helma application can look something like this:

[AppDir]/app.properties 
[AppDir]/db.properties 
[AppDir]/Global/ 
[AppDir]/Root/ 
[AppDir]/HopObject/ 
[AppDir]/User/ 
[AppDir]/PrototypeNameABC/ 
... 
[AppDir]/PrototypeNameXYZ/ 
[AppDir]/someExtraAppCode.zip 
[AppDir]/someExtraJavaLibrary.jar

Each directory that is contained in [AppDir], with the exception of Global, is interpreted as a scriptable prototype. These prototypes are enriched with methods/functions by adding (arbitrarily named) files with the file-extension '.js', with skins/templates by adding files with file-extension '.skin', and can be mapped to a database table via a file named type.properties.

A typical prototype directory might therefore look something like this:

[AppDir]/PrototypeNameABC/type.properties 
[AppDir]/PrototypeNameABC/actions.js 
[AppDir]/PrototypeNameABC/macros.js 
[AppDir]/PrototypeNameABC/functions01.js 
[AppDir]/PrototypeNameABC/functions02.js 
[AppDir]/PrototypeNameABC/template01.skin 
[AppDir]/PrototypeNameABC/template02.skin 
[AppDir]/PrototypeNameABC/template03.skin

Additionally you might find files in existing applications ending with '.hsp', which are deprecated template-files, and files ending with '.hac', representing web-accessible methods. Since web-accessible methods are just like ordinary methods appended with '_action', it is now common practice to have them being defined in '.js' just like ordinary methods.

If [AppDir] contains files ending with '.zip', they are assumed to be additional application code. Helma treats these files, as if they were unzipped in [AppDir], whereas zipped code and templates have a lower precedence than unzipped code.

If [AppDir] contains files ending with '.jar', these are assumed to be extra Java libraries that are being loaded in the runtime environment, and are therefore available for scripting. Helma needs to be restarted if such libraries are added or updated.

All other files and subdirectories are being ignored by Helma.