Introdução
O Simple Network Framework for Java (SNF4J) é uma estrutura de aplicativo de rede assíncrona orientada a eventos para desenvolvimento rápido e fácil de aplicativos de rede.
O SNF4J serve como uma estrutura de aplicativo de rede simples, leve e independente, ajudando no desenvolvimento de aplicativos de rede escalonáveis e de alto desempenho. Ele fornece uma API assíncrona por meio do Java NIO para lidar com vários transportes como TCP/IP, UDP/IP e SCTP/IP.
A estrutura foi projetada para ser simples de usar e moderadamente fácil de entender. Os desenvolvedores de aplicativos que gostam de ficar atentos não ficarão impressionados com o tom do código-fonte. Ele é orientado para fornecer funcionalidades básicas de rede, como a transferência de dados entre dois ou mais aplicativos de rede em comunicação de uma forma simples, mas eficaz. Para fornecer privacidade e integridade dos dados transferidos, ele fornece suporte para os protocolos SSL/TLS/DTLS.
Projeto
- API unificada para tipos de camada de transporte: TCP, UDP e SCTP
- API orientada a eventos para desenvolvimento de aplicativos de rede assíncronos
- Mecanismos de protocolo personalizáveis para tipos de camada de transporte: TCP e UDP
- Utilitários para desenvolvimento de aplicativos de servidor UDP
- API simples para pipelines de codificador-decodificador personalizáveis
- Fornece facilidade de programação de aplicativos multithread em um único thread
- Construindo pipelines de sessões compartilhando o mesmo canal de soquete
Desempenho e escalabilidade
- Suporte para cópia de memória desnecessária minimizada ou até mesmo zero
- Suporte para baixa utilização de memória em aplicativos multisessão
- Menor latência
- Compressão zlib e gzip
- Pool de loops seletores personalizáveis
- Alocadores de buffer de bytes personalizáveis
Modelo de rosca
- Todos os eventos do manipulador (ou seja, leitura, evento, temporizador, exceção, incidente) são disparados a partir do thread que executa E/S para o canal (thread de E/S)
- Todos os métodos da sessão são thread-safe e podem ser chamados de qualquer thread, incluindo o thread de E/S e threads não-E/S
- Qualquer evento do manipulador acionado como efeito colateral da chamada do método de uma sessão é disparado a partir do thread de E/S
- O código do codec é sempre processado no thread de E/S
- O código do motor é sempre processado na thread de E/S
Protocolos Suportados
- Protocolo de conexão de proxy da Web HTTP
- Protocolos MEIAS
- Protocolo WebSocket
- Kit de ferramentas para protocolo TLS 1.3 (analisadores/formatadores, mecanismo de handshake, utilitários de camada de registro e mecanismo TLS completo)
Segurança
- Suporte completo para protocolos SSL/TLS/DTLS
- Conexão segura de proxy da Web
Integração
- Sem dependências adicionais, JDK 8 ou JDK 9 (para DTLS) é suficiente
- Registro totalmente personalizável (SLF4J, Log4j 2 já está aqui)
- Fábricas de threads personalizáveis
- Temporizadores de sessão personalizáveis
- Modelos personalizáveis de retransmissão de pacotes durante handshakes DTLS
Compilando
Você precisa do Apache maven 3.8 ou superior, Java 8 ou superior
Ligações