The purpose of this is essentially to provide a safe and quick way to test Java code, whether a linear application or multi-file one. It's been designed with convenience and simplicity in mind.
I originally came up with the idea while playing around with sites such as http://compileonline.com/ and http://ideone.com/ and many others, realizing that they each left something to be desired.
Some common problems include slow compilation, an unreliable server (offline at unpredictable times), limited if any support for multiple files, and just a general lack of flow or convenience for the user.
I've spent a great deal of time trying to come up with a way to create such a service that requires the fewest number of clicks, takes the least amount of time to use, and works in the greatest number of applications. Here's what I've done so far:
- homepage IS the compiler. no sign-ups or anything to use it
- full support for Java syntax highlighting using CodeMirror (codemirror.net) as CSS/JS framework.
- many many themes (dark, light, big, small) for individual preferences
- execution time-limit for those pesky infinite loops
- shortcut keys to compile, import, run, fullscreen, zen-toggle the app (see the More Info tab).
- applet support: auto-detects if program is an applet, puts it in a JNLP launcher popup if so.
- (see default code) splits public classes into separate files automatically
- paste to GitHub or download .zip file with compiled class and jar files in one click
- signs jar files if they are applets so that they can run with permissions
and many more.
Security-wise, this app uses the following policy: http://www.compilejava.net/helper/java-strict.policy
All code uploaded/submitted to the server is deleted automatically after a few minutes. Nothing is stored except for access logs to the web server. It runs inside a virtual machine with 8 cores, so performance shouldn't be an issue.
Lastly, some code samples that may prove useful in testing some of the features of the application:
- the default code when the page loads (HelloWorld, multi-file, try switching the order of the classes... it will always run the file with the main method)
- https://gist.github.com/anonymous/ae37adbcd0ea4da6f9b6/raw/76f8139c5b0c6637ade6c2e97d6bf2d78205a4e2/java_8k53pP.java (a multi-file program without a main class)