NanoHTTPD is a freely distributed, open source, simple, small and embeddable HTTP (Hypertext Transfer Protocol) server implemented in Java. It is a highly configurable web server and can be injected into other Java applications.
Features at a glance
Key features include support for the HTTP 1.1 protocol, support for cookies, PUT support, file upload support, ETags support, persistent connections, support for parameter parsing of POST and GET methods, as well as support for DELETE and HEAD requests.
Basic support for cookies is also implemented, along with Rudimentary PUT support, experimental support for SSL (Secure Sockets Layer), supports for multi-value and single parameters, file upload support, and support for DELETE and HEAD requests.
Another interesting feature is the built-in support for persistent connections, which enables the application to search multiple requests over one socket connection. The software uses no fixed configuration files, authorization or logging, as you can implemented them yourself when needed.
Among other attractive features, we can mention supports for uploading file uploads, the ability to automatically convert header names to lowercase, temporary file support, threading model support, as well as very low memory overhead.
Runs on Linux, Android and Mac OS X
NanoHTTPD can be used as a standalone application to serve files, as a subclass serve() that can be embedded into your own application, or as a call serveFile() from serve(). It runs on Linux, UNIX, Android and Mac OS X operating systems.
Distributed in two different flavors
The program is distributed in two different flavors, one for that supports the current standards and another one that is compatible only with the Java 1.1 technology. NanoHTTPD has been successfully tested on computers supporting either of the 32 or 64-bit hardware platforms.