I'm not sure it's possible to really do non-blocking terminal IO without native code. Of course, Jline does have some native bits...outside my expertise.