Repository navigation
Release v1.0.0
kRandom 1.0.0 — first public release on Maven Central.
A Java 21 random and fake-data generation toolkit built around a single source of truth (core), with focused integrations for Jackson, Spring Boot, Kotest, jqwik, and Kotlin DSL consumers.
Why kRandom
- Speed. Scalar generators are 8–18× faster than DataFaker on the same JDK and machine —
firstName18.6×,email8.1×,streetAddress14.0× (benchmark report). - Realism.
ObjectGeneratorandObjectFakerpopulate POJOs/records with semantically-coherent values (real names, valid emails, real cities) rather than random bytes, with locale-aware datasets across 20+ locales. - Determinism. Single
GeneratorConfigroot drives every generator — same seed reproduces the same fixture across primitives, providers, schemas, and object graphs. - Schema export.
Field+Schemaproduce row-style data with first-classtoCsv(),toJsonl(),toXml(),toSqlInserts()output for fixture batches.
Published modules
| Coordinate | Purpose |
|---|---|
io.github.frikit:krandom-core:1.0.0 |
Core generators, ObjectGenerator, ObjectFaker, Schema, ProviderHub |
io.github.frikit:krandom-jackson:1.0.0 |
Jackson serialization integration |
io.github.frikit:krandom-spring-boot-starter:1.0.0 |
Spring Boot 4.x auto-configuration |
io.github.frikit:krandom-kotest-extensions:1.0.0 |
Kotest Arb adapters |
io.github.frikit:krandom-jqwik-extensions:1.0.0 |
jqwik Arbitrary adapters |
io.github.frikit:krandom-kotlin-dsl:1.0.0 |
Kotlin DSL builder for generation rules |
Install
repositories { mavenCentral() }
dependencies {
implementation("io.github.frikit:krandom-core:1.0.0")
}<dependency>
<groupId>io.github.frikit</groupId>
<artifactId>krandom-core</artifactId>
<version>1.0.0</version>
</dependency>Quick taste
import io.github.frikit.krandom.generator.Generators;
String name = Generators.ofFullName().generate();
String email = Generators.ofEmail().generate();
OrderDto order = Generators.ofObject(OrderDto.class).generate();See Getting Started for the fluent namespaces, ObjectFaker rules, schemas, and seeded determinism.
Compatibility
- Java 21+ required.
- Spring Boot starter requires Spring Boot 4.x.
- Kotlin DSL built against Kotlin 2.3.x.
Tracked for follow-up patches
The 1.0.x line will polish three known papercuts (none blocking 1.0.0):
FieldGeneratorResolvercollection-subtype fallback can fall back toArrayList/HashMapfor unknown concrete subtypes; the declared concrete type's no-arg constructor should be tried first.- Registry input validation is inconsistent — first-name / last-name / gender / title / suffix accept payloads that downstream generators reject;
Profession/StreetAddressvalidate at registration. Standardize on register-time validation. - Locale fallback policy differs by registry:
CountryDataRegistrydoes language fallback;CityDataRegistry/StateDataRegistry/StreetAddressDataRegistryare exact-match only.
Full details in CHANGELOG.md.
Links
- 📚 Docs: https://frikit.github.io/krandom/
- 📊 Benchmarks:
docs/benchmarks/ - 🔒 Security policy:
SECURITY.md - 🐛 Issues: https://github.com/frikit/krandom/issues
Full diff: v0.1.0...v1.0.0