Applet Builder (apbuilder) is a server side process that builds newly uploaded applets. It cooperates closely with Watchdog that checks contribution for very strange-looking, potentially unfriendly code.
Ultrastudio.org build system runs as separate process. After the new task is received, the builder process starts in the background. Depending on the load, it may take from several seconds till several minutes to complete the build, producing a ready to run applet .jar archive. If the process hangs, after time out the build is registered as a failed build. The builder will take dependencies on the specified libraries into consideration.
All uploaded code is only built once. You cannot upload the same code again and force to recompile it as this does not make sense. If you think you should do this, make some tiny change in the code, maybe add some comment.
When the build succeed, Applet Builder creates the code review pages where it posts any relevant messages of its own. If the build fails due any reason, no review pages are created and the error messages and other notes are posted to the code home page instead.
Applet builder understands Java 1.5 code (including annotations, generics and so on) and produces the 1.5 compliant classes. These classes will not run on virtual machines that only support older versions, making sure that only recent systems with many important security enhancements will be used by the visitor.
Ultrastudio.org build system is based on OpenJDK, with the compiler extended to check every invoked method in the system libraries (java and javax packages) against the access control list in the database. The sun package is not allowed as is varies between distributions. As the same compiler is used both for checks and for build (and it is actually the same process), it is very difficult, if possible at all, to call the method so that the check system would not see it calling. One of the ways to do this is through reflection but reflections are complex constructs easily visible in the code, and there are basically no legitimate reasons to use them in applets. Calling from the derive class as inherited method also does not shield from detection.