Skip to content

Release v1.0.0

Choose a tag to compare

@github-actions github-actions released this 10 May 09:16
c5137d6

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 — firstName 18.6×, email 8.1×, streetAddress 14.0× (benchmark report).
  • Realism. ObjectGenerator and ObjectFaker populate 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 GeneratorConfig root drives every generator — same seed reproduces the same fixture across primitives, providers, schemas, and object graphs.
  • Schema export. Field + Schema produce row-style data with first-class toCsv(), 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):

  • FieldGeneratorResolver collection-subtype fallback can fall back to ArrayList/HashMap for 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/StreetAddress validate at registration. Standardize on register-time validation.
  • Locale fallback policy differs by registry: CountryDataRegistry does language fallback; CityDataRegistry / StateDataRegistry / StreetAddressDataRegistry are exact-match only.

Full details in CHANGELOG.md.

Links

Full diff: v0.1.0...v1.0.0