소개
SNF4J(Simple Network Framework for Java)는 네트워크 애플리케이션을 빠르고 쉽게 개발하기 위한 비동기 이벤트 중심 네트워크 애플리케이션 프레임워크입니다.
SNF4J는 고성능 및 확장 가능한 네트워크 애플리케이션 개발을 돕는 간단하고 가볍고 독립적인 네트워크 애플리케이션 프레임워크 역할을 합니다. TCP/IP, UDP/IP 및 SCTP/IP와 같은 다양한 전송을 처리하기 위해 Java NIO를 통해 비동기 API를 제공합니다.
프레임워크는 사용이 간단하고 이해하기 쉽도록 설계되었습니다. 귀를 기울이고 싶어하는 애플리케이션 개발자는 소스 코드의 톤에 압도당하지 않을 것입니다. 간단하지만 효과적인 방법으로 두 개 이상의 통신 네트워크 애플리케이션 간에 데이터를 전송하는 핵심 네트워킹 기능을 제공하는 데 중점을 두고 있습니다. 전송된 데이터의 개인정보 보호 및 무결성을 제공하기 위해 SSL/TLS/DTLS 프로토콜을 지원합니다.
설계
- 전송 계층 유형에 대한 통합 API: TCP, UDP 및 SCTP
- 비동기 네트워크 애플리케이션 개발을 위한 이벤트 중심 API
- 전송 계층 유형에 대한 사용자 정의 가능한 프로토콜 엔진: TCP 및 UDP
- UDP 서버 애플리케이션 개발을 위한 유틸리티
- 사용자 정의 가능한 인코더-디코더 파이프라인을 위한 간단한 API
- 단일 스레드 방식으로 다중 스레드 애플리케이션 프로그래밍의 용이성을 제공합니다.
- 동일한 소켓 채널을 공유하는 세션의 파이프라인 구축
성능 및 확장성
- 불필요한 메모리 복사를 최소화하거나 아예 없애는 기능 지원
- 다중 세션 애플리케이션에서 낮은 메모리 활용도 지원
- 낮은 대기 시간
- zlib 및 gzip 압축
- 사용자 정의 가능한 선택기 루프 풀링
- 사용자 정의 가능한 바이트 버퍼 할당자
스레드 모델
- 모든 핸들러 이벤트(예: 읽기, 이벤트, 타이머, 예외, 사건)는 채널에 대한 I/O를 수행하는 스레드(I/O 스레드)에서 시작됩니다.
- 모든 세션의 메서드는 스레드로부터 안전하며 I/O 스레드 및 비I/O 스레드를 포함한 모든 스레드에서 호출될 수 있습니다.
- 세션 메서드 호출의 부작용으로 트리거된 모든 핸들러 이벤트는 I/O 스레드에서 시작됩니다.
- 코덱의 코드는 항상 I/O 스레드에서 처리됩니다.
- 엔진의 코드는 항상 I/O 스레드에서 처리됩니다.
지원되는 프로토콜
- HTTP 웹 프록시 연결 프로토콜
- SOCKS 프로토콜
- 웹소켓 프로토콜
- TLS 1.3 프로토콜용 툴킷(파서/포매터, 핸드셰이크 엔진, 레코드 계층 유틸리티 및 전체 TLS 엔진)
보안
- SSL/TLS/DTLS 프로토콜에 대한 완벽한 지원
- 보안 웹 프록시 연결
완성
- 추가 종속성은 없으며 JDK 8 또는 JDK 9(DTLS용)이면 충분합니다.
- 완전히 사용자 정의 가능한 로깅(SLF4J, Log4j 2가 이미 여기에 있음)
- 사용자 정의 가능한 스레드 팩토리
- 사용자 정의 가능한 세션 타이머
- DTLS 핸드셰이크 중 사용자 정의 가능한 패킷 재전송 모델
컴파일 중
Apache Maven 3.8 이상, Java 8 이상이 필요합니다.
모래밭