The VM itself is very small, it's the OpenJDK runtime that is quite sizeable. Byte ranges are used to only download the parts of the runtime (in terms of bytecode) that are required.
There is no server-side computation. CheerpJ runs code exclusively client-side.