Documentation

The manual

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>.

Visual overview

SuperJ at a glance

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.

Open the overview →
Tutorial

Getting Started

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.

Read the tutorial →
Reference

Language Reference

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.

Read the reference →
Walkthrough

Building the fastest web server in the world

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.

Build the server →
Tooling

The Build System

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.

Read the build guide →
Tooling

Writing & Running Tests

The sj.test unit-test framework: @Test/@Ignore, the Asserts vocabulary, superj test, and the golden-output suite.

Read the test guide →
Thesis

Concurrency: A Thesis

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.

Read the thesis →
Thesis

Memory Safety & Security

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.

Read the note →
Thesis

Ecosystem

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.

Read the argument →
Tutorial

Writing an LLM Inference Engine

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.

Read the tutorial →
Tutorial

Structs: Zero-Overhead Wire Types

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.

Read the guide →
Tooling

The Claim Layer

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.

Read the guide →
Tutorial

Building a Reusable Library

Create a library package (no entry), consume it from another project via a path or git dependency, and the workspace (monorepo) alternative.

Read the guide →
Best practices

Memory Management

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.

Read the guide →
Tooling

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.

Read the guide →
Best practices

Coding Guidelines

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.

Read the guide →
On-ramp

Quickstart

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.

Open the quickstart →

Browse the SDK on your machine

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 --list
print every SDK class (FQN + tag)
superj doc sj.http.Router
print one class's methods + signatures
superj doc sj.util.IntArrayList
a primitive-specialized collection
superj --help
the compiler/build-tool surface