betacode

Руководство Java Channel

  1. Channel
  2. Interfaces and Classes
  3. Examples

1. Channel

Channel - это интерфейс в пакете package java.nio.channels - важный компонент в Java New IO (Java NIO). Как мы знаем, Java NIO был впервые представлен с Java 1.4 в качестве альтернативы традиционному Java IO с целью повышения производительности программ.
Channel представляет собой открытое соединение с объектом, таким как аппаратное устройство, file, socket или программные компоненты, которое способно выполнять операции IO (Input/Output). Как правило, для чтения или записи данных на устройство IO с Java NIO необходимо открыть Channel.
  • В случае считывания данных с устройств IO: Данные будут считываться из Channel в Buffer, вам просто нужно манипулировать c Buffer для обработки данных.
  • В случае записи данных на устройство IO: Вам нужно записать данные в Buffer, затем они будут переданы в Channel и записаны на устройство IO.
Buffer действует как временный контейнер данных с фиксированной емкостью (capacity), поэтому для чтения или записи всех данных на устройство IO вам придется много раз манипулировать c Buffer.
Channel vs Stream
В принципе, концепция Channel (канал) в Java NIO аналогична концепции Stream (поток) в Java IO, но с некоторыми отличиями:
  • Вы можете как читать, так и записывать на Channel. В то время как в Stream для чтения вам нужен InputStream, для записи вам нужен OutputStream.
  • Channel может считываться и записываться асинхронно.
  • Channel и Buffer имеют связь друг с другом. Вам просто нужно манипулировать с Buffer для обработки данных, считанных с Channel, и манипулировать сBuffer для записи данных в Channel.

2. Interfaces and Classes

Иерархия интерфейса в пакете java.nio.channels.
Список классов, реализующих interface Channel:

3. Examples

Если вы начинаете изучать Java Channel, пожалуйста, продолжайте использовать ReadableByteChannel иWritableByteChannel для первых примеров.