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.