Я использую:
if(jQuery.support.touch){
alert('Touch enabled');
}
в jQuery mobile 1.0.1
Вы уверены, что вам нужно использовать NIO? Это может не принести той относительной выгоды, которую изначально ожидали:
Пол Тайма: Убейте миф, пожалуйста. NIO не быстрее, чем ввод-вывод
Пол Тайма: Написание многопоточных серверов Java - что старого есть нового
Стек, показывающий, где внутри createXMLStreamReader () блокируется, может помочь, но, вероятно, ведет себя так, как задумано. Если он был разработан для работы с InputStreams, которые всегда либо (1) выдают ожидаемый объем данных; (2) конец; или (3) блок, то он не будет автоматически вести себя (обычно более сложным и с отслеживанием состояния) способом, который может вернуться после прочтения любого количества неполных входных данных без большой глубокой переработки.
Вам необходимо использовать служебный класс java.nio.channels.Channels.
ReadableByteChannel ch = //...
InputStream in = Channels.newInputStream(ch);
Возможно, вам потребуется настроить блокирующий канал сокета.
SelectableChannel ch = //...
ch.configureBlocking(true);
Это означает, что вы не сможете для неблокирующего ввода-вывода.
Я тоже начал искать, тоже на предмет использования сервера XMPP. Я смотрел вокруг, и похоже, что есть только одна реализация, которая обещает поддержку NIO: Aalto http://wiki.fasterxml.com/AaltoHome
Но, похоже, она выпущена до версии 0.9.5, Март 2009 г. Итак, я не уверен, в каком состоянии он находится, но это может быть хорошей отправной точкой. Если вы не сможете убедить более крупный проект (например, Woodstox) переделать некоторые из их внутренних классов для поддержки NIO.