What is WikiWebServer?

WikiWebServer is a lightweight Java web server that provides a framework for rapidly developing advanced web applications.

By incorporating web-based code editing facilities, dynamic recompilation and automatic class reloading, WikiWebServer can be programmed to do almost anything using just an Internet browser from anywhere in the world!

WikiWebServer can handle HTTP requests quickly and efficiently making it ideal for developing interactive Ajax web pages.

WikiWebServer was created by JADS Limited and is used as a playground to develop, test and demonstrate new ideas.

To learn more

What makes WikiWebServer special?

  • Speed
    WikiWebServer compiles dynamic pages to Java binaries that can be executed rapidly. Most web servers generate dynamic pages by interpreting scripts, e.g. PHP, Perl, ASP etc, which is much slower. WikiWebServer can respond to over 2,000 requests for dynamic content every second on an entry level computer.
  • Versatility
    WikiWebServer can be modified while it is running to perform complicated tasks that would otherwise be impossible due to web server or scripting language limitations. No need for complicated configurations, write and compile logic straight into the server!
  • High level functionality
    WikiWebServer makes high level operations much easier. For example, returning a dynamic image (java.awt.image.BufferedImage) automatically compresses the image to JPEG or GIF, updates the headers (Content-Type and Content-Length) and sends the binary data to the client.
  • Low level support
    WikiWebServer makes it possible to read and write directly to a connection byte by byte - should you need to.
  • Simplicity
    Everything is kept simple. No complicated API's or libraries have been used, just plain old Java objects.
  • Tools included
    Dynamic pages can be written directly from within the browser. WikiWebServer saves and compiles the page and will alert of any syntax errors.
  • Managed persistence
    WikiWebServer makes it easy to store and retrieve data from long term storage without the overheads of database or file-based data transfers.
  • Mobile device enhancements
    Page classes extending a WikiWebServer TemplatedPage are automatically formatted for mobile devices. This includes changing page content such as images to fit small screens. WikiWebServer can even provide an audio version of TemplatedPages!
  • Error handling
    Exceptions thrown by errors on dynamic pages are handled and displayed with links directly to the source code that caused the error, making debugging very easy.
  • Self contained
    WikiWebServer does not rely on other applications or use a servlet container. WikiWebServer processes raw socket connections from clients, processes HTTP requests and returns responses.
  • Light weight
    WikiWebServer typically consumes less than 4MB RAM while idle and less than 32MB while processing 100 simultaneous requests.
  • Easy to follow
    The entire code for WikiWebServer is viewable from within a web browser which makes tracing execution easy.
  • Reliability
    WikiWebServer.org and several other web sites have been hosted on a development version of WikiWebServer which has provided a 99.998% up time for the last year. WikiWebServer is an incredibly stable platform which can self heal within 3 seconds after a software fault.
  • Disaster Recovery
    Periodic automatic synchronisation of internal data with backup WikiWebServers makes it easy to fail over to another server without loosing persistent data.
  • Handles traffic surges
    Managed internal caching of response objects makes it possible to handle thousands of requests per second and deliver over 3GB/s throughput. Velocity enforcement actively blocks bad traffic patterns and maintains stability in the event of an attack.
  • Easy to update
    Updates to dynamic pages or classes outside the core can be made without taking WikiWebServer offline. Class reloading is connection isolated meaning that active connections are not affected by class updates. Even a complete JVM restart after a core modification results in less than 3 seconds down time and does not lose session data. This makes WikiWebServer ideal for evolving server applications.

Featured Examples

Dynamic Fractal Gallery

FractalGallery Image

Fractal Gallery is a WikiWebServer page that dynamically generates fractal images.

It is built from two classes, FractalGallery and Fractal. The FractalGallery class is responsible for generating an HTML page containing the dynamic fractal image and a gallery of snapshots taken by users. The dynamic fractal image is rendered by the Fractal class, which accepts a number of parameters to alter location and zoom level. By clicking the image, the parameters are set to zoom into the clicked region. Navigate Fractal Gallery.

Mobiliser

Reformats web sites for mobile devices. Strips web pages of complicated formatting and resizes embedded images so that standard pages can be viewed on portable devices using minimal bandwidth. Surf within Mobiliser

Image Gallery

Generates thumbnails for directories containing images. Previewed images are dynamically scaled to fit the browser and links are provided to download each image in a range of resolutions. Image Gallery

Text to speech

Uses the free Java text to speech library, FreeTTS, to convert a passage of text into an audio stream. As with all WikiWebServer components, the text to speech capability can be used within other WikiWebServer classes. Text to speech

How does WikiWebServer differ from other Wiki-based sites?

Most Wiki-based sites online allow users to create page content in a predefined way using Wiki markup. WikiWebServer allows users to write Java source code which is compiled and executed by WikiWebServer to generate page content. Dynamic recompilation and class loading makes it possible to change the any part of WikiWebServer while it is still running (depending on start-up configuration).

Essentially this means that users are not restricted to creating static pages of text and images. Instead pages rich in functionality incorporating dynamic text, images and complicated Ajax features can be created.

Page hits