The Lean Java Manifesto
We are rediscovering how much modern Java can do with how little. By building real systems this way, and helping others do the same, we have come to value:
01
Comprehension
over convenience
02
Explicit code
over framework magic
03
Owning your stack
over renting it
04
The standard library
over one more dependency
05
One artifact you can rebuild
over a platform you can only assemble
The principles we follow
- A system one person can hold in their head is worth more than one no single person can explain.
- Every dependency is a liability. Of comprehension. Of maintenance. Of attack surface. Add one only when the platform genuinely cannot.
- Modern Java already gives you virtual threads, records, and a capable standard library. Use what you have before reaching for more.
- Prefer behavior you can read in the code to behavior that happens by annotation, reflection, or convention you must trust.
- Keep your SQL typed and explicit. You should always know the query that runs.
- The database is a file. The application is one artifact. Together they are something you own.
- A system should be reconstructable from a git repository and a backup with nothing essential living only in someone else's cloud.
- Render on the server until the problem truly demands more. Most problems never do.
- Deploy to the smallest thing that works. One box you understand beats a fleet you orchestrate.
- Convenience is the solvent of control. Notice the trade, and pay it on purpose or not at all.
- Lean is a choice, not a religion. Frameworks earn their keep at scale and on large teams. Reach for them deliberately, never by reflex.
- A lean stack is a starting point, never a ceiling. Let it grow in small, deliberate steps, not rewrites.