Even with the popularity of the JVM and the languages that run on the JVM, we found that there was a significant hole where mesh networking libraries should be. Sure, languages like Java support TCP/IP and the like, and there are some libraries out there that support peer-to-peer connections, but we had quite a difficult time finding a library that could dynamically connect to and disconnect from networks when machinery is roaming, that could perform in a resilient manner on production systems, and that didn't require a lot of boilerplate code to spin up or spin down. Thus, we designed and developed BoneMesh for use in many of our projects that required quick and reliable communication with other applications at higher levels of the OSI model.
Versions of BoneMesh before 2.0.0 were designed to be act as point-to-point OSI Level 7 virtual network. In version 2.0.0, dynamic message routing was implemented, and BoneMesh finally lived up to its name--that is, BoneMesh can transitively send messages to other nodes in the network, even if two nodes aren't directly connected to each other.
BoneMesh doesn't rely on a custom packet steam specification. Instead, BoneMesh works by sending and receiving fully-formed JSON objects, and user-defined data is simply nested within the payload. By using a well-known standard, other applications can easily make use of BoneMesh by using standard TCP/IP and JSON libraries, even if there isn't a BoneMesh library available for the application's language.
BoneMesh is available to the public under Version 2.0 of the Apache License. You're invited to build it yourself from our source code repository or to straight-up pull the dependency from Maven Central.
Reach out to us and we'll make it our first priority to get back to you.