SourceForge.net Logoxxm

Why

People always ask me 'why?'. So here is a little explanation how I came to develop xxm.

Before I learned ASP, I had done PHP and ColdFusion, and a bit of client-side JavaScript. Those did what they needed to do and the platforms I was working on supported them.

It was only when I needed to program for hosting that didn't support anything else than ASP that I made some time to get a hang of ASP.

Soon I learned that ASP is based on the script manager much like Internet Explorer and Windows Scripting Host uses for running script in any language of choice. All I needed to do was learn about Request and Response objects.

So I preferred ASP/JScript (over ASP/VBScript), though it generally is harder to read and get the syntax right (in plain Notepad!). Back then I also wondered what it would be like to have something similar in Delphi. Pascal is a nice langauge to code in, but embedding it in HTML would take some effort.

Ever since then I dreamed about making xxm, but I only got around to doing it a few years later (2007).

The advantages are numerous:

compile over parsing
HTML and embedded code are re-parsed into a Delphi project, which is compiled and run. This beats parsing the same code over and over again, even with cached parse-data. Light-weight libraries can get loaded by the web-server and even shared by instances on the same server. Also, Delphi's compiler is already known to be one of the fastest around.
speed
Not only will a compiled module perform better than scripting, the Delphi compiler is really fast, and only compiles changed source-files, which makes it as painless to code for xxm as any parsed platform. Also, xxm's internals are all geared towards getting data in and out as fast and as direct as possible. Other Delphi-Web-tools have the nasty habit of reading all of the request data first, and building all of the response data before sending it. xxm provides the PostData stream, with its position at zero, ready for you to read from, even with the client still sending data. Also all data that you send is sent to the client as soon as possible.
portability
In a develop-release-environment, only the compiled module needs to get published to the live server(s) for the web-application to run. This adds to security and is less data. Also no resources on the live servers are wasted on processing source-files (again).
extensibility
Since the embedded code is re-worked for the Delphi compiler to build, any code that would work in Delphi works. Which enables easy access to existing projects or platforms and re-use of code.
more percs
xxm churns out a Delphi project. Open it, and use the local handler to debug it!

And, important to me personally, I know Object Pascal best. Yes, I could look into existing solutions like ASP.Net, Python or Ruby, but to obtain an equally high level of knowledge of these languages new to me, would take far longer than to develop xxm.