there is one thing which I did not like about NIO since very beginning. Its interface is too cumbersome when you want to use it for game programming. I guess that most people need fire&forget. You want to create a message and call one method, which will post it. You don't want to bother with waiting till the socket is ready for writing, and then bother with checking whether it was really sent or not.
Yes, you do. You want to do your entire game in one thread, for a myriad of reasons. You don't have to, but it makes life easier. So, in fact, you want to do exactly what NIO does for you.
Game programming is ALWAYS more cumbersome than normal programming, coming all the way back to that annoying gameloop thingy

- it *enforces* a more cumbersome programming style. Fundamentally, it's forcing you to do non-transparent scheduling, whereas modern programming generally uses transparent scheduling.
Nope, but I question the need for ANY of this in game clients.
Yeah, not worth it for performance reasons, but for code readability and reasoning as noted above...