My favourite environment is still a couple of shell windows with ant/emacs/vi and friends. But when I look at the J2EE development process I start having doubts about using this 'classic' development environment.
Should I move to an IDE? Is J2EE development becoming too difficult for classic cli tools? What do you use?
I'm not trying to start a CLI vs IDE war here, I just want to know what is most practical.
We do all of our J2EE development without using any IDEs.
vim, jEdit, TexPad editors, make for building, perl
for text processing, xerces/saxon to process xml files
(e.g. deployment descriptors). We use cygwin for windows
It has allways been my opinion that it is very hard
to develop large, maintainable systems with IDEs.
IDEs change too much and too often, they change formats
of their project files and they often try to lock you in
with propraitary widgets, controls, whatevers. As allways,
some IDEs are better than others.
So to answer your quesion, you should choose to use IDE if
that fits your project or development style, but CLI
is just as powerful wth J2EE as it was (is) with C, C++, etc.
We were considering moving to Ant since it is very cool, but
we decided against it at this time since everything works
so why break it.
We didn't find absolutely any problem in developing J2EE appliations with emacs/ant. Rather I would recommend to use them than going for IDE. There are some IDEs which are tightly integrated with a specific application server and specific tools from the same vendor.
You can use ant for automating your build/deployment process. You can have your ant scripts for deploying your application through command prompt rather than going for the visual tools provided by the application server vendor. That saves a lot of time and ensures repeatibility.
But there are some app servers that do not provide with a command line option for doing that. For example in WAS4.0 , you don't have a command line option for installing ears.
In that case you can automate all other process (compiling , creating ejb-jar and creating ear) using ant and depend on the app server visual tool only for installing the ear. For most of the application servers you can do everything through command prompt and hence can automate the whole deployment process using ant.
Down to preference vs. budget vs TTM.
IDE's *may* (I don't want a war either) enable you quicker time to market - in my experience they are very useful when refactoring, intelligent feature rich editors, modelling, reverse engineering capabilities etc.
Despite spending a fortune on together, we still start and stop the application server manually, run all builds outside of Together (there is an antrunner tool, but it takes over the entire PC when it runs as it continually pops windows up, taking away your focus, it is also MUCH slower to build the same thing)
We're using IDEA from IntelliJ. I think it's a very good compromise between simple text editors and big IDE's.
To speed up development you can combine IDEA with Ant and XDoclet.
Eclipse from eclipse.org is good. Plus it's free!
i'm using vi for my main development right now but i've been playing with eclipse for the past 2 weeks and it seems pretty cool. anything that allows you to switch between editors, IDEs without major changes (vi and eclipse for example) is worth it.
you should also consider that sometimes you may not have the right access or enough time to set up the necessary tools for local development. my current project is done on my client's machines but i'm working from my regular office. remote development is a situation where you need to be able to handle available editors and shells.
I prefer to do the build/deploy process through ant (or even good old make) rather than do it through an IDE - it leaves me feeling more in control.
For Java development, I have recently moved from vi (it's available on windows as well) to IntelliJ/IDEA, which is the only IDE I have liked so far. Previously, I have worked with VisualCafe, JBuilder, and Kawa and none of them gave me any productivity improvement over a plain (but powerful) editor like vi and I always found myself drifting back to vi.
IntelliJ doesn't do app-server integration, nor does it have a GUI builder, but purely as a programmer's editor it is unsurpassed, IMO.