Rendering works differently on different platforms. The Javascript runtime must render asynchronously. The JVM runtime can render asychronously or sychronously. However, rendering in a Swing / Java2D context takes places on a daemon thread. This means the JVM will exit if this is the only thread running. The implication is that short Doodle program that does not block the main thread waiting for the Swing thread to complete will usually exit before the output appears. Therefore, at least in the common case, rendering should be synchronous on the JVM. People who want more control can work directly with IO.