NIO
A API de I/O não bloqueante do Java, introduzida no Java 1.4 (2002). Três conceitos: channels, buffers e selectors. A base sobre a qual o Netty e todo servidor da JVM se apoiam.
Antes do NIO, cada conexão precisava da própria thread, o que tornava dez mil conexões simultâneas praticamente inviáveis. Um Selector permite que uma única thread vigie milhares de channels e acorde só quando algo puder ser lido — epoll no Linux, kqueue no BSD, IOCP no Windows. O ByteBuffer pode ser alocado direto fora do heap, para o kernel evitar uma cópia, e o FileChannel.transferTo oferece transmissão zero-copy. O NIO.2 (Java 7) trouxe Path, Files, percurso de árvores de arquivos e um watch service. A API é notoriamente desajeitada, e é justamente por isso que todo mundo usa o Netty em vez de mexer nela diretamente.