Model business rules like approval or rejection of a request as explicit data types.
Enforce value constraints, such as amounts that can never go negative, at the point data is created.
Keep outside dependencies like databases or clocks separate from core business logic.
Generate Java classes from a specification file for use in a Spring Boot or jOOQ project.
| kawasima/souther | autismdevelopment/autism-client | fal1winter/knowledge-rag-agent-platform | |
|---|---|---|---|
| Stars | 22 | 22 | 22 |
| Language | Java | Java | Java |
| Setup difficulty | hard | hard | hard |
| Complexity | 4/5 | 3/5 | 5/5 |
| Audience | developer | general | developer |
Figures from each repo's GitHub metadata at analysis time.
Requires JDK 25 and Maven as the build toolchain, even though generated code runs on Java 21.
Souther is a small programming language built to run on the Java platform. It is meant for describing the rules of a business, such as what a piece of data is allowed to look like and what states something can move through, and then turning those rules into working Java code. In Souther you write two main things: data and behavior. Data describes the shape of information, along with constraints on what values are valid, so an amount of money might be required to never go negative. Behavior describes an action, what it takes in and what outcomes it can produce, such as a travel request being either accepted or rejected. Souther checks these constraints every time a piece of data is created, so invalid data cannot slip through unnoticed. One idea the project emphasizes is that outcomes like rejection are treated as ordinary results, not as errors or exceptions. A behavior that can either approve or reject something simply returns one of two named outcomes, and the rest of the program handles both cases as normal data rather than as something going wrong. Souther deliberately keeps outside the world, such as databases, clocks, or web requests, out of its own code. Instead, a behavior can declare that it needs something from the outside world, and the surrounding Java program is responsible for supplying it. This keeps the core business rules separate from the technical details of how the system talks to a database or the internet. To use it, you need JDK 25 and Maven to build the project, though the code it generates can run on the older Java 21. It includes a command line tool that can compile these rule files into Java class files, or run a single business rule directly against some input data to see the result, without writing any Java yourself. The language is intentionally limited: it does not support exceptions, null values, or arbitrary calls into the wider Java ecosystem, keeping the model simple and predictable. Documentation exists mainly in Japanese, alongside English examples and design notes in the repository.
A small JVM language for writing business data rules and behaviors that compile down into working Java code.
Mainly Java. The stack also includes Java, Maven, JDK 25.
Setup difficulty is rated hard, with roughly 1h+ to a first successful run.
Mainly developer.
This repo across BitVibe Labs
double-check against the repo, no cap.