YEdit IconDocument collaboration software > Design > Java Servlets

The YEdit engine was written in Java utilising the server side technology of Servlets [Servlets] (Java Servlets are Java applications that run on a web server.  They are similar to other CGI web server applications).  There are many languages that could have been chosen for implementing the engine on the server side, but Java Servlets had the best match between the requirements of the system (which are that the system be relatively simple to extend, can be extended on the fly, efficient for multiple uses of the system at once, and is portable to different operating systems), the programming language, and my knowledge of different programming languages at the time.


Some of the main reasons for choosing Java for the engine were because the programming language:

*        is simple (compared with languages such as C++), as it omits some of the less understood and confusing features.

*        is object oriented (an object is defined as "an entity that has state; is characterised by the actions that it suffers and that it requires of other objects; is an instance of some class; is denoted by a name; has restricted visibility of and by other objects; may be viewed either by its specification or by its implementation" [Booch 1986]).

*        is dynamic, which allows new classes to be created and loaded at run time.

*        has networking built in, so connections over the network (Web and otherwise), are much simpler to use than some other languages, no extra code is needed

*        is robust.  It is much more likely that if there is an error, it will show itself.  Add to this garbage collection and memory management, which improve the robustness of the applications and means that errors are less likely to occur in those areas.

*        is portable and architecture neutral, which means that once the code is written, it will work on any operating system or machine that supports the Java Virtual Machine (which is potentially most machines, from watches, fridges, phones, etc, as well as conventional computers, whatever operating system they use)

*        is multi-threaded, so that more than one request can be run at the same time.  This allows much better performance than a single thread, especially when each thread may not be at full working capacity the whole time (for example, when waiting for a file to load or save).  This means that more people can use the server at a time

*        with respect to servlets, has persistence, that is, once the overhead of loading the servlet is completed, it does not need to be repeated unless one of the classes is auto-reloaded because the class file has been updated

Previous: 4.11 Server interface
Next: 4.13 Current progress