Hurtigstart for Kotlin og Java
Når du er ferdig med denne siden, har du et Kotlin-program som oppretter et ende-til-ende-kryptert dokumentlager, skriver en oppgave og leser den inn igjen. Den samme klienten fungerer fra Java, Spring, Ktor eller enhver annen JVM-backend.
Slik fungerer det
JVM-klienten styrer den ekte MindooDB-motoren, som kjører i en liten Node.js-sidecar på samme maskin. De snakker sammen over en autentisert loopback-WebSocket, og hver brukerøkt får sin egen prosess, slik at dekrypterte nøkler aldri blandes. Kryptering, signaturer, synkronisering og tilgangskontroll er den samme koden som kjører i Node.js, nettlesere og React Native.
1) Hent klienten og sidecaren
Du trenger JDK 21+ og Node.js 22.13+. Klon begge prosjektene ved siden av hverandre og bygg sidecaren:
git clone https://github.com/klehmann/mindoodb-jvm-bridge.git
git clone https://github.com/klehmann/mindoodb-kmp-client.git
cd mindoodb-jvm-bridge && npm install && npm run build && cd .. Legg deretter klienten til i Gradle-bygget ditt, for eksempel som inkludert bygg i settings.gradle.kts:
// settings.gradle.kts
includeBuild("../mindoodb-kmp-client")
// build.gradle.kts
dependencies {
implementation("com.mindoo.db:mindoodb-kmp-client:0.0.1")
} 2) Opprett Main.kt
Sidecar.start starter motoren. createTenant genererer alle kryptografiske nøkler og registrerer den første brukeren i ett steg. Deretter åpner vi en økt, oppretter et dokument og leser det inn igjen — hver endring signeres og krypteres før den lagres.
import com.mindoo.db.bridge.*
import java.nio.file.Paths
import kotlinx.coroutines.runBlocking
fun main() = runBlocking {
// Starts the Node.js sidecar that runs the MindooDB engine
val sidecar = Sidecar.start(
Paths.get("../mindoodb-jvm-bridge/dist/index.js"),
Paths.get("./mindoodb-data"),
)
// One call creates admin + user keys, KeyBag, and directory
MindooDBBridge.createTenant(
sidecar.endpoint,
tenantId = "my-first-tenant",
adminName = "cn=admin/o=demo", adminPassword = "admin-password",
userId = "cn=alice/o=demo", password = "user-password",
databases = listOf("todos"),
)
val session = MindooDBBridge.openSession(
sidecar.endpoint, "my-first-tenant", "cn=alice/o=demo",
"user-password", listOf("todos"),
)
// Create a todo document and read it back
val todos = session.database("todos")
val todo = todos.documents.create(mapOf("title" to "Buy milk", "done" to false))
println("Loaded todo: " + todos.documents.get(todo.id).data)
session.close()
sidecar.stop()
} 3) Kjør
./gradlew run Forventet utdata:
Loaded todo: {"_attachments":[],"done":false,"title":"Buy milk"} Hva nå?
Den fullstendige veiledningen dekker felttyper, rik tekst, vedlegg, spørringer, Virtual Views, changefeeden, publisering til en server, synkronisering, nye brukere og bruk av klienten fra Java.