https://github.com/oak/sbs4j
Simple binary serialization library for Java.
https://github.com/oak/sbs4j
java serialization
Last synced: 5 months ago
JSON representation
Simple binary serialization library for Java.
- Host: GitHub
- URL: https://github.com/oak/sbs4j
- Owner: oak
- License: apache-2.0
- Created: 2022-03-04T17:43:13.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2023-05-04T09:50:38.000Z (about 3 years ago)
- Last Synced: 2025-07-27T06:31:54.197Z (11 months ago)
- Topics: java, serialization
- Language: Java
- Homepage: https://oak.github.io/sbs4j/
- Size: 1.84 MB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
# sbs4j (Simple Byte Serializer for Java)
[](https://github.com/oak/sbs4j/actions/workflows/build.yml)

[](https://www.apache.org/licenses/LICENSE-2.0.txt)
This project aims to be a simple but effective java primitives and object byte array serializer/deserializer.
## Dependencies
- Java 8+
- Maven (via wrapper)
## Build instructions
```
./mvnw package
```
## How to
The library provides two interfaces: [`SerializableObject`] and [`DeserializableObject`]. One for implementing object
serialization and other for object deserialization.
Also, it includes two classes: [`SerializerBuffer`] and [`DeserializerBuffer`] which are instantiated and passed through
the object hierarchy either serializing or deserializing its values.
### Including the library dependency
#### Using Maven
``` xml
dev.oak3
sbs4j
VERSION
```
#### Using gradle
``` groovy
implementation 'dev.oak3:sbs4j:VERSION'
```
### Usage
You can find more examples on the [`tests`] folder
``` java
public final class Example {
public static byte[] serializePoint() {
SerializerBuffer serializerBuffer = new SerializerBuffer();
Point point = new Point(4, 2, 9);
point.serialize(serializerBuffer);
byte[] serializedBytes = serializerBuffer.toByteArray();
return serializedBytes;
}
public static Point deserializePoint() {
ObjectDeserializer deserializerBuffer = new ObjectDeserializer();
byte[] serializedBytes = new byte[]{4, 0, 0, 0, 2, 0, 0, 0, 9, 0, 0, 0};
deserializerBuffer.deserialize(serializedBytes);
Point point = new Point();
point.deserialize(deserializerBuffer);
return point;
}
}
public class Point implements SerializableObject, DeserializableObject {
private int x;
private int y;
private int z;
// ... getters, setters, constructors...
@Override
public void serialize(ObjectSerializer serializer) {
// The written order...
serializer.writeI32(x);
serializer.writeI32(y);
serializer.writeI32(z);
}
@Override
public void deserialize(ObjectDeserializer deserializer) throws ValueDeserializationException {
// ...defines the read order
this.x = deserializer.readI32();
this.y = deserializer.readI32();
this.z = deserializer.readI32();
}
}
```
## Primitive Type Mappings
| sbs4j | Java | Status |
|----------------|--------------|-------------|
| `boolean` byte | `boolean` | implemented |
| `u8` integer | `byte` | implemented |
| `u16` integer | `short` | implemented |
| `i32` integer | `int` | implemented |
| `u32` integer | `long` | implemented |
| `i64` integer | `long` | implemented |
| `u64` integer | `BigInteger` | implemented |
| `u128` integer | `BigInteger` | implemented |
| `u256` integer | `BigInteger` | implemented |
| `u512` integer | `BigInteger` | implemented |
| `u128` integer | `BigInteger` | implemented |
| `f32` float | `float` | implemented |
| `f64` float | `double` | implemented |
## Roadmap
The following features are planned to be supported:
- Ensure Android support
- Improve support for customization
- Helper methods for serializing/deserializing more complex objects easier and with less code (e.g., List, Map,
Optional, etc.).
- Alternative reflection-based serialization and deserialization (i.e., process an object and its fields without writing any custom
code).
[`SerializerBuffer`]: https://github.com/oak/sbs4j/blob/main/src/main/java/dev/oak3/sbs4j/SerializerBuffer.java
[`DeserializerBuffer`]: https://github.com/oak/sbs4j/blob/main/src/main/java/dev/oak3/sbs4j/DeserializerBuffer.java
[`SerializableObject`]: https://github.com/oak/sbs4j/blob/main/src/main/java/dev/oak3/sbs4j/interfaces/SerializableObject.java
[`DeserializableObject`]: https://github.com/oak/sbs4j/blob/main/src/main/java/dev/oak3/sbs4j/interfaces/DeserializableObject.java
[`tests`]: https://github.com/oak/sbs4j/blob/main/src/test/java/dev/oak3/sbs4j/