IntelliJ IDEA (advertised here on JavaRanch) is the best i've ever seen, and is absolutely beautiful to work with. Expensive though.
jEdit text editor is great if you are looking for something to just edit code with and don't really care about more advanced functions - it doesn't have a built-in compiler though so you'll have to do that from the command line, which I've found gets really old once you've got three or four classes.
There are a few other really good ones out there - you might want to check out Java Studio Creator - the new IDE from Sun - I haven't used it but it is probably pretty good. NetBeans is alright too.
There are some great reviews of IDE's and lots of other Java software at the Java Developer's Journal site you may wish to check out. Post again if you like with what you find, I'd be curious to know what you end up choosing - I went through a long search myself before coming to intelliJ IDEA.
It's really a matter of personal choice - some people just like to work from the command line with vi or something on Linux and some like myself prefer a nice attractive gui. [ August 17, 2004: Message edited by: Ray Muirhead ]
Too many people learn a tool instead of learning to program
extremely good point and one I've argued many times! Where I work we run a lot of internal training courses, including one in Java which I run over 3 days. One of the biggest complaints aboutt he course from the delegates is 'why are we working with a basic editor and the command line? wouldn't this be quicker in JBuilder etc etc?'. Some people on the course do find it difficult to accept my explanation that this way they learn Java, not the IDE. When they're ready they can go and install whatever they want, but not on my course
I use either just a text editor (TextPad at the moment, but could be anything) and I also have NetBeans which is nice for the little popups when your not sure what methods are available for the object your using, but at the same time it's not too intrusive..tis also free. I did try and use JBuilder, but I think my old ways are just too ingrained and I hardly use it now, even for GUIS!
In my experience JBuilder is far less intrusive than is Netbeans
At least you get real two-way development so you can change the code and see the GUI change instead of having all your changes undone by the IDE when you go into the GUI designer (or did Netbeans correct that "feature" in a later release?).
I don't use the GUI tools as I do very little GUI work and usually just simple stuff which I code by hand quicker than figuring out how to do it in the IDE. I basically use NetBeans as a text editor but like it because I can just r-click "compile all" and I also get the available method pop-ups when I type the dot after the object reference I find JBuilder a bit overwhelming and just never got along with it.