junixsocket
junixsocket is a Java/JNI library that allows the use of Unix Domain Sockets (AF_UNIX sockets) from Java.
Why it’s cool
- junixsocket is the most complete implementation of Unix Domain Sockets for the Java ecosystem.
- Comes with pre-built native libraries for several operating systems and platforms, including macOS, Linux, Windows, Solaris, FreeBSD, NetBSD, OpenBSD, DragonFlyBSD.
- Supports all Java versions since Java 7*.
- 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 socket (using NanoHTTPD).
- Supports JPMS/Jigsaw modules. 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 16; Java 7 support is limited to core functionality, no RMI).
Quick links
- Project website
- Github project
- Changelog
- Getting started
- Demo code (Java source)
- Sockets (
org.newsclub.net.unix.demo
) - RMI over Unix Sockets (
org.newsclub.net.unix.demo.rmi
andorg.newsclub.net.unix.demo.rmi.services
) - MySQL over Unix Sockets (
org.newsclub.net.mysql.demo
)
- Sockets (
-
API Javadocs
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 selftest program, which is located in the “junixsocket-dist” distribution package:
java -jar junixsocket-selftest-VERSION-jar-with-dependencies.jar
(with VERSION being the corresponding junixsocket version).