package-info.java — netty Source File
Architecture documentation for package-info.java, a java file in the netty codebase.
Entity Profile
Source Code
/*
* Copyright 2012 The Netty Project
*
* The Netty Project licenses this file to you under the Apache License,
* version 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at:
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
/**
* Abstraction of a byte buffer - the fundamental data structure
* to represent a low-level binary and text message.
*
* Netty uses its own buffer API instead of NIO {@link java.nio.ByteBuffer} to
* represent a sequence of bytes. This approach has significant advantage over
* using {@link java.nio.ByteBuffer}. Netty's new buffer type,
* {@link io.netty.buffer.ByteBuf}, has been designed from ground
* up to address the problems of {@link java.nio.ByteBuffer} and to meet the
* daily needs of network application developers. To list a few cool features:
* <ul>
* <li>You can define your buffer type if necessary.</li>
* <li>Transparent zero copy is achieved by built-in composite buffer type.</li>
* <li>A dynamic buffer type is provided out-of-the-box, whose capacity is
* expanded on demand, just like {@link java.lang.StringBuffer}.</li>
* <li>There's no need to call the {@code flip()} method anymore.</li>
* <li>It is often faster than {@link java.nio.ByteBuffer}.</li>
* </ul>
*
* <h3>Extensibility</h3>
*
* {@link io.netty.buffer.ByteBuf} has rich set of operations
* optimized for rapid protocol implementation. For example,
* {@link io.netty.buffer.ByteBuf} provides various operations
* for accessing unsigned values and strings and searching for certain byte
* sequence in a buffer. You can also extend or wrap existing buffer type
* to add convenient accessors. The custom buffer type still implements
* {@link io.netty.buffer.ByteBuf} interface rather than
* introducing an incompatible type.
*
* <h3>Transparent Zero Copy</h3>
*
* To lift up the performance of a network application to the extreme, you need
* to reduce the number of memory copy operation. You might have a set of
* buffers that could be sliced and combined to compose a whole message. Netty
* provides a composite buffer which allows you to create a new buffer from the
* arbitrary number of existing buffers with no memory copy. For example, a
* message could be composed of two parts; header and body. In a modularized
* application, the two parts could be produced by different modules and
* assembled later when the message is sent out.
* <pre>
* +--------+----------+
* | header | body |
* +--------+----------+
// ... (69 more lines)
Source
Frequently Asked Questions
What does package-info.java do?
package-info.java is a source file in the netty codebase, written in java.
Where is package-info.java in the architecture?
package-info.java is located at buffer/src/main/java/io/netty/buffer/package-info.java (directory: buffer/src/main/java/io/netty/buffer).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free