Любые Java-библиотеки с использованием клиентского кода SocketChannel?
Я рассмотрел ряд сетевых библиотек Java с открытым исходным кодом (драйверы JDBC, драйверы Apache Commons Net и т. Д.), И мне еще не удалось найти библиотеку, которая бы использовала SocketChannel для других случаев, кроме простых (в V3 разъема jdbc для mysql использовался socketchannel но более новые версии используют jn.Socket).
Меня интересуют только библиотеки клиентского кода. (библиотеки, которые подключаются, а не слушают).
К вашему сведению, я реализую уровень абстракции для сокетов Java (только для клиента), и мне нужны некоторые варианты использования, чтобы работа SocketChannel стояла. Пока что любые (клиентские) библиотеки, которые я видел, похоже, уходят от SocketChannels и возвращаются к реализациям на основе java 1.0 Socket, вероятно, потому что они все заинтересованы в использовании SSL (не уверен).
Итак, реальный вопрос заключается в том, стоит ли вообще поддерживать SocketChannel & co? (для клиентских библиотек, поскольку платформа все равно не поддерживает входящие соединения... пока.)
Точно так же меня также интересует DatagramChannel. (тот же вопрос, стоит ли мне поддерживать этот класс?)
Любые идеи, где еще я должен искать?
1 ответ
Вы используете NIO, когда думаете, что у вас будет тысячи соединений, вы хотите сэкономить на потоках, вы не возражаете против значительной дополнительной сложности и думаете, что это принесет пользу. Большую часть времени одна или несколько из этих вещей не соответствуют действительности, поэтому вы этого не делаете. Я сомневаюсь, что когда-нибудь буду использовать его для нового кода, скорее для модернизации. Для примеров смотрите Netty, Tomcat, Mina, ... Есть аргумент, который говорит, что select() был разработан для процессов, и теперь у нас есть потоки, которые вам на самом деле не нужны.