Documentation
User-facing how-to guides for working with SuperJ. Browse the SDK API on your machine with superj doc --list and superj doc <class-fqn>.
A single self-contained page demonstrating the language: the arena memory model, the systems-reach features, the kept/dropped-from-Java ledger, and the performance numbers.
What SuperJ is, why it's "super" Java (not a subset), the design philosophy, SDK variants, and a first build. The fastest on-ramp to a running binary.
The Java → SuperJ deltas in one scannable page: what's identical, what's removed, what's changed, what's new, and a quick syntax table.
A step-by-step: write an HTTP server on the built-in stack, compile to a single native binary, run it, and load-test it with wrk — then beat wrk with SuperJ's own client.
The Cargo-inspired build tool (the self-hosted superj itself): new/build/run/check/test, the Build.sj manifest, path & git dependencies, workspaces, profiles, hooks, feature flags.
The sj.test unit-test framework: @Test/@Ignore, the Asserts vocabulary, superj test, and the golden-output suite.
Why SuperJ has no threads, why that's correct rather than limiting, and the three impossibility results (undecidable deadlock freedom, FLP, CAP) that make total-order event systems the right primitive.
Why SuperJ doesn't have a borrow checker: the one bug class it makes impossible isn't worth the permanent per-line tax, and determinism is the stronger correctness property.
Why "no Rust crates" misses the point: SuperJ is an LLVM language, so the compiled C-ABI core of every LLVM language's ecosystem links via native for free.
Load a quantized GGUF model with sj.gpu, prefill + decode in forty lines, benchmark it honestly (the GPU warm-up trap), and drop down to the Tensor layer for custom architectures.
SuperJ's native struct — packed little-endian layout that is the wire format, primitive/nested/fixed-array/enum fields, var-length bytes/string, and the view()/bindTo() flyweight pattern.
Capabilities, architecture rules, and contracts: declare what each package may do, what it may import, and what its methods must guarantee — compiler-enforced, zero cost in release builds.
Create a library package (no entry), consume it from another project via a path or git dependency, and the workspace (monorepo) alternative.
How to keep a no-GC process flat: the single-thread license, the allocation ladder, arena blocks, local stack allocation, the scratch-buffer cookbook, and verifying flatness with the memory-event log.
Tracking arena growth over time with --mem-track and superj memlog: per-arena attribution, leak verdicts, live-tail, and the debug-build per-type histogram.
Three style rules learned the hard way: GC-free coding (the allocation ladder, warning flags, review checklist), prefer switch over if/else if, and prefer early return.
The site's own install-and-run walkthrough — from clone to a running web server in seven steps. Same content as Getting Started, framed for first-time visitors.
The full SDK API surface — every class, method, and signature — is one command away after install. SDK_API.md is generated at pack time under $SJ_HOME/sdk/build/.
superj doc --listsuperj doc sj.http.Routersuperj doc sj.util.IntArrayListsuperj --help