RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX


Eclipse, NetBeans, and IntelliJ: Assessing the Survivors of the Java IDE Wars : Page 4

Get a comprehensive comparison of the latest versions of the major IDEs in the Java development space: NetBeans, Eclipse/MyEclipse, and IntelliJ IDEA. Find out how well each performs in four common areas of development: Swing, JSP/Struts, JavaServer Faces, and J2EE/EJB 3.0.

Eclipse 3.2.2 "Callisto"/MyEclipse 5.1.0 GA

Vendor: Eclipse Foundation
Website: www.eclipse.org
Price: Free (base distribution)/Open-Source
Vendor: Genuitec
Website: www.myeclipseide.com
Distribution: MyEclipse IDE
Price: $49/year subscription

On Windows and Linux the base Eclipse distribution is just a simple .zip or .tar.gz file that you extract in whatever directory you deem necessary. This provides you with a bare-bones IDE that is basically capable of creating a "Hello World" program, but not much else. In order to turn Eclipse into a workable environment, one has to download extra plugins from the Eclipse website (available directly from within Eclipse via Help -> Software Updates -> Find And Install). The ones I was most interested in were the Visual Editor (for SWING GUI building), the Web Tools Project (for JSP support), the JSF Tools, and Dali (for JPA support). The last two are officially declared as "preview" and not yet at version 1.0.

When it comes to installing new plugins, Windows was straightforward. Under Linux, it is possible to download Eclipse from a standard repository (most Debian-based or RPM-oriented distros feature Eclipse), which integrates perfectly with the way Linux applications are usually installed. However, this method installs Eclipse into a system directory (e.g., "/usr/lib/eclipse" under Ubuntu/Kubuntu), which can be updated only if running as root or with root privileges via 'sudo'. Unfortunately, Eclipse seems unaware of this and downloading the plugins ended in an error since Eclipse did not prompt me for the root password when attempting to install them under the restricted "/usr/lib/eclipse" folder. It would be great if Eclipse enhanced this little detail in a future release. As a simple solution, I just copied the entire local Eclipse installation to a folder in my home directory and was able to install all the additional plugins without any further issues (I guess I could have just logged into a session as "root," but I prefer to avoid doing that).

MyEclipse comes with a Java-based installer that under Windows integrates perfectly with the OS (including shortcuts) and does an acceptable job under Linux (although it does not create any desktop shortcuts).

General Features
When Eclipse appeared on the scene, its amazing, fast, and feature-rich Java editor was quickly recognized as its crown jewel. Among its attributes were:

  • Fast performance
  • Powerful refactoring
  • Quick fixes for errors
  • The ability to fix/organize imports
  • Lots of polish seen in little details (e.g., attractive Javadoc pop-ups on code completion).

It indeed is a top-notch editor in every meaning of the term.

I was not as fond of Eclipse's windowing system, in particular its perspectives/views paradigm (I hated this same system back in NetBeans 4.0 as well, but they were wise enough to replace it). I very much prefer the simple approach of having all the relevant editors/palettes/panels configurable in a single window, without the confusion of perspectives. Admittedly, that is a matter of personal preference though.

I also found some aspects of the windowing system to be illogical. For example, minimizing the "Package Explorer/Hierarchy" view does not collapse it to the side (as I would expect from working with other IDEs, be it NetBeans or even Visual Studio.NET). Instead, Eclipse just folds it up and leaves a large portion of the screen unused—a very unusual design decision. (See Figure 9 for an example of this strange windowing behavior.) Besides that, the overall windowing system is quite capable, but I prefer NetBeans's system much more.

Click to enlarge

Figure 9. One of Eclipse's Unusually Collapsed View

Swing Development
The Visual Editor in Eclipse was by far—at least a mile—the weakest GUI builder of any of the major Java IDEs, mostly because the most advanced layout it supports is GridBagLayout. After working with NetBeans's Matisse, I could never imagine myself going back to that ancient and cumbersome method of creating Swing UIs. Fortunately, in what is a testament to the power of the community that has grown around Eclipse, MyEclipse delivers the Matisse GUI builder integrated directly into Eclipse! And it works very well, although obviously it will always be a few updates behind the cutting-edge enhancements that the NetBeans team is continuously adding to it (such as the bean binding feature that is supposed to be delivered as part of NetBeans 6.0). Nevertheless, the mere fact that Matisse is available on the Eclipse platform (even if it is part of a commercial solution) highlights why it is the 800lb. gorilla in the Java IDE space: none of its competitors have a similar community of plugin developers that are willing to complement (or sometimes replace entirely) Eclipse's base functionality.

JSP/Struts Development
The Web Tools Project (WTP) adds web-development features to Eclipse. It is quite capable for basic JSP development, offering a solid JSP editor. However, deploying your web application seems to be somewhat flaky. It often locked up with errors when I was deploying it to Tomcat. This was in direct contrast to the other IDEs, which did not exhibit any of these issues.

The WTP also lacks any built-in support for Struts development, which seems to be a major hole in its functionality (although a quick search at www.eclipseplugincentral.com revealed no less than 24(!) plugins for Struts support, both commercial and open-source). To no surprise, MyEclipse fills this hole quite thoroughly with full Struts support, including graphical editors for struts-config.xml, as well as wizards for creating new Actions and FormBeans (Figure 10 shows its Struts editor in action.).

Click to enlarge

Figure 10. MyEclipse's struts-config.xml Editor

Eclipse with MyEclipse added was also the only tool to provide a visual editor for creating JSP/Struts pages. (See Figure 11 for a sample of the capabilities MyEclipse can add to a web project.) Unfortunately, I was not able to test it thoroughly due to an Eclipse bug that disabled it under Linux.

Click to enlarge

Figure 11. MyEclipse's Web Project Options

JSF Development
The base Eclipse distribution provides a preview version of its upcoming support for JSF development. Despite its "preview" status, it is actually already quite usable and, dare I say, better than some of its competitors' supposedly more mature JSF functionality. This includes a visual editor for the faces-config.xml, code completion in JSP pages for managed beans' properties, new managed bean wizards, as well as visual editors to set up Converters, RenderKits, and Validators. I am excited to hear that the Eclipse team is planning to release a visual JSP/JSF editor as well. MyEclipse's JSF functionality is very similar in scope, but in my testing the base Eclipse JSF support was more than adequate.

Enterprise Development
Eclipse does not provide official support for JPA yet. It does have an incubation project called Dali that is geared to deliver this functionality, but it's still in the fairly early stages of development. Although I was able to generate a working set of entities from a database with it, however, even though the generated code wasn't quite at the level that NetBeans currently generates (e.g., it did not have any named queries created automatically). If your shop has not moved to JPA yet and is using straight Hibernate instead, then consider MyEclipse an option as it has quite a rich level of Hibernate support.

For J2EE development, Eclipse supports creating EJB and EAR modules, although in order to avoid J2EE's complexity it seems to be focused on generating EJBs via XDoclet, which admittedly was the best solution available before Java EE 5 and EJB 3.0 dramatically reduced enterprise application complexity. MyEclipse extends this functionality by providing additional wizards for session beans, message-driven beans, and container manager persistence beans, also driven by XDoclet.

Neither Eclipse nor MyEclipse currently seem to have Java EE 5 support, but considering it is still a fairly new specification I presume the Eclipse Foundation is busy adding this for a future release. (See Figure 12 to see MyEclipse's J2EE 1.4 EJB wizards.)

Click to enlarge

Figure 12. MyEclipse's EJB Code Generation

Close Icon
Thanks for your registration, follow us on our social networks to keep up-to-date