Wow! Thanks for the very detailed and intelligent reply.
It kind of makes more sense when you look at Eclipse as a framework rather than a full blown IDE.
"I think your main frustration is that Eclipse isn't providing much in the way of built-in code generation. Let me provide a basic example. But before I begin, let me point out that I have a strict policy that all my projects are IDE-independent. Eclipse is my favorite tool, but to make it to production, the project has to build under Ant."
Actually, code generation is nice, but not essential. What I want out of an IDE is an efficient, intuitive, productive code/debug/deploy cycle. Also, I don't want to use the IDE as a crutch - I want to be able to put together Web apps and Enterprise apps by hand, using Ant, a text editor, and command line tools. I want to know what is going on, and I want to be able to work with and deploy the project outside of the IDE. The IDE is only another tool to make the whole process faster, more productive, and more enjoyable.
"I want a new servlet. I've created a new Java project, and set up the project properties (build libraries) to include J2EE libraries so it'll know about servlets and JSP tags. OK. First gripe. Why did I have to do this manually?"
Actually, I don't mind having to do that manually. My problem is that I have been unable to do it manually while following the documentation and various online tutorials to a tee. In each case, the steps go well, up until it does someting that is not documented or the tutorial does not mention or deal with. What ensues is usually at least an hours worth of tinkering, doing more searches through the documentation, finding tutorials on how to overcome the bump I just hit in the tutorial I'm already following, or just banging my head on a wall, and so on and so forth.
I'm quite happy to just use a customizable framework, as my trusty assistant, and manually configure stuff, and not rely on code generation and what not. It's just that I want to be able to do that stuff without endless dead ends. The problem is that with Eclipse none of it seems to be well documented, and the interface/options and process flow is very non-intuitive, at least for me. As I already said, I've been able to do web apps, EJBs, etc, manually without an IDE. That process was much easier, more intuitive, faster, and ultimately more successful than it was with Eclipse. In fact, with Eclipse it has always ended in frustrating failure.
"OK, so the basic project's in place. Now I create my servlet:
Right-click on the source folder (or on a package name under it, once I've defined some packages) in the Package Explorer. Menu New/Class.
In the dialog box, type "MyServlet". Tab down to "SuperClass", type in HttpS and then hit ctrl-space. I get a dropdown list, so I select "HttpServletRequest". Just because I'm lazy. I could have done it several other ways. Click "Finish".
OK, Gripe #2. I shouldn't have to know that the base class for a servlet is HttpServletRequest. Oh yes you should. Eclipse is a framework. It's helping us, but the only way to get around having to know J2EE to begin with is to find a plugin that will do all that for you.
So now I have a class, with a package, and import, and a constructor. That's not a servlet.
Well actually it is. HttpServlet isn't abstract, or you'd see a little while "X" in a little red circle next to the class definition and mousing over it you'd get a message saying that the class needed some methods, and offering to add them if you'd "click here".
But since we want a useful servlet, we'll just have to override the default behaviors of doGet and doPost (or whatever). Right-mouse click in the class body, select menu Source->Override/Implement methods. Select the checkboxes for doGet and doPost, and skeleton code gets inserted.
Define a String to hold a multivalued HTTP parameter. In the body of doGet, type "String myparam = arg0." and do a control-space. A dropdown list appears, and you can select "getParametervalues()".
Drop to a new line. type "for" and hit control-space. You get a dropdownlist that has options for things like "iterate over array". Select it and override items as desired.
Sorry for the verbosity, ... "
No problem on the verbosity. In fact, thank you very much for the detailed description of the process.
What you described is a lot of steps, and as a whole rather complex. In essence, Eclipse as the IDE or the Framework, is not really helping you much here. Looking at what you decribed, the first thing that comes to mind is that it would be easier for me to just use an editor with Ant and do everything by hand. Eclipse would only be getting in my way.
But anyway, you obviously like Eclipse and it has worked out for you. That's great. It's also great that many other people like Eclipse. If Eclipse users can be productive with it, more power to 'em.
BTW - do you have any recommendations for online tutorials or for books on how to use Eclipse for Web/J2EE development, ones that make it straight forward and have a high degree of success? If I come across that one thing that gets me over the hump, my opinion of Eclipse will change dramatically.
Until then, NetBeans is really great for me.
And, once again, thank you very much for your detailed, intelligent, and gracious post.