NanoHTTPD

Last updated
NanoHttpd
Original author(s) elonen, ritchieGithub, LordFokas, psh
Initial releaseSeptember 15, 2003;17 years ago (2003-09-15)
Stable release
2.3.1 / August 12, 2016;4 years ago (2016-08-12)
Preview release
3.0.0 / December 13, 2016;4 years ago (2016-12-13)
Repository OOjs UI icon edit-ltr-progressive.svg
Written in Java
Operating system Cross-platform
Available inEnglish
Type Web server
License Modified BSD
Website nanohttpd.org   OOjs UI icon edit-ltr-progressive.svg

NanoHttpd is an open-source, small-footprint web server that is suitable for embedding in applications, written in the Java programming language. The source code consists of a single .java file. It can be used as a library component in developing other software (such as measurement, [1] science, [2] and database [3] applications) or as a standalone ad-hoc style HTTP daemon for serving files.

Contents

NanoHttpd is available in two "flavors" - one utilizing up-to-date Java features and one strictly conforming to Java 1.1. Due to independence from Java features beyond JDK 1.1, NanoHttpd is suited for embedded application development. NanoHttpd has been used to build, for example, Android software. [4]

The original version, released in 2003, only included simple HTTP 1.0 features, but the software has since been extended to support some more advanced techniques such as HTTP 'keep-alive' connections, full REST style HTTP Methods, HTML5 video streaming or HTTP uploading through multipart extensions. [5] Current version includes WebSocket and experimental HTTPS support.

See also

Related Research Articles

Apache HTTP Server Open-source web server software

The Apache HTTP Server, colloquially called Apache, is a free and open-source cross-platform web server software, released under the terms of Apache License 2.0. Apache is developed and maintained by an open community of developers under the auspices of the Apache Software Foundation.

Java (programming language) Object-oriented programming language

Java is a High Level, class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible. It is a general-purpose programming language intended to let application developers write once, run anywhere (WORA), meaning that compiled Java code can run on all platforms that support Java without the need for recompilation. Java applications are typically compiled to bytecode that can run on any Java virtual machine (JVM) regardless of the underlying computer architecture. The syntax of Java is similar to C and C++, but has fewer low-level facilities than either of them. The Java runtime provides dynamic capabilities that are typically not available in traditional compiled languages. As of 2019, Java was one of the most popular programming languages in use according to GitHub, particularly for client-server web applications, with a reported 9 million developers.

Konqueror Web browser

Konqueror is a free and open-source web browser and file manager that provides web access and file-viewer functionality for file systems. It forms a core part of the KDE Software Compilation. Developed by volunteers, Konqueror can run on most Unix-like operating systems. The KDE community licenses and distributes Konqueror under the GNU General Public License version 2.

Web server

A web server is computer software and underlying hardware that accepts requests via HTTP, the network protocol created to distribute web pages, or its secure variant HTTPS. A user agent, commonly a web browser or web crawler, initiates communication by making a request for a specific resource using HTTP, and the server responds with the content of that resource or an error message. The server can also accept and store resources sent from the user agent if configured to do so.

Apache Tomcat Java-based HTTP web server environment

Apache Tomcat is a free and open-source implementation of the Java Servlet, JavaServer Pages, Java Expression Language and WebSocket technologies. Tomcat provides a "pure Java" HTTP web server environment in which Java code can run.

Adobe ColdFusion is a commercial rapid web-application development computing platform created by J. J. Allaire in 1995. ColdFusion was originally designed to make it easier to connect simple HTML pages to a database. By version 2 (1996), it became a full platform that included an IDE in addition to a full scripting language.

thttpd is an open source software web server from ACME Laboratories, designed for simplicity, a small execution footprint and speed.

WebSphere Application Server (WAS) is a software product that performs the role of a web application server. More specifically, it is a software framework and middleware that hosts Java-based web applications. It is the flagship product within IBM's WebSphere software suite. It was initially created by Donald F. Ferguson, who later became CTO of Software for Dell. The first version was launched in 1998. This project was an offshoot from IBM HTTP Server team starting with Domino Go.

Web server software allows computers to act as web servers. The first web servers supported only static files, such as HTML, but now they commonly allow embedding of server side applications.

GlassFish

GlassFish is an open-source Jakarta EE platform application server project started by Sun Microsystems, then sponsored by Oracle Corporation, and now living at the Eclipse Foundation and supported by Payara, Oracle and Red Hat. The supported version under Oracle was called Oracle GlassFish Server. GlassFish is free software and was initially dual-licensed under two free software licences: the Common Development and Distribution License (CDDL) and the GNU General Public License (GPL) with the Classpath exception. After having been transferred to Eclipse, GlassFish remained dual-licensed, but the CDDL license was replaced by the Eclipse Public License (EPL).

Dojo Toolkit

Dojo Toolkit is an open-source modular JavaScript library designed to ease the rapid development of cross-platform, JavaScript/Ajax-based applications and web sites. It was started by Alex Russell, Dylan Schiemann, David Schontzler, and others in 2004 and is dual-licensed under the modified BSD license or the Academic Free License.

Eclipse Jetty is a Java web server and Java Servlet container. While web servers are usually associated with serving documents to people, Jetty is now often used for machine to machine communications, usually within larger software frameworks. Jetty is developed as a free and open source project as part of the Eclipse Foundation. The web server is used in products such as Apache ActiveMQ, Alfresco, Scalatra, Apache Geronimo, Apache Maven, Apache Spark, Google App Engine, Eclipse, FUSE, iDempiere, Twitter's Streaming API and Zimbra. Jetty is also the server in open source projects such as Lift, Eucalyptus, OpenNMS, Red5, Hadoop and I2P. Jetty supports the latest Java Servlet API as well as protocols HTTP/2 and WebSocket.

Application Response Measurement (ARM) is an open standard published by the Open Group for monitoring and diagnosing performance bottlenecks within complex enterprise applications that use loosely-coupled designs or service-oriented architectures.

A web desktop or webtop is a desktop environment embedded in a web browser or similar client application. A webtop integrates web applications, web services, client–server applications, application servers, and applications on the local client into a desktop environment using the desktop metaphor. Web desktops provide an environment similar to that of Windows, Mac, or a graphical user interface on Unix and Linux systems. It is a virtual desktop running in a web browser. In a webtop the applications, data, files, configuration, settings, and access privileges reside remotely over the network. Much of the computing takes place remotely. The browser is primarily used for display and input purposes.

Nginx, stylized as NGINX, nginx or NginX, is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache. The software was created by Igor Sysoev and publicly released in 2004. Nginx is free and open-source software, released under the terms of the 2-clause BSD license. A large fraction of web servers use NGINX, often as a load balancer.

Jive is a commercial Java EE-based Enterprise 2.0 collaboration and knowledge management tool produced by Jive Software. It was first released as "Clearspace" in 2006, then renamed SBS in March 2009, then renamed "Jive Engage" in 2011, and renamed simply to "Jive" in 2012.

An embedded database system is a database management system (DBMS) which is tightly integrated with an application software that requires access to stored data, such that the database system is "hidden" from the application's end-user and requires little or no ongoing maintenance. It is actually a broad technology category that includes

InetSoft Technology Corporation is a privately owned multinational computer software company that develops free and commercial web-based business intelligence applications. The company was founded in 1996, and currently has over 120 employees between its corporate headquarters in Piscataway, New Jersey, and development offices in Beijing and Xi'an, China.

CERN httpd

CERN httpd is an early, now discontinued, web server (HTTP) daemon originally developed at CERN from 1990 onwards by Tim Berners-Lee, Ari Luotonen and Henrik Frystyk Nielsen. Implemented in C, it was the first web server software.

Brackets (text editor) Editor for Web development

Brackets is a discontinued source code editor with a primary focus on web development. Created by Adobe Systems, it is free and open-source software licensed under the MIT License, and is currently maintained on GitHub by Adobe and other open-source developers. It is written in JavaScript, HTML and CSS. Brackets is cross-platform, available for macOS, Windows, and most Linux distributions. The main purpose of Brackets is its live HTML, CSS and JavaScript editing functionality.

References

  1. Cmuk, Mutapcic, Borsic. "Mobile Measurement Support for Remote Laboratories and E-learning Systems", 16th IMEKO TC4 Symposium
  2. Stehle, Edward et al. "On the use of Computational Geometry to Detect Software Faults at Runtime", 7th IEEE International Conference on Autonomic Computing
  3. VoltDB version repository, retrieved 2011-11-13
  4. Linder, Douglas. Local HTTPD project, retrieved 2011-11-13
  5. Togias, Konstantinos. "KtoHTTPD: Adding multipart/form-data support to NanoHTTPD embedable java web server", retrieved 2011-11-13