Насколько я понимаю, реализация Java основана на функции Unix select()
c (кажется, я помню, что реализация Windows немного отличалась)
В зависимости от ОС (и аргументов JVM!) Вызываются разные встроенные функции ОС, но их объединяет то, что это собственный код - базовая функциональность не реализована в Java.
Если вы хотите создать библиотеку, которая обращается к select()
(или подобному) базовой ОС (которая действительно зависит от файловых дескрипторов), я думаю, что вы в значительной степени вынуждены использовать JNI. Я не верю, что есть какие-то способы обойти это.
Selector / SelectableChannel в Java на самом деле является анемичным подмножеством того, что может select()
делать.