InfoWorld on Java IDE’s


Java is the #1 competitor for C#, and the Java platform is the #1 competitor for .NET.  So it should be no surprise to readers that my group (C#) is highly interested in what’s happening in the world of Java IDE’s.  The most recent InfoWorld has a review of Java IDE’s.  There is a also sidebar on Eclipse that includes some comments on developer segmentation.  The IDE’s reviewed are:



  • Borland JBuilder 2005 Enterprise, $3,500

  • IBM Rational Software Architect 6.0, $5,500

  • Oracle JDeveloper 10.1.3, $995

  • Sun Java Studio Enterprise 7, $1895 per year

The overall tone of the review is that this is a strong bunch of products.  That said, I found a few of the negatives surprising and worthy of comment.  The review is pretty negative about IBM’s product being based on Eclipse.  I find this somewhat surprising given the high level of buzz around Eclipse.  Here’s what the review says:



<infoworld>


IBM uses the same role-based model as Borland. RSA 6.0 is built upon several layers. Just underneath is Rational Web Developer, which omits a substantial portion of the modeling functionality; below that is Rational Application Developer, which lacks the Web-facing design capabilities. At the very base of the stack is Eclipse 3.0, the freely available Java-oriented IDE that is gaining tremendous popularity (see “Eclipse Casts a Long Shadow,”).


Unfortunately, almost all of RSA’s drawbacks arise from this bottom layer. First, Eclipse is not an intuitive interface. Until you’ve practiced with it for a long time, you are likely to come across inexplicable dialog boxes or unexpected pathways. IBM simplifies the task with a set of terrific tutorials, yet the IDE is still more difficult to navigate than JBuilder 2005 or Oracle JDeveloper.


The RSA interface is also notably slower than those two products. It never quite reaches the point of frustrating users, but it feels sluggish and lacks the snap of the other products, especially when switching among views of a project (such as moving from design to coding).


</infoworld>


The IBM/Rational product also got poor marks for C/C++ support.  Supporting modeling for C/C++ but not compilation and debugging is difficult to understand:



<infoworld>


RSA has partial support for C/C++, in addition to full support for Java. The modeling tools can perform transformations to C++ and various source code tools can analyze C++. However, the C++ IDE lacks a compiler and debugger, which must be procured and installed separately. You can install your own if you already have one of these tools, or you can download the GNU C++ compilers to do this. These features seem like an odd and incomplete addition.


</infoworld>


JetBrainsIntelliJ IDEA isn’t fully reviewed, but gets a nice mention in the sidebar:



<infoworld>


For functionality comparable to Eclipse, but with an easier interface and a low price, I suggest looking at IntelliJ IDEA from JetBrains, which presents an excellent alternative that should be evaluated by any site considering adoption of Eclipse for Java development.


</infoworld>


As a side note, JetBrains also offers an add-in for Visual Studio .NET 2003 called Resharper that provides additional code-focused functionality for C# developers.


I was surprised that the review did not comment on IDE and app server coupling, whether it is loose (the IDE can be used with a variety of app servers) or tight (the IDE is tightly coupled with the same company’s app server, and therefore can exploit its proprietary features).  As I understand it, there is an overall trend toward tighter coupling of IDE and app server, with a few exceptions, notably Borland and IntelliJ.  Tighter IDE/app-server coupling is a natural consequence of another trend — that the J2 app server vendors are increasingly differentiating with proprietary features on top of the J2 standards. 


If this post manages to attract some readers who have experience with J2 app servers and IDE’s, I would be very interested in hearing your thoughts on this trend.  Do you use any of the products reviewed?  Are they tightly coupled with the associated app server?  Do you view this as good (since it enables you to fully exploit the app server) or bad?  General comments on the reviews would also be interesting.  Thanks.


–Scott


Comments (3)

  1. I got an interesting comment from someone who uses both Eclipse and VS. Apparently there was a problem with the blog software . . .

    ————–

    The comment functionality in Community Server is broken, so I’m send you an email on this instead.

    Anyways…..

    I use Eclipse, and have a pretty good idea as to why the author stated he thought it was unintuitive. Eclipse uses a "perspective" paradigm that can be extremely confusing if you’ve never seen it before. However, once you get used to it, it’s a pretty nice feature.

    Essentially, a perspective is an IDE layout configuration. For example, there is a "Java" perspective, a "debug" perspective, and a "Team Synchronization" perspective, each of which shows different views docked at different positions on the screen that give a different user experience depending on the particular task a developer is engaged in.

    I’m pretty sure Visual Studio has a similar mechanism (it remembers different layouts for debug mode), except it doesn’t expose it directly to the user.

    The usability issue with Eclipse is that the default perspective it opens with when the product launches for the firs time is the "resource" perspective, which exposes the general file management framework that lies below the Java Development Toolkit framework. It doesn’t know anything about Java. For all intents and purposes, it’s useless.

    However, one you switch to the "Java" perspective, the IDE becomes incredibly easy to use, and is extremely productive. If they just used the "Java" perspective or a view similar to the VS 2003 start page as the default, new users would find it much more appealing.

    Eclipse has some productivity enhancing features that make for a very enjoyable user experience. To begin with, it has a built in incremental compiler, and does not rely on javac, which enables it to do continuous background compilation without performance problems. Every time a file is saved, its project is compiled (although this behavior can be turned off if you have absolutely humongous projects), so you can get instantaneous feedback about the effects of any changes. It’s very nice. There are some things like this in the Whidbey Betas and CTPs for C# but they just don’t feel as nice. There’s also an optional plug-in available from the MIT Program Analysis group that will automatically run JUnit unit tests when files are saved.

    Beyond that, is its excellent support for refactoring. They took a different philosophy than the C# team did for the Whidbey refactorings. The C# team did small, almost atomic refactorings, where as Eclipse has some refactorings that are a bit more complex. The one key refactoring that Eclipse has that Whidbey doesn’t is "change method signature". You should really put this into the release after Whidbey. Doing what the Eclipse refactoring can do with Whidbey requires multiple operations, and is signifigantly more time consuming.

    By far the coolest thing about eclipse is the free Omondo Eclipse UML plugin. Its integration is top notch. It allows a much wider range of class diagram notation than Whidbey’s class designer does, and gives the programmer a good amount of control (without being too hard to use) over how the generated code looks. The searching functionality for identifying the type of collection used to resolve association ends is something Whidbey doesn’t come close to. You should also look into that for the version of Visual Studio after Whidbey. Many of your customers probably weren’t previously using UML (not a lot programmers use it), so they probably won’t notice the missing features, but its something I wish was there (Whitehorse fell short of my expectations).

    I’m not saying that I want you to implement the entire Rational Unified process, or any other part of the UML besides class diagrams, because those things are useless. I just like to use arrows in class diagrams along with the associated adornments ("*" mutliplicity, qualified associations, etc), but without all the validations Viso imposes that don’t make any sense for C# (like the restrictions on the use of interfaces) and tight round-trip IDE integration.

    As for the issue with the "tight app server / ide coupling", I don’t think that’s a trend Eclipe is following. Check out the "Eclipse Web Tools Project" and their goals.

    There are some things, however, that Visual Studio does much better than Eclipse. Your debuggers are unsurpassed in the industry, and with Whidbey you’ve completely outdone yourself. The debugger in Eclipse does not support multiple threads and has an unintuitive interface. Eclipse also doesn’t have a good form designer. There have been some attempts at third party plug-ins, but they completely suck. Your form designer is great.

  2. Michael Hart says:

    I use both Eclipse and BEA Weblogic Workshop extensively. As noted, Eclipse has a steeper learning curve, but once you get used to it, it’s far more powerful. Simple things like being able to open a project directly from source control, and the refactoring ability (with preview and undo!) is unmatched. Workshop is a very basic Java IDE, but gets it’s strengths from the graphical pageflow editor (webapps based on struts). I use Workshop where I have to, and Eclipse for everything else.

    It’s interesting that you note the trend to closer relationship between IDE’s and J2EE app servers. BEA announced recently that it’s going to base the next version of Workshop on Eclipse rather than their own code base. I’m not sure what the implications are, except that rather than using two IDE’s I can switch to one.

  3. John says:

    It seems IDE’s are becoming bigger and uglier with each release. The solution to every problem seems to be to bolt on an extra plug-in here, support for an app-server there etc.

    Code focussed functionality arguably provides the greatest programmer productivity improvement. <a href="http://www.dynamicaspects.com/">Dynamic Aspects</a> have some demos up of a new tool with code focussed right at the forefront.