Руководство Java Channel
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.
- Buffer
- Selector
- AsynchronousChannel
- AsynchronousByteChannel
- ReadableByteChannel
- ScatteringByteChannel
- InterruptibleChannel
- ByteChannel
- SelectableChannel
- WritableByteChannel
- GatheringByteChannel
- NetworkChannel
- MulticastChannel
Список классов, реализующих interface Channel:
- SocketChannel
- DatagramChannel
- ServerSocketChannel
- AsynchronousSocketChannel
- AsynchronousServerSocketChannel
- FileChannel
- AsynchronousFileChannel
- SelectableChannel
- Pipe.SinkChannel
- Pipe.SourceChannel
- SctpChannel
- SctpMultiChannel
- SctpServerChannel
Руководства Java New IO
- Руководство Java ReadableByteChannel
- Руководство Java WritableByteChannel
- Руководство Java Pipe.SinkChannel
- Руководство Java Pipe.SourceChannel
- Руководство Java ScatteringByteChannel
- Руководство Java GatheringByteChannel
- Руководство Java Buffer
- Руководство Java DatagramChannel
- Руководство Java Channel
Show More