finds.dev← search

// the find

chocoteam/choco-solver

★ 781 · Java · BSD-3-Clause · updated Sep 2026

An open-source Java library for Constraint Programming

Choco-solver is a Java library for constraint programming (CP) — modeling and solving combinatorial problems like scheduling, packing, and puzzles via backtracking search over variables and constraints. It's aimed at developers who need an actual CP solver embedded in a JVM app, not a toy library for teaching CP concepts.

The constraint library is deep: alldifferent, cumulative, regular, table, global cardinality, and more, plus int/bool/set/graph/real variable domains in one engine. The explanation-based engine (conflict-based backjumping, dynamic backtracking, path repair) is a real differentiator most open-source CP solvers don't bother implementing. It has interop with the wider CP ecosystem via FlatZinc, XCSP, MPS, and DIMACS parsers, so you can run MiniZinc models against it directly. It's also peer-reviewed (JOSS paper with a DOI) and has 25+ years of continuous development behind the same academic team, with CI, Codecov, and Codacy all wired up.

Continuous/real constraints require installing Ibex separately — a native C++ library, which is friction for anyone who just wants to add a JAR dependency. The stated requirement is JDK 8+, and nothing in the docs suggests the API takes advantage of anything newer, so expect a fairly old-school Java feel (no records, no sealed types in the public surface). Support runs through a Google Group, which is a rough signal for responsiveness even though the README claims fast answers. There's also no mention of multi-threaded or portfolio search in the overview — for large problems, CP runtime is dominated by search, and single-threaded solving is a real ceiling compared to solvers like OR-Tools that parallelize by default.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →