One of our aims regarding the prototype's implementation was to keep it as flexible as possible. Flexibility, in this case, does not only refer to the usage of the system - we also wanted the implementation following a modular approach, so that essential functional parts may be changed (either by the user himself or by one of the developers) or replaced (if e.g. a newer or better solution for a certain task exists) over time, without the need of adapting other parts of the system to these modifications. So, our first task was to split our problem (mobile web access) into pieces and to design an architecture that combines and interact between these pieces.
Our prototype implementation basically consists of three main parts:
To ensure a high degree of usage-flexibility, request-patterns and transformation-rules are stored in external files (and can be modified at server's runtime). The essential functionality of the server's ''filter''-(or transformation-, respectively) process is realized in these configuration-files. They are loaded at startup and can be changed and reloaded (separately) at runtime. Our first candidate regarding the file-format was naturally XML - it has shown to be the right language-standard for describing data and there are many free parsers and tools available that make the handling of XML-based data-structures quite convenient.
For the implementation of the server, we decided to use the Java () programming language - in the last years it has clearly proven to be a stable solution for creating object-oriented (and often distributed) network- and Internet-applications. Additionally - if we keep the format of our configuration-files in mind -, there are a large variety of HTML- and XML-parsers, XSL- or XQuery-engines, HTML-to-XHTML-converters and data-binding-utilities 2.1 available in Java.
In the next section, we describe some other tools and technologies we made use of to develop a modular and extendable prototype.