junixsocket
junixsocket copied to clipboard
Unix Domain Sockets in Java 7 and newer (AF_UNIX), AF_TIPC, AF_VSOCK, and more
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
- Project website and 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
- Unix Domain Socket Reference
- TIPC documentation
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