DevelopmentTools reminded me of..... ''What I always wanted from a Java editor:'' * Parse JavaDoc comments. Make JavaDoc comments HyperText. * When you click on a HTML-link in a (JavaDoc-)comment, that page opens up (of course). PLUS: Understand HTML-Links to classes/methods (not just in JavaDoc). This would allow seamless integration with a project Wiki database. * Automatically keep the JavaDoc names and types up to date with the code. * Make method names, variable names etc. HyperText. * Allow hiding comments. * Make it easy to add other languages instead being for only java. * Allow me different views on the code, just as Eiffel short form, flat form, ... (names correct?) * Option of viewing code in an outline format, so that with each open and close brace, I can choose to expand or contract that level of detail. * Highlight nesting of blocks graphically (vertical white space, different shading of background, ...) * Has an auto-format feature that automatically performs code formatting based on user defined formatting rules. * Compile automatically while I type. Have background syntax checking. * Try to come up with reasonable remedies in case a compilation error occurs (e.g. corrects a misspelled name). * (note that this sort of 'artificial stupidity' must be enabled through a user preference) * If it compiles while you type, there is less need to automatically handle compilation errors. * Drag-and-drop Refactoring * Click-to-add mutators, accessors for a particular field. * Where each such fragment (like everything else here) is customizable by the developer. * Where the framework that generates these accessors is customizable by the developer. For example, I usually use a two-stage read accessor pattern so that I can readily switch between lazy and eager initialization. * Customizable and extensible click-to-add mechanism, so that I can generate more than just the elements the IDE developer thought about. For example, I have well defined patterns for each attribute of a type that generate networks of methods. These patterns include methods that address: * Visibility (protocol, package, protected, private) * Volatility (transient, persistent) * Initialization (eager, lazy) * Instantiation (Create, Load) * Automatically ensure that all accesses to the field are through the mutator and accessor * OR ... automatically identify methods that walk around the access conventions. * Automatically add skeleton methods when adding an interface to a class * OR ... automatically provide skeleton implementation of an interface by delegating methods to a field of that interface type * Filtering your view of a class to only those methods that implement a selected interface. * One click delegation of a supported interface to a member (fake multiple inheritance). * On-line information about all "users" of a method or field * Easily find all other classes that reference a certain class (or even a method in the class) * Allow fast jumping to "callers" and "implementors" of a method under the cursor (a la Smalltalk browser) * Generates a unit test class containing tests for all methods and with all tests failing. * Macro support similar to vi's 'ab' command and recordable macros * "vi" support * Have lots of open-interface hooks where other people can plug-in Java classes to do stuff not anticipated by the original authors (e.g. interfaces to version control, repositories, search tools, etc, etc.) * Be able to 'comment out' a piece of code easily, showing it in a different color (distinct from normal code and from normal comments). * Integrate with various SourceControl systems (CVS, VSS, RCS, SCCS, Starteam, SubVersion). * Tab-completion of anything and everything. (methods, members, and keywords are the three "biggies".) Please add to the list. Contributors (so far): FalkBruegmann, GlennVanderburg, PeterMaier, SteveFreeman, GregVaughn, TomCrosman, FrankCarver, PhilGoodwin, MikeMorris, MarnixKlooster, StefanMarx, TomStambaugh ---- Anybody game to start this as an OpenSource project? I have been thinking of starting to write such a beast for some time now, and find it intriguing that so many other people are expressing exactly the same wishes that I have. -- MikeMorris So many ideas, so little time. To start such a thing, probably two or three people would have to sit together to devise a base architecture, so that others can start to implement most features as fairly separate modules. If this is not done, developing with more then three people at the same time will be next to impossible. Methinks. -- MarnixKlooster So many ideas. I like this list and I would be very happy contributing to such an project. Naturally many of the things could be embedded in Emacs or some other editor, but I think it will be a good test for java implementing such a big thing. So if there is some activity on implementing all or some of the features, I would like to become member of the project. Call me for closer Discussion and my Javabackground. StefanMarx ---- No kidding, Marnix. I think that a lot of these features could be added to Emacs, but I'm really unhappy with the anti-modular, flat-name-space structure (or lack thereof) in Emacs, and I feel like I'm shouting into a pit in the ground every time I write Emacs-LISP code. I started thinking about a modular version of Emacs to which a lot of these features would be easy to add, once the groundwork was laid. But what a groundwork! My ideas are at http://www.andrew.cmu.edu/~heywood/code/jmax (BrokenLink 2006.02.01) But of course, we all have jobs and my interest in this project has shown itself to be really fickle and transient. -- RusHeywood The JavaDevelopmentEnvironment (JDE), an Emacs Lisp package, has many of these features. E.g. it can add skeleton methods when adding an interface to a class. See http://sunsite.auc.dk/jde -- FrankGerhardt ---- It is interesting that some of the context sensitive editing and completion discussed here is implemented in MS Word (blaahhh). I personally don't like code completion. What I prefer is an editor, like vi, which has simple key strokes for doing complex things. Editing commands that simplify stuff like /foo cf/blaaahh bllaasssa n.n.n.n.n.n.n.n.n.n.n.n.n.n. are just invaluable. I currently use Kawa[1]. It has the ability to let me define menu commands. This allows me to put Lemmy (a really nice vi clone with syntax highlighting) on the file context menu. I invoke Lemmy when I need to do EditingAsOpposedToTyping. -- GreggWonderly ---- Some of the features in the list above can be found in VisualAge for Java. It might be possible to extend VisualAge to add some of the missing features. -- PeterGassmann ''The VisualAgeJava IDE is itself written in Smalltalk. IBM does not, to my knowledge, make the IDE code accessible to developers for customization. On the other hand, someone who knows the Smalltalk environment might accomplish the same task in Squeak, in an open way, thus enabling this approach. Once you grok the similarities and contrasts between Java and Smalltalk, it becomes a StraightForwardTask (as opposed to "InventionRequiredTask" or "TrivialTask") to begin dropping the kinds of features described here into the IDE. I don't believe that the Java environment is, in itself, rich enough to allow this kind of IDE to be written in Java itself, ala Smalltalk. -- TomStambaugh'' ---- ''Compile automatically while I type. Have background syntax checking.'' Code Guide 2.0 has this feature. It underlines problems with a swiggly red line like word does. Great feature. It's a full compile check too, unlike JBuilder which just checks basic syntax. -- GlenStampoultzis ---- I've been looking at jEdit, which is an editor written in Java Swing itself. It's very flexible (it can be expanded with the use of plugins which can be downloaded transparently over the net) and has a much smoother experience than XEmacs, but it has two big flaws: It doesn't integrate well with XEmacs "compile/debug" feature. Even running a perl script is hard. Tab management is limited. I like using a 4 space indent, where two indentation expand out to a full 8 space hard tab. jEdit is only aware of tab as 4 char or 8 char, and it doesn't recognize my coding style. Having said that, the parsing looks good, it's fast (and multi-threaded! No more Xemacs hangs!) and has a number of code-completion & templating features and I would consider using it for all my Java programming if I weren't already an Emacs junkie. -- WillSargent12 ---- The IdealJavaEditor should be more than a tricked up text editor, I feel that this is a stumbling block to most of the programming environments out there, they are stuck looking at Emacs. VisualAge is a interesting start but it lacks many features, the most important of which is integration with everyone's favourite tools. This could well due to the clash between the class based storage and file based tools. CanFileBasedToolsSurvive in a future of logically structured tools. -- AlistairHutton ---- Why is it that so many of the items on this list are work-arounds for the fact that Java requires classes to contain gobs of repeated code, and that the javadoc contains gobs of gunk that is duplicated in the method signatures? Why doesn't somebody just wish that Java had better facilities for reducing duplication? -- JeffBay ''Because it's easier for us to write tools that work round the duplication problem than to get Sun to rewrite the Java language spec.'' -- AlistairHutton ---- Anybody knows about IntellijIdea from JetBrains? It makes just about everything that is mentioned here. I find it to be very good. Available at http://www.intellij.com/ -- FrancoisBeausoleil ---- ''And I'd feel guilty if I didn't mention EclipseIde (http://www.eclipse.org).'' Absolutely. More often than once when using Eclipse I have wondered if any of its developers have read this page. -- FalkBruegmann ---- Any one know of an IDE that has a good VI personality (I already know about jVi and JBungler - so don't mention that)... Actually, I would be really interested in hearing about someone writing a plugin to Eclipse for this (I would like to help, if possible). -- JasonRogers ---- Check out Visual Slick Edit from http://www.slickedit.com. Nice vi emulation (also brief, emacs, etc.) and many of the features mentioned by the original poster. It has a C-like macro language which is fairly flexible. No, I don't work for them; I have just been using the editor for a couple of years now. -- BryanGlennon ---- See JavaIde