導入
Simple Network Framework for Java (SNF4J) は、ネットワーク アプリケーションを迅速かつ簡単に開発するための非同期イベント駆動型ネットワーク アプリケーション フレームワークです。
SNF4J は、高性能でスケーラブルなネットワーク アプリケーションの開発を支援する、シンプルで軽量な独立したネットワーク アプリケーション フレームワークとして機能します。 Java NIO を介して非同期 API を提供し、TCP/IP、UDP/IP、SCTP/IP などのさまざまなトランスポートを処理します。
このフレームワークは、使いやすく、適度に理解しやすいように設計されています。現実に耳を傾けたいアプリケーション開発者は、ソース コードの調子に圧倒されることはありません。これは、シンプルかつ効果的な方法で 2 つ以上の通信ネットワーク アプリケーション間でデータを転送する、コア ネットワーキング機能を提供することを目的としています。転送データのプライバシーと整合性を提供するために、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 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 以降が必要です
リンク