junixsocket icon indicating copy to clipboard operation
junixsocket copied to clipboard

Unix Domain Sockets in Java (AF_UNIX)

junixsocket

junixsocket is a Java/JNI library that allows the use of Unix Domain Sockets (AF_UNIX sockets), and other address/protocol families (such as AF_TIPC), from Java.

Unix sockets API, in Java, AF.

  • junixsocket is the most complete implementation of AF_UNIX sockets for the Java ecosystem.
  • Supports other socket types, such as TIPC (on Linux), as well!
  • Comes with pre-built native libraries for most operating systems and platforms, including macOS, Linux, Windows, Solaris, FreeBSD, NetBSD, OpenBSD, DragonFlyBSD, AIX, IBM i.
  • Additionally, you can build and run junixsocket natively on IBM z/OS (experimental).
  • Supports all Java versions since Java 8.
  • Supports both the Java Socket API and NIO (java.net.Socket, java.net.SocketChannel, etc.)
  • Supports streams and datagrams.
  • Supports Remote Method Invocation (RMI) over AF_UNIX.
  • Supports JDBC database connectors (connect to a local database server via Unix sockets).
    • Generic AFUNIXSocketFactory for databases like PostgreSQL
    • Custom socket factory for MySQL Connector/J, as recommended by Oracle
  • Supports peer credentials.
  • Supports sending and receiving file descriptors.
  • Supports the abstract namespace on Linux.
  • Supports socketpair, and instantiating socket classes from file descriptors.
  • Supports HTTP over UNIX sockets (using NanoHTTPD, OkHttp, and jetty).
  • Supports JPMS/Jigsaw modules. The project is modularized so you can install only what you need.
  • Provides a selftest package with 100+ tests to ensure compatibility with any target platform.
  • Apache 2.0 licensed.

* (Tested up to Java 19; support for Java 7 was dropped in version 2.5.0).

Quick links

Licensing

junixsocket is released under the Apache 2.0 License.

Commercial support is available through Kohlschütter Search Intelligence.

Self-test

To verify that the software works as expected on your platform, you can run the junixsocket-selftest program, which is located in the "junixsocket-dist" distribution package, and also released on GitHub.

java -jar junixsocket-selftest-VERSION-jar-with-dependencies.jar 

(with VERSION being the corresponding junixsocket version).

Maven dependency

To include the core junixsocket functionality in your project, add the following Maven dependency

NOTE Since version 2.4.0, junixsocket-core is POM-only (that's why you need to specify <type>pom</type>)

<dependency>
  <groupId>com.kohlschutter.junixsocket</groupId>
  <artifactId>junixsocket-core</artifactId>
  <version>2.5.1</version>
  <type>pom</type>
</dependency>

For more, optional packages (RMI, MySQL, Jetty, TIPC, server, etc.) see here