# 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 altho 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.

## 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. All of these require installing the Sun JDK ( free at java.sun.com) 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.

  This is the IDE I use for my own work.

Eclipse - www.eclipse.org
  The free Eclipse IDE is perhaps the most popular. "The Eclipse IDE can be a little daunting to the uninitiated" is a quote from John Montgomery who has some tutorials. See Using Eclipse for Java Programming. Highly recommended by many.
IntelliJ IDEA - www.jetbrains.com/idea
  This is excellent, but expensive. It gets more favorable reviews than any other IDE, but certainly isn't worth the price for course work, not even at the $99 academic price.

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 now available for free. It looked OK in my one quick test, and seemed very fast.
Borland CodeGear JBuilder - www.codegear.com
  Borland produced some very good IDEs, but they've had a tough time competing with the free IDEs. They've spun off a separate company, CodeGear, for development tools, including JBuilder. CodeGear offers a free version of Turbo JBuilder. Their IDEs in the past have been very good (I've purchased several), and I hope this is still the case, but I haven't tried any of their recent products.

## Half-strength IDEs

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 (thumb drive, memory stick, ...). This is an important factor if you develop program on 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 - snowmail.sn.funpic.de/tide/
  This looks very nice, especially because it has the quality checking tools built in. Can be loaded with WebStart, or run from USB drive. However, running it is unobvious, and it isn't easy enough to recommend, yet.
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 couild 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. I'm not entirely enthusiastic about it, but it's popular.
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:

- If you're already using a full-featured IDE, stick with it.
- It's good to have a support infrastructure - use whatever your friends or coworkers are using.
- Special features might be important to you. Each of the major IDEs has features that the others don't.

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.