Введение
Simple Network Framework для Java (SNF4J) — это среда асинхронных сетевых приложений, управляемая событиями, для быстрой и простой разработки сетевых приложений.
SNF4J представляет собой простую, легкую и независимую платформу сетевых приложений, помогающую разрабатывать высокопроизводительные и масштабируемые сетевые приложения. Он предоставляет асинхронный API через Java NIO для обработки различных видов транспорта, таких как TCP/IP, UDP/IP и SCTP/IP.
Фреймворк спроектирован так, чтобы быть простым в использовании и достаточно простым для понимания. Разработчики приложений, которые любят держать руку на пульсе, не будут перегружены тональностью исходного кода. Он ориентирован на предоставление основных сетевых функций, заключающихся в передаче данных между двумя или более взаимодействующими сетевыми приложениями простым, но эффективным способом. Для обеспечения конфиденциальности и целостности передаваемых данных предусмотрена поддержка протоколов SSL/TLS/DTLS.
Дизайн
- Единый API для типов транспортного уровня: TCP, UDP и SCTP.
- Управляемый событиями API для разработки асинхронных сетевых приложений
- Настраиваемые механизмы протоколов для типов транспортного уровня: TCP и UDP.
- Утилиты для разработки UDP-серверных приложений
- Простой API для настраиваемых конвейеров кодировщика-декодера
- Обеспечить простоту программирования многопоточных приложений однопоточным способом.
- Построение конвейеров сеансов, использующих один и тот же канал сокета
Производительность и масштабируемость
- Поддержка минимизированного или даже нулевого ненужного копирования памяти.
- Поддержка низкого использования памяти в многосессионных приложениях.
- Меньшая задержка
- сжатие zlib и gzip
- Настраиваемое объединение циклов селектора
- Настраиваемые распределители байтовых буферов
Модель резьбы
- Все события обработчика (т. е. чтение, событие, таймер, исключение, инцидент) запускаются из потока, который выполняет ввод-вывод для канала (поток ввода-вывода).
- Все методы сеанса являются потокобезопасными и могут быть вызваны из любого потока, включая поток ввода-вывода и потоки, не связанные с вводом-выводом.
- Любое событие обработчика, вызванное как побочный эффект вызова метода сеанса, запускается из потока ввода-вывода.
- Код кодека всегда обрабатывается в потоке ввода-вывода.
- Код движка всегда обрабатывается в потоке ввода-вывода.
Поддерживаемые протоколы
- Протокол подключения веб-прокси HTTP
- SOCKS-протоколы
- Протокол веб-сокетов
- Набор инструментов для протокола TLS 1.3 (парсеры/форматеры, механизм установления связи, утилиты уровня записи и полный механизм TLS)
Безопасность
- Полная поддержка протоколов SSL/TLS/DTLS.
- Безопасное подключение через веб-прокси
Интеграция
- Никаких дополнительных зависимостей, достаточно JDK 8 или JDK 9 (для DTLS).
- Полностью настраиваемое ведение журнала (SLF4J, Log4j 2 уже здесь)
- Настраиваемые фабрики нитей
- Настраиваемые таймеры сеансов
- Настраиваемые модели повторной передачи пакетов во время рукопожатий DTLS
Компиляция
Вам нужен Apache maven 3.8 или выше, Java 8 или выше.
Ссылки