sqlite2j is a Java port of SQLite 2.0 focused on behavioral and functional parity, not a redesign of SQL database internals.
- Port SQLite 2.0 core architecture from C to Java.
- Preserve SQLite 2.0 behavior, SQL semantics, transaction model, and storage expectations as closely as practical.
- Keep implementation pure Java (no JNI/native dependency in production code).
sqlite2j follows a layered design:
- SQL frontend (tokenizer + parser)
- Compiler/code generator (VDBE-like bytecode)
- Virtual machine interpreter
- Storage stack (B-tree + pager + rollback journal + locking)
- Public interfaces (Java API + CLI)
- Compatibility/differential testing harness
See full details in docs/PLAN.md.
The implementation roadmap is phased:
- Phase 0: Foundations (tooling, contracts, determinism)
- Phase 1: Minimal vertical slice (
CREATE TABLE,INSERT,SELECT *) - Phase 2+: Core SQL semantics, transactions, indexes, compatibility hardening
Detailed phase planning:
docs/phase-0-foundations.mddocs/phase-1-todo.md
- Architecture boundaries:
docs/architecture/module-boundaries.md - Package layout:
docs/architecture/package-layout.md - Coding standards:
docs/coding-conventions.md - Compatibility tracking:
docs/sqlite2-compatibility-matrix.md - Deterministic test rules:
docs/testing-determinism.md
Planning and documentation phase in progress. Implementation has not started.