9P Integration For Java Applications...

Copyright © 2009, Bernd Fix
Released under LGPL v3


The J9P development framework is designed to ease the integration of legacy or non-9P services into 9P networks. It is a pure Java implementation and will run on various hard- and software platforms.

Plan9 (and Inferno) introduced a new paradigm for services in networked environments: In a 9P network every service is mapped to file operations in a virtual namespace that is published by the server that provides the service (either locally or remote).

The J9P framework provides a generic 9P server that publishes such 'virtual' namespaces to clients. J9P namespaces are defined in a configuration file and are assembled from directories (branches) and files (leaves).

Every J9P namespace entry is associated with a handler that controls the behavior and content of the entry. By developing customized 'entry handlers' that operate on entries in the published namespace, you can integrate legacy or other non-9P services into a 9P network by mapping the service functionality to file operations.

The J9P server supports both versions of the 9P protocol - the older protocols "Styx" from Inferno and "9P" from Plan9 as well as the newer "9P2000" introduced by the 4th edition of Plan9. It also fully implements the security measures available in the 9P protocol; it provides a secure and authenticated communication between clients and server that includes:


  • 'p9any' protocol negotiation
  • 'p9sk1' authentication
  • 'p9sk2' authentication

(More protocols will be added over time.)


  • Certificate-based mutual authentication
  • Diffie-Hellman key exchange
  • Message digest and encryption


The project is hosted on SourceForge.net. The current release is J9P-1.1 (alpha release, 2009/04/22).

You can download the last snapshot (2009/04/22), but this is at your own risk! Things may get worse between snapshots before they get better, so if you want to play safe, download the published packages at SourceForge.