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
- View the core Java classes
- Register a user account and develop dynamic pages
- Launch WikiWebServer on your own computer
What makes WikiWebServer special?
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.
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.
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.
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.
Dynamic Fractal Gallery
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.
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
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.