Practical YAML linting and validation with score, badge and web report
594
A high-performance Java 21 application for serializing and deserializing messages using Simple Binary Encoding (SBE) with support for GraalVM native image compilation.
Repository: github.com/darioajr/sbe-codec
sbe_encoder_decoder/
├── src/
│ ├── main/
│ │ ├── java/com/github/darioajr/sbe/
│ │ │ ├── SbeApplication.java # Main application
│ │ │ ├── SbeSerializer.java # Message serializer
│ │ │ ├── SbeDeserializer.java # Message deserializer
│ │ │ ├── OrderData.java # Order data record
│ │ │ ├── TradeData.java # Trade data record
│ │ │ ├── MarketDataData.java # Market data record
│ │ │ ├── PriceLevelData.java # Price level record
│ │ │ ├── BooleanType.java # Boolean enum type
│ │ │ ├── Side.java # Side enum (BUY/SELL)
│ │ │ ├── *Encoder.java # SBE message encoders
│ │ │ ├── *Decoder.java # SBE message decoders
│ │ │ └── MessageHeader*.java # SBE message headers
│ │ └── resources/
│ │ ├── sbe/message-schema.xml # SBE schema definition
│ │ └── META-INF/native-image/ # GraalVM configuration
│ └── test/
│ └── java/com/github/darioajr/sbe/
│ └── SbeSerializationTest.java # Comprehensive tests
├── build-scripts/ # Build scripts for different platforms
├── Dockerfile.java # Docker build for Java
├── Dockerfile.native # Docker build for native image
├── docker-compose.yml # Docker Compose configuration
└── pom.xml # Maven configuration
The application supports three message types:
# Windows
build-scripts\build-java.bat
# Linux/Mac
chmod +x build-scripts/build-java.sh
./build-scripts/build-java.sh
Build native image using Docker without requiring local GraalVM installation:
# Linux/macOS
./build-scripts/build-native.sh
# Windows
build-scripts\build-native.bat
The Docker build uses GraalVM Community Edition and creates a native executable in the target/ directory.
# Build and run Java version
docker-compose up sbe-java
# Build and run native version
docker-compose up sbe-native
# Build both versions
docker-compose up
import com.github.darioajr.sbe.*;
// Create serializer and deserializer
SbeSerializer serializer = new SbeSerializer();
SbeDeserializer deserializer = new SbeDeserializer();
// Create and serialize an order
OrderData order = new OrderData(
12345L, // orderId
"AAPL", // symbol
Side.BUY, // side
1000L, // quantity
15000L, // price (in cents)
System.currentTimeMillis(), // timestamp
BooleanType.TRUE, // isActive
"CLIENT123" // clientOrderId
);
byte[] serializedOrder = serializer.serializeOrder(order);
// Deserialize back to object
OrderData deserializedOrder = (OrderData) deserializer.deserialize(serializedOrder);
SBE provides exceptional performance characteristics:
The schema defines three message types with the following fields:
The project follows standard Maven conventions with all SBE classes in the main package:
OrderData, TradeData, MarketDataData, PriceLevelDataSbeSerializer handles encoding to binary formatSbeDeserializer handles decoding from binary formatcom.github.darioajr.sbeSide (BUY/SELL), BooleanType (TRUE/FALSE)The project includes comprehensive GraalVM native image configuration:
Run the comprehensive test suite:
mvn test
Tests include:
mvn testThis project is provided as an example implementation of SBE with GraalVM native image support.
Content type
Image
Digest
sha256:90a9cd15a…
Size
13.9 MB
Last updated
about 1 year ago
docker pull darioajr/sbe-codec