介绍
Simple Network Framework for Java (SNF4J) 是一个异步事件驱动的网络应用程序框架,用于快速轻松地开发网络应用程序。
SNF4J 作为一个简单、轻量级且独立的网络应用程序框架,有助于开发高性能和可扩展的网络应用程序。它通过 Java NIO 提供异步 API 来处理各种传输,例如 TCP/IP、UDP/IP 和 SCTP/IP。
该框架被设计为使用简单且易于理解。喜欢密切关注实际情况的应用程序开发人员不会被源代码的语气所淹没。它旨在提供核心网络功能,以简单但有效的方式在两个或多个通信网络应用程序之间传输数据。为了保证传输数据的隐私性和完整性,它提供了对 SSL/TLS/DTLS 协议的支持。
设计
- 传输层类型的统一 API:TCP、UDP 和 SCTP
- 用于开发异步网络应用程序的事件驱动 API
- 适用于传输层类型的可定制协议引擎:TCP 和 UDP
- 用于开发 UDP 服务器应用程序的实用程序
- 用于可定制编码器-解码器管道的简单 API
- 以单线程方式轻松编写多线程应用程序
- 构建共享同一套接字通道的会话管道
性能和可扩展性
- 支持最小化甚至零不必要的内存复制
- 支持多会话应用程序中的低内存利用率
- 更低的延迟
- zlib 和 gzip 压缩
- 可定制的选择器循环池
- 可定制的字节缓冲区分配器
线程模型
- 所有处理程序的事件(即读取、事件、计时器、异常、事件)均从为通道执行 I/O 的线程(I/O 线程)触发
- 所有会话的方法都是线程安全的,可以从任何线程调用,包括 I/O 线程和非 I/O 线程
- 作为调用会话方法的副作用而触发的任何处理程序事件都是从 I/O 线程触发的
- Codec的代码总是在I/O线程中处理
- 引擎的代码总是在I/O线程中处理
支持的协议
- HTTP Web 代理连接协议
- SOCKS 协议
- WebSocket协议
- TLS 1.3 协议工具包(解析器/格式化程序、握手引擎、记录层实用程序和完整的 TLS 引擎)
安全
- 完整支持 SSL/TLS/DTLS 协议
- 安全 Web 代理连接
一体化
- 没有额外的依赖项,JDK 8 或 JDK 9(对于 DTLS)就足够了
- 完全可定制的日志记录(SLF4J、Log4j 2 已经在这里)
- 可定制的线程工厂
- 可定制的会话计时器
- DTLS 握手期间可定制的数据包重传模型
编译
您需要 Apache maven 3.8 或更高版本,Java 8 或更高版本
链接