Copyright (c) 2005 by Michael Platzer. This material is licensed under the Creative Commons Attribution-ShareAlike 2.0 Austria License. Terms and conditions for distribution can be found at Creative Commons: http://creativecommons.org/licenses/by-sa/2.0/at/deed.en.
Table of Contents
Helma is a scriptable Java Web Application Server.
Basically the web application market can be divided into two segments. On the one hand, there are the server side (interpreted) scripting languages (like Perl and PHP), which are being supported and used by thousands of independent developers ever since the early days of the dynamic web. On the other hand, there are the web application servers (like JBoss, Tomcat, IBM Websphere), generally developed, supported and sold by large companies, requiring the in-depth knowledge of strictly-typed, compiled languages as Java or C#. With Helma being a "scriptable Application Server", it tries to bring together the benefits of both worlds.
Helma is a mature piece of software, which has been in production use for large, high-traffic news & community sites since years.
Helma is mainly being developed and maintained by Hannes Wallnoefer, a developer that is already well-known in the open-source community for providing the Java implementation of XML-RPC, which by now became part of the Apache foundation.
So, what are the reasons to choose Helma in favour of another application platform?
Any available Java-library can be made accessible for the scripting environment.
Helma forces an object-orientated application design.
Helma provides a transparent database-mapping, freeing the developer from hassling around, and polluting the code with SQL. As a side-effect, the relational database becomes substitutable at any point by any other JDBC-accessible database. Helma can even work without a relational database, by falling back to a file-based XML-database.
Helma is Java. Scripted applications are compiled to Java, and server-side Java has proven to be quite fast and reliable, at least with the more recent Runtime Environments.
Helma provides a smart caching mechanism, which minimizes the number of submitted select-queries to the database, by keeping recently-used objects in memory. This simple mechanism allows Helma to serve high-traffic sites, without developers even start thinking about performance tuning.
Compared to other web application servers Helma is a light-weight (~1,5MB download), has a rather small memory footprint, and is fast on start-up.
Helma is embeddable. It can be used to write a web frontend to existing Java applications.
If one Helma-server proves to be not sufficient for the request load, more servers can be easily clustered together. Again without requiring developers to rewrite their applications.
Scripted code is compiled to Java instantaneously, i.e. as soon as the modified source file is saved to disk. No need for developers to "compile and run" the whole application, before they can see their modifications in action.
Helma provides a smart templating mechanism, which forces a strict separation of content, logic and presentation.
Helma comes along with numerous extensions, which are usually required for developing web applications. These allow developers to easily
and write text-files
and manipulate images
a XML-RPC-client and -server
to a FTP-server
Helma provides transparent session management, i.e. developers are freed from the task to assign requests to sessions.
Developers can easily generate clear, intuitive, easy-to-remember, search-engine-friendly URLs.
A scheduling mechanism is integrated into Helma, which allows the automated execution of scripts at any given time.
Helma is open-source, and comes with a liberal BSD style license. Its source-code can be studied, modified (and also distributed) by anybody who wishes to. No license costs are being charged, neither for private, nor for commercial use. All the advantages of open-source software apply to Helma. See the License itself: http://helma.org/download/license/.
The technology-affine reader might wonder by now, what Helma really is. The Helma distribution consists of multiple Java libraries, most of them provided by third-party, all having their own specific task.
These libraries are:
The core of Helma, which brings together all of the following libraries and is in charge of Application Management, Code loading, Request Path Resolution, Session Management, DB mapping, Caching, Templating, Scheduling, and more. Take a look at the JavaDocs (or the source code) to get an in-depth view of Helma.
The Jetty Server, which is also integrated with JBoss for example, provides a powerful and stable web server, as well as the AJP13-connection to integrate Helma with (nearly) any other web server (via the mod_jk module provided by the Apache foundation). See http://jetty.mortbay.org.
An image-manipulation library provided by Sun.
Providing a XML- and HTML-DOM-Parser.
Sun's official JavaMail library.
Providing (among other things) a Java FTP-client.
Providing the Java Servlet Api.
Implementation of a XML-RPC-client and server.
File Upload Library. See http://jakarta.apache.org/commons/fileupload/.