Arduino from the command line

If your GUI is written in Java, you should be able to take the Compiler.java, Uploader.java, etc. from the Arduino source and include it. Otherwise, to avoid the use of Makefiles, you could replicate their functionality in your code (it's a question of assembling the right command line arguments). In both cases, however, you will need avr-gcc, uisp, etc. which are the external executables that actually compile and upload the code. These are written in C/C++, so you'll need a version compiled for each platform you want to support (or you could just copy them from the Arduino distribution).