Mohammad.mja74@gmail.
com
Java NIO
Writing clean &
Efficient Code
Mohammad Javad Akbari
Senior Java Developer
[email protected] Introduction
The Java NIO (New Input/Output) API
Java NIO revolutionizes Java's I/O approach by replacing
blocking stream-based operations with a non-blocking
channel-buffer architecture. Using channels for data
transfer, buffers for storage, and selectors to monitor
multiple connections with fewer threads, NIO delivers
superior performance for concurrent connection
handling and resource-intensive operations, making it
ideal for scalable network applications and high-
performance file processing.
Channels and Buffer Scatter/Gathe
Non-blocking I/ File Lockin
Selector Memory-mapped File
Buffer Operation Direct Buffer
Different Channel Types Asynchronous I/O
Mohammad Javad Akbari
Senior Java Developer
[email protected] Channels & Buffers
Channels and Buffers
Unlike traditional I/O which works directly with
streams, NIO uses channels and buffers. Data is always
read from a channel into a buffer, or written from a
buffer into a channel.
Mohammad Javad Akbari
Senior Java Developer
[email protected] Non-blocking I/O
Non-blocking Input/Output
NIO allows you to perform I/O operations in a non-
blocking mode, where a thread can request data from a
channel and do other work while waiting for data to
become available.
Mohammad Javad Akbari
Senior Java Developer
[email protected] Selectors
What are they?
These allow a single thread to monitor multiple channels
for events (like connection opened, data arrived, etc.),
enabling efficient handling of multiple connections with
fewer threads.
Mohammad Javad Akbari
Senior Java Developer
[email protected] Buffers
Buffer Operations
A container for data with specific read and write
operations. Key buffer types include ByteBuffer,
CharBuffer, DoubleBuffer, FloatBuffer, IntBuffer,
LongBuffer, and ShortBuffer.
Mohammad Javad Akbari
Senior Java Developer
[email protected] Channels
Different Channel Types
An open connection to an I/O device like files,
sockets, etc. Major channel types include
FileChannel, DatagramChannel, SocketChannel,
and ServerSocketChannel.
Mohammad Javad Akbari
Senior Java Developer
[email protected] Scatter & Gather
Scatter/Gather
The ability to read data into multiple buffers
(scatter) and write data from multiple buffers
(gather) in a single operation.
Mohammad Javad Akbari
Senior Java Developer
[email protected] File Locking
Different Channel Types
Mechanism to lock a file or part of a file to
prevent simultaneous modification by multiple
processes.
Mohammad Javad Akbari
Senior Java Developer
[email protected]Memory-mapped Files
Memory-mapped Files
Allows mapping a file directly to memory for extremely
fast I/O operations. This leverages the operating
system’s virtual memory system to bypass traditional
disk I/O, enabling direct read/write access as if the file
were part of the application’s memory.
Mohammad Javad Akbari
Senior Java Developer
[email protected] Direct Buffers
Better performance ???
Provides better performance by allowing the
JVM to perform I/O operations directly from
memory, bypassing additional copying.
Mohammad Javad Akbari
Senior Java Developer
[email protected] Asynchronous I/O
(Added in Java 7)
Asynchronous I/O (Java 7's NIO.2) enables fully non-blocking
operations where I/O requests return control immediately and notify
completion through callbacks or futures, eliminating the need for
threads to wait for I/O completion.
Mohammad Javad Akbari
Senior Java Developer
[email protected] Thanks for watching!
Like, save, Share, Comment
Java NIO unlocks a new realm of high-performance
I/O operations - like this guide? Hit , share with
your developer community, and let me know
which Java topic you'd like me to break down next!
Mohammad Javad Akbari
Senior Java Developer