You might want to look at Apache MINA. I was using java.net and java.nio
before, but I am currently changing my game to use the MINA protocol. MINA
uses NIO as underlaying transport protocol.
You could create some sort of protocol using NIO yourself, but I would
suggest you don't reinvent the wheel.
-> MINA simplifies message passing (belive me, it's cool to design your
own protocol, but what you really want is create a game! Not a network
->Don't worry, it's fast enough to do real-time gaming