Why native epoll support is introduced in Netty?
Netty's epoll transport uses epoll edge-triggered while java's nio library uses level-triggered. Beside this the epoll transport expose configuration options that are not present with java's nio like TCP_CORK, SO_REUSEPORT and more.
There are some information about this in netty's docs:
Netty provides the following platform specific JNI transports:
Linux (since 4.0.16) MacOS/BSD (since 4.1.11)
These JNI transports add features specific to a particular platform, generate less garbage, and generally improve performance when compared to the NIO based transport.