# JFaster implementation

*Level 3 of 3. Level 1 is [why declarative DSLs suit AI](why-dsl.md); level 2 is
[the JFaster language](docs/language-spec.md), which is what this site teaches.*

The JFaster language is independent of its implementation. An implementation reads a model and produces a complete
web application from it:

- storage for every persistent entity,
- a form and a listing for every entity, with their filters, tabs and actions,
- an API to read and write records and to query subsets,
- an operation for every transient entity,
- extension points where business rules are written as ordinary code.

The generated application is standard, readable code that the project owns. The model stays the source of truth:
the application is regenerated when the model changes, and custom code lives in its own files so that
regeneration never overwrites it.

## Versions

- **Current generation (2.x):** in production in the systems described on this site. It generates a Java web
  application.
- **Next generation (3.0):** in development. It keeps the language and modernizes the generated application.

Implementation details (project setup, generated files, extension points) will be published with the next
generation. Until then, this site documents the language, which is what you need to read, write and review JFaster
models.
