everything.play
play
write java, run it right here. the real javac from jdk 25, compiled to webassembly. nothing leaves your machine.
Main.java
loading the editor…
output
press run, or ⌘↵ in the editor.
how this works, honestly
your code is compiled by the real javac (from jdk 25), but it doesn't run on a JVM. it runs on TeaVM, which translates the bytecode to webassembly. for teaching-sized programs that's the same answer real java gives. a few things are different or missing: virtual threads, executors, keyboard input, reflection, files and the network, and catching runtime exceptions like / 0. when a program needs those, run it on a real JDK with java Main.java.
the details, and how the runtime is built, are in src/lib/java.