# Java Notes: Tools

You need software tools to build Java programs. Unless otherwise indicated, all tools mentioned here are freely available, and most of them are open-source.

Sun's Java Software Development Kit
  Sun's SDK (formerly known as the JDK - Java Development Kit) is the most commonly used tool to compile and run Java programs. It's a good compiler, but it has a command line user interface. It is typically used with a text editor.
GCJ Compiler
  This is an open-source Java compiler. It shouldn't be your first choice. Perhaps the greatest strength of Java is the extensive library. Unfortunately GCJ doesn't support all library classes, most notably the GUI classes. A very interesting aspect of GCJ is that it compiles directly to machine code instead of to Java Byte Code. The only reason I include it here is to take part in the online Valladolid Programming Contest you will need to use this compiler.
Text Editors
  Text editors are used to write the source programs. Some of them link directly to a compiler, but often you will run the compiler as a separate step to compile the source program.
IDEs - Integrated Development Environments
  IDEs are systems that contain all the tools that you need to edit, compile, and test programs, manage projects, .... An IDE is the high-productivity tool professionals use to produce programs. They may not always be the best choice for students because learning the IDE in addition to the language can be a burden on the student. They also hide the underlying mechanisms that students should understand when they are starting to program, but don't want to worry about later.
Other development tools
  As your programs move beyond simple student programs, additional tools will be needed. Some of there are included in IDEs, but many are used independently.
  - Code beautifiers are great for indenting your code correctly. I rarely use them because I'm compulsive about indentation from the beginning, but there are a lot of links at mindprod.com/jgloss/beautifier.html. I've used Arachnophilia, NetBeans, and Artistic Style at various times in the past, but am not sure which is currently the best choice.
  - Style and Correctness Checkers can be used to detect or eliminate problems in your programs.
  - Ant is the Java replacement for the traditional Unix make tool for automating the compilation process. At the simplest, one plain ant command recompiles all source files which have been changed since the last compilation. It can, however, automate all aspects of development.
  - javadoc creates documentation automatically from special comments in your Java programs. It comes with Sun's JDK.
  - JUnit (www.junit.org) is the single most important tool for running unit test cases. Other tools can be used for testing GUI interfaces.
  - ZeroG or IzPack create an installable Windows program from your Java programs.
  - PMD (pmd.sourceforge.net) - Checks code for errors.