NIO
L'API di I/O non bloccante di Java, introdotta in Java 1.4 (2002). Tre concetti: canali, buffer e selector. Il fondamento su cui poggiano Netty e ogni server JVM.
Prima di NIO ogni connessione richiedeva un thread proprio, rendendo praticamente impossibili diecimila connessioni concorrenti. Un Selector permette invece a un solo thread di sorvegliare migliaia di canali e di svegliarsi solo quando c'è qualcosa da leggere: epoll su Linux, kqueue su BSD, IOCP su Windows. Un ByteBuffer può essere allocato direttamente fuori dall'heap, così il kernel evita una copia, e FileChannel.transferTo offre la trasmissione zero-copy. NIO.2 (Java 7) ha aggiunto Path, Files, la visita degli alberi di file e un watch service. L'API è notoriamente scomoda, ed è proprio per questo che si usa Netty invece di toccarla direttamente.