ナビゲーションをスキップ

ネイティブトランスポート

このページはGithub Wikiページから自動生成されていることをご存知ですか? こちらから改善できます!

Nettyは、以下のプラットフォーム固有のJNIトランスポートを提供します

  • Linux (4.0.16以降)
  • MacOS/BSD (4.1.11以降)

これらのJNIトランスポートは、特定のプラットフォームに固有の機能を追加し、NIOベースのトランスポートと比較して、より少ないガベージを生成し、一般的にパフォーマンスを向上させます。

ネイティブトランスポートの使用

対応するネイティブライブラリが確実に含まれるように、依存関係に適切な分類子を指定する必要があることに注意してください。

Linuxネイティブトランスポートの使用

ネイティブトランスポートはNIOトランスポートと互換性があるため、次の検索と置換を行うだけで済みます

  • NioEventLoopGroupEpollEventLoopGroup
  • NioEventLoopEpollEventLoop
  • NioServerSocketChannelEpollServerSocketChannel
  • NioSocketChannelEpollSocketChannel

ネイティブトランスポートはNettyコアの一部ではないため、Mavenのpom.xml、またはビルドシステムの同等のものにnetty-transport-native-epollを依存関係として追加する必要があります

  <dependencies>
    <dependency>
      <groupId>io.netty</groupId>
      <artifactId>netty-transport-native-epoll</artifactId>
      <version>${project.version}</version>
      <classifier>linux-x86_64</classifier>
    </dependency>
    ...
  </dependencies>

上記では、分類子はlinux-x86_64であり、これは依存関係に含まれるネイティブバイナリが64ビットx86 CPUで実行されるLinux用にコンパイルされていることを意味します。他のCPUアーキテクチャ、および特定のLinuxディストリビューションでは、異なる分類子が必要になります。

注: 公式のLinuxビルドはすべてGLIBCに対してリンクされています。これは、libc実装としてMuslを使用するオペレーティングシステムは、Nettyネイティブトランスポートの公式ビルドではサポートされていないことを意味します。サポートされていないCPUアーキテクチャまたはlibc実装でNettyネイティブトランスポートを使用する場合は、独自のビルドを作成する必要があります。その方法については、以下を参照してください。

sbtプロジェクトでネイティブトランスポートを使用するには、以下の行をlibraryDependenciesに追加してください

"io.netty" % "netty-transport-native-epoll" % "${project.version}" classifier "linux-x86_64"

MacOS/BSDネイティブトランスポートの使用

ネイティブトランスポートはNIOトランスポートと互換性があるため、次の検索と置換を行うだけで済みます

  • NioEventLoopGroupKQueueEventLoopGroup
  • NioEventLoopKQueueEventLoop
  • NioServerSocketChannelKQueueServerSocketChannel
  • NioSocketChannelKQueueSocketChannel

ネイティブトランスポートはNettyコアの一部ではないため、Mavenのpom.xmlnetty-transport-native-kqueueを依存関係として追加する必要があります

  <dependencies>
    <dependency>
      <groupId>io.netty</groupId>
      <artifactId>netty-transport-native-kqueue</artifactId>
      <version>${project.version}</version>
      <classifier>osx-x86_64</classifier>
    </dependency>
    ...
  </dependencies>

sbtプロジェクトでネイティブトランスポートを使用するには、以下の行をlibraryDependenciesに追加してください

"io.netty" % "netty-transport-native-kqueue" % "${project.version}" classifier "osx-x86_64"

ネイティブトランスポートのビルド

ネイティブトランスポートのJARファイルがすでにある場合は、JARファイルには必要な共有ライブラリファイル(例:.so.dll.dynlib)がすでに含まれており、自動的にロードされるため、ネイティブトランスポートを自分でビルドする必要はありません。

Linuxネイティブトランスポートのビルド

ネイティブトランスポートをビルドするには、64ビットカーネル2.6以降のLinuxを使用する必要があります。必要なツールとライブラリもインストールしてください

# RHEL/CentOS/Fedora:
sudo yum install autoconf automake libtool make tar \
                 glibc-devel \
                 libgcc.i686 glibc-devel.i686
# Debian/Ubuntu:
sudo apt-get install autoconf automake libtool make tar \
                     gcc

MacOS/BSDネイティブトランスポートのビルド

ネイティブトランスポートをビルドするには、MacOS 10.12以降を使用する必要があります。必要なツールとライブラリもインストールしてください

brew install autoconf automake libtool
最終取得日:2024年7月19日