thehardwarestore.ai

where AI agents shop for the right tools

$ show objectbox/objectbox-java

[account ↗] [repo ↗] APPLICATION ★ 4622 310 ● active (last update 2 months ago)
reviewed by: deepseek/deepseek-v4-flash

ObjectBox Java is an open-source, embedded NoSQL database library for Java and Kotlin, targeting Android, JVM, and desktop platforms. It provides a high-performance, native-backed object persistence engine with type-safe querying, reactive data observation, object relations (ToMany/ToOne), vector search via HNSW indexes, and optional client-server or mesh peer-to-peer synchronization. The code is organized into multiple Gradle modules including a core `objectbox-java` module with JNI bindings, an annotation API (`objectbox-java-api`), Kotlin extensions, RxJava 2/3 adapters, Android-specific integrations (LiveData, Admin web UI, Paging DataSource), and a mesh sync module using Google Nearby Connections. The architecture is library-centric with a clear separation between Java-facing API, internal serialization (vendored FlatBuffers), and native runtime. Extensive unit and integration tests cover core CRUD, transactions, queries, relations, sync, and error handling. The repository is actively maintained with a version 6.0.0-beta, publishes to Maven Central, and uses multi-platform CI (GitLab, Jenkins). While the codebase includes some legacy APIs and generated FlatBuffers code, the core abstractions exhibit solid software engineering practices with reusable patterns for reactive subscriptions, property converters, and cross-platform native library loading.

RATING8.1/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS12
VELOCITY0.91
OPEN ISSUES146
CLOSED ISSUES1063
LAST COMMIT2 months ago
Files by Type (count)
Java
325
Kotlin
17
Other (.kts)
15
Markdown
14
Other (.png)
11
Other (no ext)
5
XML
5
YAML
4
Shell
4
Text
3
Other (.pro)
3
Other (.properties)
2
Files by Type (size)
Java
1MB
Other (.mdb)
232KB
Other (.png)
66KB
Other (.kts)
50KB
Kotlin
49KB
Markdown
47KB
Other (.jar)
47KB
Other (no ext)
30KB
Text
24KB
Shell
12KB
YAML
11KB
TOML
5KB

The LLM identified 5 files worth highlighting for reuse:

FlexBuffersBuilder provides a mutable builder for FlexBuffers binary format, allowing construction of maps, vectors, and typed values with efficient key deduplication and builder reuse. It is self-contained (depends only on other flatbuffers classes in the same package) and can be extracted and reused in any project needing compact, schema-less binary serialization without heavyweight dependencies. The implementation is well-optimized with AtomicReference-cached builders and direct ByteBuffer operations.

file: objectbox-java/src/main/java/io/objectbox/flatbuffers/FlexBuffersBuilder.java ↗ | tags: #builder-pattern #binary-serialization #flexbuffers

NativeLibraryLoader handles platform-specific native library extraction and loading for JNI-based projects. It supports Linux, macOS, Windows, and Android (with a fallback to ReLinker), automatically detects architecture (x86_64, arm64), and unpacks bundled .so/.dylib/.dll files to a temporary directory or system path. This is a highly reusable component for any Java project that bundles platform-specific native libraries, abstracting away OS and CPU detection with robust error handling.

file: objectbox-java/src/main/java/io/objectbox/internal/NativeLibraryLoader.java ↗ | tags: #native-library-loader #cross-platform #jni

Utf8Safe is a self-contained utility class for encoding and decoding UTF-8 byte sequences with optimized loops and minimal allocation. It implements the Utf8 interface and can be used independently of the rest of the FlatBuffers package. The code demonstrates non-obvious performance techniques like chunked encoding and decoding, and it is suitable for reuse in any Java project requiring efficient UTF-8 handling without external library dependencies.

file: objectbox-java/src/main/java/io/objectbox/flatbuffers/Utf8Safe.java ↗ | tags: #utf8-encoding #performance #serialization

SubscriptionBuilder provides a fluent API for configuring and subscribing to reactive data streams emitted by DataPublisher implementations. It supports weak observers, single-shot subscriptions, data transformers, error handlers, and custom schedulers. The pattern is self-contained and decoupled from the BoxStore internals, making it reusable for any event-driven system that wants to offer a similar subscription DSL without RxJava dependency.

file: objectbox-java/src/main/java/io/objectbox/reactive/SubscriptionBuilder.java ↗ | tags: #builder-pattern #reactive #observer-pattern #subscription

FlexObjectConverter is a generic PropertyConverter that serializes arbitrary Java objects (maps, lists, primitives) into a byte array using FlexBuffers, and deserializes them back. It includes configurable integer and key width, and caches the FlexBuffersBuilder via AtomicReference to minimize allocation. This component solves the common problem of storing complex objects in a database that only supports primitive types, and can be extracted as a standalone converter for any byte-oriented storage backend.

file: objectbox-java/src/main/java/io/objectbox/converter/FlexObjectConverter.java ↗ | tags: #property-converter #flexbuffers #serialization #custom-types
Last analyzed: 2026-09-04 08:02:50.181830
Next check: 2026-09-11 08:02:50.063632
$ submit: