Notepad + command window until you master the basics.
JCreator Lite for help without taking over control.
Eclipse or NetBeans for professional developers.

I agree with JamesCherrill here, but maybe one thing I would add as a posibility for beginners:
Notepad++ => this allows you to have several files open at the same time, by using tabs. a lot easier to switch between them than switching between different screens.

I agree with both of the above.
An IDE makes too many things appear to be magic. Best to do it manually a few times to see what is going on before going on to an IDE.

I disagree absolutely with the two previous posts.

Well, actually I don't. I agree completely, but that's really boring.

I guess you especially disagreed with this:

I agree with JamesCherrill here

:)

I would like to put in my two cents.
I took a java class the first time in 2003. I was told in class to use cmd and notepad only. After a week, I dropped the class.

I quit my job in 2007 in a bank. I decided I wanted to learn programming. I went back to school, enrolled in a Java class. I was introduced to jGRASP (an IDE). I am at the end of the second year of my studying CS now. Just yesterday I started internship/probation in a firm as a Java programmer. Meanwhile, I dropped jGRASP and use no IDE at all now. :) you judge!

I disagree entirely with the notepad part. Haven't tried notepad++, so I can't say about that, but if you learn some flavor of vi (vim, gvim, elvis...) you might find that it's worth the effort to use a full-featured text-oriented editor.

Some people like Emacs, but I don't talk to those sort of people.

The advice to learn to operate in a command-line environmentl, I agree with entirely.

You'll ultimately want to add a few things to your toolbox: javac, a proper editor, ant, and svn to back up to a local repository. For now, you just need to focus on learning the java syntax, and the best way to do that is to code in the editor of your choice compile with javac, and run with the "java" command.

I used Notepad/cmd for my one semester of Java in college, but when hired by a company I was introduced to Netbeans/Maven/Vaadin/Liferay and I wouldn't have it any other way now. Also a big fan of Notepad++

I've always used Eclipse and I don't think it's hindered my ability to learn java at all

For beginners Netbeans IDE is the best.Because in that showing suggestion on typing code and this is very useful for beginners.

this is exactly why netbeans is BAD for beginners (bad NetBeans, bad!!)
the ide writes the code for the developer which can come in handy if you need to get some parts fast, but it doesn't help a beginner to understand what he's actually doing.

just an example:

if a beginner would start out immediately using NetBeans and becomes a bit a "pro" in developing GUI applications. now let's assume he gets hired to create GUI applications, but, since those with admin rights are not present for the first days, and he's not able to install an IDE, so all he has is a text editor and the jdk installed...

how long do you think it'll take our "pro" to create a simple GUI app?

sure, NetBeans allows you to 'click-drag-click-click-click-drag-click' et voila, GUI finished, but does this mean the developer knows how to write one, or understands how the events and listeners work?

Comments
agreed

Thank u all 4 de views :), let me start with Notepad + command window since it has more votes
Thanx....... :)

J Creator is a powerful lightweight Java IDE. Perfect tool for programmers of all levels, from programmers to learn Java experts. Dr Java is a lightweight development environment for writing Java programs. It is primarily designed to provide students with an intuitive interface and interactive capabilities to evaluate the Java code.

nope .. best to start is still using command line, so you get a taste of what you actually have to go through to compile and run a java program yourself, by using the javac and java commands, not by just 'click' on the compile&run option.

I've been trying today to help a couple of OPs to understand the difference between compiling a program and executing it. They had no idea when either step was done. They thought the IDE automatically took care of it.

I've been trying today to help a couple of OPs to understand the difference between compiling a program and executing it. They had no idea when either step was done. They thought the IDE automatically took care of it.

all of them professional developers, I guess? :)

well ... until my IDE wears a nametag saying: "Hi, I'm Eugene, how may I assist you?" I think knowing the basics comes in pretty handy

I used Ready to program (a really crappy IDE). you cannot mistype anything, it doesn't show you corrections. I suggest you use that, just for the compiling, it is Java 1.4 though. You could use it for the basics. Like I said just use it for the built in compiler. Then once you have it down move on to eclipse or netbeans.

you cannot mistype anything, it doesn't show you corrections.

bit of a contradiction in terms, wouldn't you agree? how come you can't mistype if you don't see corrections? is it with auto-complete? that's just the point. learn to program instead of learn to have an IDE write your code.

I suggest you use that, just for the compiling, it is Java 1.4 though. You could use it for the basics. Like I said just use it for the built in compiler.

nja, but the again.. the "basics" are compiling and running using (easy form - duh )

javac MyClass.java
java MyClass

there's a lot to learn about this way to working. how to integrate a classpath in your command, enabling/disabling assert statements, ...

the whole point is NOT to use built in compilers when you start. just like you don't learn to drive a car by taking a taxi now and then, get behind the wheel yourself and see how that works out.

it is Java 1.4 though

Working with Java 1.4 would be a complete waste of time, given the extensive and important changes in the language in 1.5.

I've been trying today to help a couple of OPs to understand the difference between compiling a program and executing it. They had no idea when either step was done. They thought the IDE automatically took care of it.

Which it does. That automagic IDEs perform is what prevents people from learning when they employ an IDE.
They learn to use the tool, not the language.
Then, when confronted with a situation where that tool won't be available, they fail.

A tool should never get in your way, and an IDE gets in the way of learning.
So when learning, don't use an IDE (unless of course you're specifically trying to learn that IDE).

This article has been dead for over six months. Start a new discussion instead.