Любые java-библиотеки, использующие клиентский код SocketChannel?

Я просмотрел ряд сетевых java-библиотек с открытым исходным кодом (драйверы jdbc, сеть apache commons и т. д.), и мне еще предстоит найти библиотеку, которая использует SocketChannel для других, кроме простых случаев использования (V3 коннектор jdbc mysql использовал socketchannel но в более новых версиях используется jn.Socket).

Меня интересуют только библиотеки клиентского кода. (библиотеки, которые подключаются, а не прослушиваются).

К вашему сведению, я реализую уровень абстракции для java-сокетов (только для клиента), и мне нужны некоторые варианты использования, чтобы SocketChannel работал. До сих пор любые (клиентские) библиотеки, которые я видел, похоже, уходят от SocketChannels и возвращаются к реализациям на основе сокетов java 1.0, вероятно, потому, что все они заинтересованы в использовании SSL (не уверен).

Итак, реальный вопрос в том, должен ли я вообще поддерживать SocketChannel & co? (для клиентских библиотек, так как платформа все равно не поддерживает входящие соединения... пока.)

Точно так же меня интересует DatagramChannel. (тот же вопрос, стоит ли мне поддерживать этот класс?)

Любые идеи, где еще я должен искать?


person ozzee    schedule 28.08.2012    source источник


Ответы (1)


Вы используете NIO, когда думаете, что у вас будут тысячи подключений, вы хотите сэкономить на потоках, вы не возражаете против значительной дополнительной сложности и думаете, что это принесет пользу. В большинстве случаев одна или несколько из этих вещей не соответствуют действительности, поэтому вы этого не сделаете. Сомневаюсь, что я когда-либо буду использовать его для нового кода, скорее как модификацию. Для примеров см. Netty, Tomcat, Mina, ... Есть аргумент, который говорит, что select() был разработан для процессов, и теперь у нас есть потоки, которые вам на самом деле не нужны.

person user207421    schedule 28.08.2012