Java Notes

IDEs

Summary: There are many good, free, IDEs (Integrated Development Environments) that provide substantial advantages over the use of simple text editors for Java program development. The IDEs listed here are available for Windows although many of them are also available for the Mac.

IDEs are the most efficient way to develop programs, but they are often not taught in text books. This gives the false impression that they aren't important. Why aren't they covered in most textbooks? There are too many choices, it takes some time to teach / learn to use one effectively, and instructors feel time spent learning one particular IDE is not central to learning programming. Another argument is that IDEs hide details that may be important to learn about. These are reasonable arguments, but the student often ends up without knowing how to use a good IDE, which is an indespensible skill for the real-world programmer.

Full-strength IDEs

A full-strength IDE provides extensive programming support for editing, project management, debugging, building GUI interfaces, etc. Surprisingly, most of these are now free.

Productivity. These offer far more than is required by the beginning Java programmer, and their extra complexity is a barrier to learning Java in the beginning. After your first programming course, however, they give a big boost to productivity.

Built on JDK (Java Development Kit). All of these require installing the JDK (free at www.oracle.com/technetwork/java/index.html) first.

NetBeans - www.netbeans.org
This free, open-source, IDE is a good choice. It does continuous compilation, which shows jagged red lines under erroneous statements as they are being entered. There is also brace matching, refactoring, reformatting, debugging, GUI form editing, and much more. Can also be used with Python and some other languages.

This has been my primary IDE, but I'm using Eclipse more and more.

Eclipse - www.eclipse.org
The free Eclipse IDE is perhaps the most popular. Earlier is was quite difficult to get configured, but recent versions are easy to use. It's easiest to do Android programming with Eclipse so I've started using it more than NetBeans.
IntelliJ IDEA - www.jetbrains.com/idea
This is excellent. It gets more favorable reviews than any other IDE. The full version is very expensive, but there is now a free "community edition". I haven't tried the free version.

The following full-strength IDEs are not the most popular, but may have features that make them best for your situation.

JDeveloper - www.oracle.com/technology/products/jdev/index.html
Oracle's JDeveloper is available for free. It looked OK in my one quick test, and seemed very fast.

Half-strength IDEs - Popular in beginning courses

These are simpler to use for small projects, and typically don't have nearly as many features, eg, no graphical user interface editor.

DrJava - drjava.org
A simple, free development system. It has several very strong points.
  • Indentation. I especially like it's ability to indent the source program (select the code then hit tab). This is a chronic issue for many programs, and having the proper indentation substantially increases the readability.
  • USB drive runnable. The DrJava .jar file can be run from a USB drive (Flash drive, thumb drive, memory stick, ...). This is an important factor if you program using several computers (student lab, home, work, ...).
  • Double-clickable jar files. You can make .jar files that can be run outside DrJava. To do this, you will have to create a Project in DrJava.
This would be my first choice for student programming.
tIDE - tide.olympe-network.com
This looks very nice, especially because it has the quality checking tools built in. Can be loaded with WebStart, or run from USB drive. Used it only briefly.
JCreator - www.jcreator.com
Free LE and for pay Pro versions. I use it sometimes, and it's OK. Curiously, it's written in C++.
jGRASP - www.jgrasp.org
Many like it. The Control Structure Diagramming could be nice, but it reformated my program in undesirable ways. Easy to install, but it rudely wants to be the default program for all kinds of files. Free. My enthusiasm is limited, but it's popular.

Portable. This can be run from a USB Flash drive.

BlueJ - www.bluej.org
BlueJ creates a nice development environment, which allows easy evaluation of isolated statements, inspection of classes, debugging, etc. My reaction to early versions was negative because it couldn't create "real" programs. That has changed, and hewer versions addressed most of my earlier reservations. My positive view is the result of only 30 minutes of testing, but it looked good. There is a textbook which is customized to use with it, which was very nice in many ways, but taught no GUI programming. It can also be used as a NetBeans or Eclipse plugin!
SyncJEdit - www.syncedit.com/software/jedit/
I haven't tried this, but it looks like it has some interesting features.
zBlueStudio - www.zbluesoftware.com/zbluestudio/index.cfm
Another interesting IDE that I haven't tried.
Others
There used to be many more, but keeping up with current Java releases caused many to drop out. But new good ones appear from time to time.

Editors that run javac

Some programming editors will compile Java by linking to Sun's JDK.

TextPad - www.textpad.com
[These comments apply to the 4.7.3 version which was available for the last 3 years, and can still be downloaded. My first trials of the new 5.0 version didn't go well.]
Good, but doesn't indent program. Has brace matching feature. You can buy it, but can also continue to use trial version with occasional nags. If the Java SDK is installed first, TextPad allows compilation of Java programs from the editor. Minimal, but a common choice because of the simplicity.

How should you choose an IDE?

My favorite happens to be NetBeans, but this doesn't mean it's best for you. Some factors that might be important are:

Portable Java development systems

The term "portable" here means that they can be run from a USB Flash drive. The following are known to be usable (perhaps with some issues).

If you have no compelling reasons for another choice, I recommend NetBeans. It has nice features that make coding easier, and once you become familiar with its Graphical User Interface (GUI) editor, you can create GUI interfaces very quickly.