# accumulo-fluo-bytes **Repository Path**: mirrors_apache/accumulo-fluo-bytes ## Basic Information - **Project Name**: accumulo-fluo-bytes - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-15 - **Last Updated**: 2025-07-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Apache Fluo Bytes [![Build Status][ti]][tl] [![Apache License][li]][ll] [![Maven Central][mi]][ml] [![Javadoc][ji]][jl] **Apache Fluo Bytes is a simple library with the goal of providing an extremely stable API for handling bytes, suitable for use in [Apache Fluo][fluo] and other projects' APIs.** ## Features and Goals This project aims to fill a void in Java, by providing convenient objects to represent a sequence of bytes and associated utility classes for situations when a raw byte array is not appropriate. Specifically, it provides a `ByteSequence` interface, analogous to Java's `CharSequence`, an immutable `Bytes` implementation analogous to Java's `String`, and a corresponding `BytesBuilder` analogous to Java's `StringBuilder`. The provided classes have appropriate methods for serialization, and proper equals and hashCode implementations, as well as a comparator for `ByteSequence`, so they will be suitable for use in `Set`s and as keys in `Map`s. An immutable bytes implementation makes it possible to pass data between APIs without the need for performance-killing protective copies. This benefit is compounded if this library is used by multiple projects, as the need to make protective copies while passing data between a project and its dependency's API is eliminated. This project aims to provide a fluent and intuitive API, with support for conversions to/from other common types, such as `ByteBuffer`, `byte[]`, and `CharSequence`/`String`. This project requires at least Java 8, and supports `Stream` and functional APIs where appropriate. See this [blog post][blog] for some additional background. ## Safe for APIs Using an external library in a project's API poses some risks to that project, especially if it and its dependencies depend on different versions of that library. This project attempts to mitigate those risks, so that it can be used safely by other projects. This project is made safe for reuse in other projects' APIs by adopting the following principles: * Using [Semantic Versioning 2.0.0][semver] to make strong declarations about backwards-compatibility * Strongly avoid breaking changes (avoid major version bumps), so that projects can converge on the latest version of this library required by their code and that of their dependencies, without risk of incompatibility * No runtime dependencies itself, to eliminate any potential conflicts from transitive dependencies if this library is used * Use generic package naming scheme not tied to the Maven coordinates, in case the project relocates or becomes independent of Fluo in the future * Practice review-then-commit during development to protect against poor initial design which is stuck with the project for the long-term * Provide `@since` tags in Javadocs to communicate minimum required versions for particular features ## Public API declaration for Semantic Versioning This project's public API are all the publicly visible classes, methods, and fields accessible outside the project's packages. --- *Apache Fluo Bytes is an [Apache Fluo][fluo] project.* [blog]: https://fluo.apache.org/blog/2016/11/10/immutable-bytes/ [semver]: http://semver.org/spec/v2.0.0.html [fluo]: https://fluo.apache.org/ [ti]: https://github.com/apache/fluo-bytes/workflows/CI/badge.svg [tl]: https://github.com/apache/fluo-bytes/actions [li]: http://img.shields.io/badge/license-ASL-blue.svg [ll]: https://github.com/apache/fluo-bytes/blob/main/LICENSE [mi]: https://maven-badges.herokuapp.com/maven-central/org.apache.fluo/fluo-bytes/badge.svg [ml]: https://maven-badges.herokuapp.com/maven-central/org.apache.fluo/fluo-bytes/ [ji]: https://javadoc-emblem.rhcloud.com/doc/org.apache.fluo/fluo-bytes/badge.svg [jl]: http://www.javadoc.io/doc/org.apache.fluo/fluo-bytes