A high-performance I/O library for Java servers, exposing OS capabilities and JDK internals for maximum throughput.
one-nio is a high-performance I/O library for building Java servers that exposes operating system capabilities and selected JDK internal APIs. It provides optimized native sockets, off-heap memory management, fast serialization, and high-performance RPC to help high-load applications achieve maximum throughput.
Java developers building high-throughput server applications, particularly those working on high-load services that require low-latency I/O, efficient memory management, and optimized network communication.
Developers choose one-nio for its direct access to OS-level primitives, significantly faster serialization and RPC compared to standard Java alternatives, and comprehensive tooling for building performant server applications without conventional Java abstraction overhead.
Unconventional I/O library for Java
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides native wrappers for Linux-specific primitives like epoll_wait and sendfile, enabling direct OS-level socket communication for high-throughput servers, as highlighted in the optimized native sockets feature.
Offers APIs such as DirectMemory and MappedFile to manage gigabytes of RAM outside the Java heap, reducing GC pauses for large datasets, which is critical for high-load applications.
Serialization is significantly faster and more compact than standard Java serialization, with built-in schema evolution and dynamic serializer generation, supporting backward/forward compatibility via features like @Renamed.
RPC client/server technology is an order of magnitude faster than Java RMI, leveraging one-nio's optimized I/O and serialization for low-latency communication in distributed systems.
Native socket optimizations rely on Linux-specific primitives, limiting usability on other operating systems and making it unsuitable for cross-platform projects.
Relies on selected JDK internal APIs, which can break with updates; for example, serializer generation requires mode switching (magic_accessor vs method_handles) for JDK 24+ compatibility, adding maintenance overhead.
Has known caveats with certain JDK types like java.sql.Date and warns against anonymous classes in serialized state, which can lead to subtle bugs if not carefully managed.