BonAHA is a library that can be used for easily building rich P2P applications that can operate in a regular always-on network, an ad-hoc wireless network or even in a disconnected scenario.

The BonAHA library abstracts away all the networking details (such as network transition events) and allows the developer to focus on writing applications that work with network churn while handling minimal networking events.

The overall architecture of BonAHA from the developer's perspective. The API allows the developer to treat the network as a set of objects with associated metadata. Network events such as nodes entering and leaving the network can be handled through simple event handling functions. The diagram shows how events are announced and browsed (1), how metadata is set and obtained (2), and how network communication is performed based on the above operations (3). [Icons from tpdfarchive on iconarchive.com, free for non-commercial use.]

For a simple example of how it can be used for developing ad-hoc applications, please have a look at the LocationFinder example on our wiki.

The BonAHA library is built on Apple's Bonjour, which is a multi-platform implementation of Zero Configuration Networking (ZeroConf). BonAHA is built in Java using Bonjour's Java libraries.