Hey guys im getting back into Java after a break from programming.

And i was wondering what is the best integrated development environment for running java.Im sure there is no one Best, but your input would be greatly appreciated.

NetBeans is really good. It has a ton of features, most of which I haven't even touched yet. For simple programming projects, I like Jcreator. It's very clean and simple, and works very well. Eclipse and Jgrasp are other popular choices that you may want to look into.

vi and javac is my environment of choice, but I use Eclipse at the day job because they require me to work on their Windows machine. Eclipse is not terribly painful, but I find its attempts to help me quite irritating. I'll write my own code, thanks very much, I don't want some machine throwing suggestions at me.

If you're just starting out, you should certainly not be using an IDE, any more than you should use a calculator in a math class. The conveniences provided by an IDE might be useful for someone who knows what they're doing, but they will prevent you form learning things you need to know if you're just beginning.

IMHO, at any rate.

If you're just starting out, you should certainly not be using an IDE, any more than you should use a calculator in a math class. The conveniences provided by an IDE might be useful for someone who knows what they're doing, but they will prevent you form learning things you need to know if you're just beginning.

IMHO, at any rate.

This is so true, Most decent colleges teaching JAVA make you start in something like textpad which makes you HAVE to understand all the small things you do.

Some universities make students code in Notepad/Wordpad. Asking students to use an editor which doesn't go syntax highlighting is a sure shot way of "frustrating" the hell out of students and making them hate the course.

I personally use Eclipse (work) / gvim (home).

BTW, it's not "JAVA" but Java.

Edited 5 Years Ago by ~s.o.s~: n/a

Some universities make students code in Notepad/Wordpad. Asking students to use an editor which doesn't go syntax highlighting is a sure shot way of "frustrating" the hell out of students and making them hate the course.

... or making them learn the language top to bottom and develop an eye for flaws in the code. One or the other.
But I wouldn't ask someone to use wordpad for coding. That's just torture. vi(m) is the way to go - or emacs, if you must, but emacs has the terrible habit of breaking into song or starting your computer up like a motorbike and driving off if you hit the wrong key combination. :)

... or making them learn the language top to bottom and develop an eye for flaws in the code. One or the other.

True; but language is something students would never have control over, at least those who are interested are bound to download a sane editor and work in it rather than following the footsteps of "notepad lovers".

I'm not sure as to why Smalltalk isn't the language which is used for teaching OO to students. Maybe teaching Java is a way of preparing the students for the enterprise world out there. ;-)

Emacs is on my TODO list but mastering vim comes first. :-)

I've never played with Smalltalk - is it fun?

I suppose the popularity of java as a first language is not unrelated to the fact that it's widely used in business. After all, if you're doing a masters program for people who are going out to write back-end software for financial services, you might as well give them a language that you know they're going to run into in their careers.
But it seems a sensible choice. It's a powerful language with a lot of support (both in terms of libraries and literature, as well as smart people in forums like this one), and the learning curve is pretty good. Would you be surprised if I told you that I wrote my first line of java about two years ago, and before that my programming was pretty much shell scripts and some perl? Java does let you get places pretty fast. I imagine it's got its limits, but that's why you don't stop there - I'm working on scheme now. Learn a new language every year, that was the advice I got from the guy who started me out in java, and I think that's the best advice I've gotten about programming.

Would you be surprised if I told you that I wrote my first line of java about two years ago, and before that my programming was pretty much shell scripts and some perl?

No, Java is in my opinion a "gateway" language. I started out with C++ and never really understood it. Just about a year ago I bought "Java for Dummies," "9 in 1". That book, the language, and NetBeans, was a Godsend. Once Java was learned both directions in programming languages were open, high and low. I then learned Python and C++. Finally, I'm still testing a calculator application in Java that's one of my masterpieces so far. I did it with the coding style where every variable is treated as const/final.

Does anybody know what that's called?

Java is mostly objects like Python is all, has only pointers like C#, writes like C++, and is nothing like JavaScript. These days the user never notices the slight performance drop with an interpreted language, anyway. However, C++ is compiled on a per-platform basis, C# is a Windows thing (I'm almost positive), and Python and JavaScript aren't precompiled at all.

PS: Is Objective C is worth learning?

I started out with C++ and never really understood it.

But you should, really. If not C++ (I admit C++ is a pretty complicated language when it comes to gotchas) then C and the basics of assembly programming to know *how* it works under the hood.

Does anybody know what that's called?

Programming with 'final' in Java to avoid destructive updates is kind of inspired by the "pure functional" languages where destructive updates are avoided. Another thing which can be achieved using final is immutability for your classes.

C# is a Windows thing (I'm almost positive)

No, it isn't.

and Python and JavaScript aren't precompiled at all.

Not entirely true, pyc files are the byte compiled version of your Python source file. Though something like this doesn't exist for Javascript ATM, I'm sure it isn't impossible. You have to understand that there is a difference between the language specification and its implementation though for most of the cases it would be safe to assume that you are talking about the standard implementation.

PS: Is Objective C is worth learning?

Depends on what you want to do with it?

ya NetBean Is Good Tool For Java If your A Beginner You Just Practice It In notepad In At Lest 6-Month And After That You Can Go For IDEs ok there is Number Of Tool In World
Webspeher,Eclipse,J unit,Web logic This Are The Good Tool i Use ok

Notepad? What is this notepad talk? Have you people not heard of text editors? There are two standard ones, vi and emacs. You really should know both well enough to know which of the two you prefer. Or, hell, you're programmers, right? Write a text editor. Shouldn't take you too long.
Coding in notepad might make sense, if the alternative is having your eyes dug out with a runcible spoon, and fresh lemon juice squeezed lovingly into the bloody sockets. Otherwise, no, not when it's so easy to get a well-made editor. (Or emacs. :) )

ya NetBean Is Good Tool For Java If your A Beginner You Just Practice It In notepad In At Lest 6-Month And After That You Can Go For IDEs ok there is Number Of Tool In World
Webspeher,Eclipse,J unit,Web logic This Are The Good Tool i Use ok

No, NetBeans is NOT a good tool if you are a beginner. As being said earlier in this thread, if you're just learning the language, you should stay away from IDE's, especially those that auto-complete your statements. All you'll learn with that, is how to type and click-click-click, instant code, without actually understanding what you're doing or how it works.

After a few months, when you're a bit familiar with the Java syntaxis and you're switching from a text editor to an IDE, you should still start off with one of the simpler ones, that have just the basic functionalities, without the 'generate my code for me' parts.

Something wrong with your shift key btw? :)

No, NetBeans is NOT a good tool if you are a beginner. As being said earlier in this thread, if you're just learning the language, you should stay away from IDE's, especially those that auto-complete your statements. All you'll learn with that, is how to type and click-click-click, instant code, without actually understanding what you're doing or how it works.

Sorry, but that depends entirely on the person trying to learn it. Of course, there are many people who will do what you just said. But also the same, if not more people who want to learn the language, will write some code, using the auto complete, and not even move on until they understand every bit of it.

I'm not completely disagreeing with you, I just don't think it's right to definitively say "this is what happens when people do this". Using an IDE to learn, in conjuction with doing assignments etc., is in my opinion, a fine way to learn.

...that depends entirely on the person trying to learn it.

Quite true. For me not having an IDE to learn new methods is like telling a Python programmer he or she can't use dir(). I think the label of auto-complete is incorrect. Quickly scrolling through a list of available methods, with summaries of what they do, is far quicker than a simple text editor. It's better because skimming through the index of some book that couldn't possibly reference all the classes available to the J.D.K. isn't thorough enough for me. Auto-completing your code does not help you learn, it's a side-effect of what does.

Anything isn't good or bad in an absolute sense. IDE's are a necessity when it comes to professional development since you get paid for each and every minute. The organization doesn't pay you to *learn* but to *develop*. But, when it comes to beginners, IDE's are notorious for making them lazy and taking things for granted.

You'd be surprised at the number of job applicants I've seen who can't name *five* methods of the class they have used all these years. I call these kids the "CTRL + SPACE" generation. :-)

Comments
Bookmarked!
Amen

Yes, it is true that if you want to learn Java, you must start with the simplest text editor available.
When I started learning Java I used Notepad. Then I compile and run it through the command line.
After about six months I switched to JCreator LE (not JCreator Pro), which offers syntax highlighting, it's more convenient that Notepad.
After a while using JCreator, and have much knowledge of Java, I switched to NetBeans, using this IDE has the most convenience especially to Form Editing and code generation.

If you really want to master Java you have to start with its fundamentals and learn every little thing that it offers.
Stay away first from using IDEs because they only make you lazy and not understand Java.
Just think of this: using IDEs are only for business application development and for building applications for a generally very short time.
If you do not race with time, do your best learning Java in the most basic way, here you develop your ability to eye the errors in codes even without compiling it.

:))

Quite true. For me not having an IDE to learn new methods is like telling a Python programmer he or she can't use dir(). I think the label of auto-complete is incorrect. Quickly scrolling through a list of available methods, with summaries of what they do, is far quicker than a simple text editor. It's better because skimming through the index of some book that couldn't possibly reference all the classes available to the J.D.K. isn't thorough enough for me. Auto-completing your code does not help you learn, it's a side-effect of what does.

no doubt that it'll be quicker, but that's a big part of my point. what will someone who never had to look up something do, when he has to develop on a system where there is no auto-complete function?
what if they have to write a program down in notepad, because their employer wants to check their skills? or, for an application interview, have to write it down on paper, without a computer in sight? doing the job quick is a big asset, indeed, but being able to convince some people you know what you are doing is right up there as well.

I guess I don't really need to tell you that, the choice for an IDE maybe personal at home, but at work, it's mostly the employer who decides. so, were he to pick one without the 'let's-auto-complete-and-get-it-done' function, the developers who started out learning with the fancy IDE's will, surprise surpise, not be the fastest

yes, stultuske is right...
you have the option to use an IDE or not,,,,
what's important is that you have the knowledge and can convince the people that you know what you are doing...

:)

whats the diffrence between having auto complete avaible to you and going to sun website and looking at all the avaible methods in that class?

They both achieve the same thing but going to the website will just take a bit longer.

whats the diffrence between having auto complete avaible to you and going to sun website and looking at all the avaible methods in that class?

They both achieve the same thing but going to the website will just take a bit longer.

You need to know where to look. Or better yet you need to think where to look.

Not to mention that sometimes IDEs just create whole files with ready templates without any effort from you. If you are a developer that is good. If you are a student it is not, since you need to learn.

An example is when you go and create a GUI swing with NetBeans. It generates tones of confusing code and the "student" doesn't have a clue how the graphics were created. And when they try to customize it, they look at the source code clueless.
When in fact whenever I write my own gui, the code is much more simple and easy to understand

ajst - sometimes taking more time is useful. All I know is that banging at the keys until a method pops up doesn't seem to produce very good coders, and that's how most beginners seem to approach the IDE.
If I had to guess, I'd suggest that looking up the method, figuring out which one you need, and then typing it into the source file manually forces you to handle it as a mental object, which means it sticks in your head. When I studied cognitive psych years ago, the model presented for memory claimed that an item in short-term memory is discarded unless it is attended to. If attended to, it becomes a candidate for long-term memory - think of a phone number: if you just dial it from a piece of paper, you'll never remember it, but if you recite it to yourself a few times, you're likely to keep it.
If you use auto-fill, you never actually have to pay attention to the methods you use, so you never actually learn them. Take away the auto-fill and you suddenly find you're stuck.

Edited 5 Years Ago by jon.kiparsky: n/a

Yes i agree that to use autofill you must have an understanding first. but say you are not 100% sure of which method it is and autofill pops up and gives you the list you read the methods then still unsure then go to website to get more indepth explantion. there surely is nothing wrong with learning this way?

but then again I've came back to java after not touching it for a couple of years but have been using c# and c++ so have a good programing background so I'm mainly learning the diffrence between the langauges not learning from scratch.

and the good old saying everyone learns diffrently must work here ;)

there surely is nothing wrong with learning this way?

Only that you don't learn the material as quickly or as deeply. If you're okay with that, it's fine. "everyone learns differently" is a nice slogan, but brains really do work about the same at bottom, and time spent thinking about the methods of the classes you're going to be using is time well spent.

ajst - sometimes taking more time is useful. All I know is that banging at the keys until a method pops up doesn't seem to produce very good coders, and that's how most beginners seem to approach the IDE.
If I had to guess, I'd suggest that looking up the method, figuring out which one you need, and then typing it into the source file manually forces you to handle it as a mental object, which means it sticks in your head. When I studied cognitive psych years ago, the model presented for memory claimed that an item in short-term memory is discarded unless it is attended to. If attended to, it becomes a candidate for long-term memory - think of a phone number: if you just dial it from a piece of paper, you'll never remember it, but if you recite it to yourself a few times, you're likely to keep it.
If you use auto-fill, you never actually have to pay attention to the methods you use, so you never actually learn them. Take away the auto-fill and you suddenly find you're stuck.

I agree with jon.kiparsky and I will like to add that auto complete only shows you the method. You can never be sure what it does unless you read the documentation. Many times I use auto complete and then I have to go and read the java docs and see the fine details of that method I plan to use.

Many times people come in this forum with erroneous code asking for help because they used a method that doesn't do what they expected it would and didn't bother to read the docs.

Of course some cool IDEs also provide the javadocs along side the method that appears at the auto complete

well personaly i can't use a method i've not used before with out reading what it is doing. but as i said before everyone is diffrent.

but i defently allways start with a notepad editor i started with notepad then moved on after a couple of months just like everyone else has said. yes its anoying to start with but at least you understand what the IDE is doing for you.

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