Java IDEs? 679
Billy the Mountain asks: "In the startup company I'm in, we just got a new president and she asked us about ways of increasing developer productivity. We develop Java applications, servlets and JSP. I don't use an IDE. I use an enhanced text editor, EditPlus, because I like its color coding of keywords. I guess what I'm asking is what Java IDEs do you use and what features do you like best?" If you were to build a Java IDE from the ground up, what features would you include?
File Linking (Score:2, Interesting)
Yeah, it's a hairy feature to implement, and one that that I haven't seen much of outside of HTML environments, but file hopping when building your own libraries gets to be a pain in Java!
My 2 cents.
visual cafe, forte (Score:2, Interesting)
visual cafe will cost you, but is quite good.
honestly, J++ was my favorite (i'm ashamed to admit), but i certainly would recommend it any more
metrowerks has one, too, but i wasn't very favorably impressed with my limited usage of it.
lots out there (Score:5, Interesting)
I've also used Codewarrior for Java [metrowerks.com], and have been pleasantly surprised. It's a top-notch environment. Metrowerks has done some fine work.
Forte/NetBeans [sun.com] has a way to go. What a pig. 3.0 has some nice speed and stability increases...
If you don't need a really fancy setup, try jEdit [jedit.org]. It's an open source text editor with syntax coloring(60 file types!), and the plug-ins avaliable give you plenty of project management features.
And a dark horse: IntelliJ [intellij.com]. I really like it. Lots of "enterprise" features bundled in a relatively cheap package.
What makes a good IDE, aka: Netbeans is real close (Score:3, Interesting)
* Open source -- I want a new feature, I add it. I see a bug, I fix it.
* Code completion -- As much as you might hate M$, there ain't no faster coding that Visual Basic, and most of that is due to Intellivisio -- ur, Intellisense. If the IDE finishes my lines for me, that's half the battle right there. (Thanks, Mr. Ness)
* GUI RAD -- Look, I want to program the nuts and bolts, not spend tons of times making a beautiful set of buttons. A RAD lets me WYSIWYG my way to a great UI.
* Syntax highlighting -- as stated in the post, I like to see what's a string, what's a comment, and what's code. And see it quickly.
* The exact same UI cross platform -- When I go from Windows at work to a UNIX workstation down the hall to my iBook at home, I want to use the same tool to program my "write once, test -- ur -- run everywhere" code. My code's crossplatform, why shouldn't my IDE be too?
Hey, lookit there, I just described http://www.netbeans.org !
Sun funds much of the development team, so I know I have support. But before Sun gets their hands on the code to turn it into Forte, I've got full access. Was actually reading
Only drawback -- I sure wish this was written in assembler.
Forte for Java (Score:2, Interesting)
The only problems I've had with it are a lackluster editor, which doesn't do as much syntax coloring as I would like or handle indentation very well (you have to right-click and choose to re-indent/nice-up the code).
But one of the nice things about Forte is that it uses XML and plain text for all the project files. You can copy the files from one computer to another and even between platforms and you're good to go as long as you have a copy of Forte for Java over there.
Re:IDE - Editor or round trip engineering tool? (Score:3, Interesting)
All developers should be versed in reading UML and drawing out pseudo-UML on a whiteboard or a sketch page or whatever. But it's a needless step (for some developers, not all) in the development process when it comes down to a developer writing out the code for his/her component.
So, I like Emacs+JDEE (for myself) and Eclipse (as a suggestion for others that don't like emacs). ArgoUML is becoming a decent free UML tool. UML diagrams should be generated from the code for new developers to be able to understand a developed system. High level architectural docs should be UML or better yet, simpler pseudo-UML.
VIMIDE (Score:2, Interesting)
NetBeans has ANT integration, Together does too, but they all have sh***y text editors and are sluggish.
My suggestion is to buy a copy of Together CC 5.5 for laying out projects (give it to your chief architect), and let the coders use whatever they want. If you are doing a project which requires Swing, you also might want to use JBuilder. VisualAge is good but generates terrible code. It really helps to use one of those tools when laying out panels.
Re:Java IDEs (Score:4, Interesting)
I've also had good results with JBuilder, with VisualAge (for projects where I have no need for source code in files, which is not many of them...), and with plain old text editing.
Re:Comments on Java (Score:2, Interesting)
Are you serious?! I don't think Java is on its way out, it seems to be gathering steam. Look around -- many more companies are distributing signifigant products built with Java. The installer technology is finally getting to the point of being useful as well. I've shipped products built in Perl, C/C++. Java, VB and even some early access stuff in C#. Of all those, I see Java as having the most promising future.
lxr may help... once your code is in CVS, at least (Score:3, Interesting)
http://sourceforge.net/projects/lxr
It looks like they're nearing a 1.0 release and have got the database integration and CVS integration cleaned up a lot lately. You'd still have some work to do if you wanted a fully-automated in-editor version of what you're asking for, but it would be fun stuff to implement, I think most of the drudgery is taken care of by now. Wow LXR has come a long way!!!
When I was a full-time Java/C/C++ developer I often used DDD + XEmacs + the combination of LXR and CVSweb to keep my wits about me and could therefore point other developers to whatever I'd done recently, how it worked, and what it involved. Now I'm more of an admin/loose cannon...
Haven't used LXR in a while and it seems like all my code has degenerated into componentized Perl, C, and Bash lately, but I still use CVSweb, JavaDoc-style docs (POD, JavaDoc, PHPdoc, Doxygen, whatever works), and a syntax-hilighting editor (Vim or XEmacs) whenever I write anything that'll be deployed for more than a week.
I know that the Gnome and Mozilla projects use LXR integrated with CVSWeb, but don't judge it harshly just because of that
Try this.... (Score:2, Interesting)
In short figure out the actual tool (the Java language) and the ways to use it effectively rather (patterns and best practices) rather than waste the time and money learning to use a tool which may do "something" for you but ultimately rests between you and the tool you are working with, Java. Besides, you've got at least person that department that is using either vim or emacs and there's gonna be a fight when you come for their editor.
Re:Together (Score:2, Interesting)
IDEs & tools I have used... (Score:3, Interesting)
I have used Together, and I usually dump new lumps of code in to get a handle on them. I don't use it for day-to-day editing.
For straight Java that winds up being packaged as a JAR, I use VisualCafe. The JAR packaging tool is very nice. I'm a "real coder" and don't use the debugger really, so I can't comment for those who have had problems.
I have been investigating NetBeans and believe that for machines that are 650MHz+ it's fine.
Finally, the most revolutionary tool we use, which has radically improved our development is Macromedia DreamWeaver UltraDev. For our JSP work, I can't say enough nice things. It does an amazing job of parsing existing code and adding new code without reformatting or destroying custom tweaks. We have done a few things, like standardizing on a JDBC-driver level connection pooling mechanism, and it works great.
Regardless of your tools, I cannot recommend adding memory to your development machine enough. No matter what you are doing, it's a lot more productive to be an alt-tab away from your other tool than having to go through a disk grind to load another app. 256MB would be a minimum. And before you squawk, it's cheap! Damn cheap!
As a final note, we use CVS for version control. We mostly do development on Win2K and deploy to Linux and Solaris. Finally, we are really looking at Mac OS X closely as MySQL, Postgres and Apache look better there than on Win2K.
All in all, it's a bunch of tools, but I feel about as productive as I have since THINK Pascal (bonus points if you remember that one).
Re:Who needs an IDE? (Score:2, Interesting)
Anyone on a large scale project does. Let's throw out some useful buzzwords: distributed, scalable, flexible, etc, etc.
Projects that have those types of requirements and have a lot of developers should be using a good IDE, that contains an excellent debugger. My view is that the debugging feature is what adds the most value to any IDE so long as the IDE does not skimp out on all the basic (and advanced) text editing features.
Just my $0.02
Re:Debuggers (Score:3, Interesting)
than a good IDE should have good debugger support...
I'm not saying that there shouldn't be a debugger at all. In fact, I think I said that occasionally one is useful (particularly for analyzing core dumps). I'm mostly taking issue with the AC who ignores the advice anyone who doesn't use a debugger, which is absurd.
I know I'll never convince people who use debuggers, because it sounds so counter-intuitive, but I have to put out the seed every now and then. I used to go through it with my employees all the time. It used to drive me crazy watching them stare blindly at the debugger, when all they had to do was put in some printf statements and then analyze the program flow to see the problem.
And that's the big advantage of printf-style debugging. It lets you see the flow of your program at a higher level, rather than micro-watching it at the line-by-line level. It lets you selectively output what's important, rather than having to deal with all the trivial details. Also, when you leave in all the tracing, you get a debug log everytime you run it to see what happened when something else blows up.
Oh well, I know from experience that this is one of those debates that you can't win. :)
depends on what you want (Score:1, Interesting)
JBuilder is much better, it doesn't force moronic structures into your code, other than always having a try-catch block around it's jbInit() methods - unlike Cafe, though, you can remove or rename the without problem and they only come up for GUI objects (and aren't a nuisance). It does "real time" rendering rather well with rare exceptions such as with code that has static blocks, interfaces in some situations, or if you have no empty constructor. Code lookup is good, macros, you can write plug ins for it. Overall pretty nice and it isn't particularly slow, at least on machines from the past couple years with decent RAM. Also, it's written in Java so it runs on Windows, Linux and Mac, although the Mac version isn't useable yet because the Apple vm anti-aliases the text so it looks like the text is drawn by crayon - that's Apple's fault, actually. Last year when I tried it, Codewarrior wasn't quite up to speed but I would take a look at it now just because their Apple IDEs are pretty high up there.
As far as non-GUI work, well, that, to me, is mainly just personal preference, not so much based on feature sets, because most people recommending things like jEdit and such aren't working on large scale applications, or if they are (and are at the point where it can really be considered large scale) they must have a unique way of managing their different projects and packages. Anymore I'm used to using a system consisting of CVS, ANT and JBuilder for file, package and version management and I haven't seen anything else easier for a group environment.
Given my GUI oriented job, I'm used to using jBuilder and am relatively happy with it. It has struck me that I haven't heard of an open source Java IDE (writ in Java) yet, though I honestly haven't looked much, which I happened to have been thinking about recently. Personally I'd love to see something out there to make borland fix what bugs remain and I'd be interested in how something like jBuilder is made, since there are definite memory and speed hurdles to overcome - which jBuilder does rather impressively (though I use a PIII 850 with 368MB RAM).
Java IDEs (Score:1, Interesting)
If your machine has the resources (fast processor, and at LEAST 256MB of RAM, preferrably 512MB then I would suggest Sun Forte or Netbeans. Netbeans usually has the latest stuff since it's the open source version. The latest version, 3.3 beta2 has support for XML, JSP, XSL, servlets, and has integrated ant, junit, cvs, etc... very cool
JBuilder is good, but never been my favorite.
If resources are limited, then I usually use either vim 6.0 or xemacs with the JDE package installed. Xemacs with JDE is nice because it's not a resource hog, and comes with a nice class browser.
Another good one, if you're not an vi or emacs person, and prefer the newer IDE type editors, is Visual Slickedit. This has a VERY integrated class browser that supports several languages including java and C++, and even supports C symbol browsing which can make finding functions very nice. The only thing I don't like about Visual Slickedit is the way it integrades version control systems and it's lack of support for XML.
Java the UNIX way: Ant and vim (Score:2, Interesting)
Ant [apache.org], of course
Re:Together (Score:2, Interesting)
The best version in my opinion is 3.0 (I don't know if you can still buy it, but it is reasonably fast and does everything that it needs to do... later versions are somewhat buggy it seems).
Also... it is made with Swing which is a huge drawback... it runs just as slow on my dual 1.5 GHz Athlon box as it does on my 550Mhz PIII... so something must be wrong with the code...
But overall, what Together does is so amazingly useful that I can ignore the sluggishness. The way it keeps the model in sync with the code is worth a fortune in enhanced productivity. It's the best development environment I've ever used... If only they could re-implement it in C
Re:Some decent advice here... (Score:2, Interesting)
> company to use the same IDE.
It's interesting to note how many dev shops force their developers to use a particular operating system too - this is gradually changing but what I really want to do is develop in the way I am most productive and making me use windows + JBuilder cos everyone there does is pants at best, unproductive and expensive at worst. It's got to the stage now that I take my laptop with me. (Linux/emacs watch me alt-meta-shift-cokebottle [houghi.org] those naughty windows boys)
Use what the developers like. (Score:5, Interesting)
What is good to standardize is directory structures and locations of projects, which helps you define the environment for the build a little easier.
The setup that seems to work well for us is something like this (some things are new elements I've not quite tries yet):
<DIR - project root>
build.xml (ant build script)
setEnv.sh.default (keep this one in source control and people can modify it locally once for odd setups - called by
runAnt.bat ( does all of the stuff the bashrc does, but in the way only a batch file can. Ick! Used by those poor souls without Cygwin)
<SUBDIR build> - generated by ANT (compiled class files go in here)
<SUBDIR source> - holds all source code
<SUBDIR other...> any other subdirs you might need (resource, deploy, etc.)
Visual Age for Java (Score:3, Interesting)
Some IDE Experience (Score:2, Interesting)
Here's a few notes about each one I've used:
Emacs.
It's emacs. If you don't know about what emacs can do, you'll be just as happy NOT knowing what emacs can do.
Visual J++.
It doesn't suck as hard as you'd expect, but it does suck. It has the standard "auto-complete" functionality you'd expect from any stadard IDE, integrates with Visual Source Save (which DOES suck, but still beats no source control tree at all) And promotes the MS JVM (Java 1.1) which does GUI reasonably well becasue it wraps MFC. Adding numerous JAR files and generating JAR files in as akward as tyiping this sort of info in a CLI. It chokes horribly if you change windows associations for
Codewarrior (v3.0)
I found this IDE at about the same par as VJ++. If you want to run Java on a classic MacOS however, you DO want this in a repitoire of IDEs to use. It may have gotten better over the last 2 years.
Forte (v1.0, 2.0, 3.0, all Community Edition)
Wow. If your standard desktop has MHz and RAM to burn--and lets face it that stuff is cheap these days--This is the most versatile and comprehensive IDE I've used. It has half decent XML generation/integration tools, auto-complete, standard library integration, multiple JVM integration, GUI-generation tools, JSP syntax parser and JSP/servlet engine, debugger, CVS integration, a javadoc parser, to enforce proper documentation, multiple filesystems support and its package management is second to none. Rational makes an integrated UML tool. And NetBeans makes this easily upgradeable and enhanceable in any number of ways. There's other good stuff too, but this is the stuff I really look for in an IDE. On the downside, it has a steeper than average learning curve because it offers SO MUCH, and this thing is a resource PIG (It occupies 90MB of RAM on an empty project, just idling).
JBuilder ( v3.0, 3.5, 4.0, 5.0, All Editions)
JBuilder is awesome. If provides MOST of the usefulness of Forte (see my list of cool Forte stuff) without all the bloat. Its faster, lighter, and more intuative in general, and is the one I use, whenever able. It has a few uniqe features, like an-auto implementation for children of abstract classes or implementing any number of interfaces. Its free version is ample for any small project, but to integrate this thing with CVS, you have to fork over thousands for the enterprise edition (not that you can't use CVS from the CLI itself, we're talking about the IDE doing it for you).
Visual Age (v3.0)
Its written in smalltalk. Who knew? I never took to Visual Age, though I know people who swear by it. It seems to provide all the standard stuff, but for me it has one fatal flaw--It doesn't work with flat files. It does all of it's persistance without flat files (forcing all Visual Age projects to have revision control), and this makes working with multiple IDEs (3rd party tools) vitually impossible. Again, this may have changed in the interem, but I'm already hooked on JBuilder.
In general I use JBuilder, because I like it the most, but on occasion, I load Forte to get some functionality JBuilder doesn't provide. Both support dynamic file loading, so changes done by one and saved are instantly noticed (option to reload) by the other. JBuilder is the best IDE for working on entirely separate projects in parallel, or for creating a new one based on an old one (you can switch projects using a single menu).
I reccomend both of them, and USING both of them.
If you have to pick one over the other, make sure you've done at least a weeks work with each.
I would model any new IDE's after both of them. JBuilder is fast, and light, and has the best editor and a well thought out interface. But it does lack some common usefluness, like code auto-formating or Forte's javadoc parser or XML/DTD tools.
Just me $0.02