On July 3rd, the Cologne JUG conducted an IDE shootout that included Maxim Shafirov, Mike Aizatsky, and Ann Oreshnikova from JetBrains, Roman Strobl from NetBeans, Wayne Beaton from the Eclipse Foundation, and Frank Nimphius of Oracle. Each of the four groups were given 30 minutes to show off their wares. This gave all that attended the opportunity to see each of the IDEs in action in a head-to-head format.
First up was Sun’s Roman Strobl. Strobl intermixed a small set of slides with a number of live demos. First up was a demonstration of an application built in NetBeans that imported Google maps. The application demonstrated that NetBeans is more than just an IDE. It is a platform capable of hosting some very interesting applications: NetBeans, the IDE being the most famous of them. From this demonstration Strobl moved into a quick demonstration of different features found in NetBeans (the IDE).
The list includes Matisse, the NetBeans GUI builder, the profiler, and support for JRuby development. Strobl used a music CD cataloging application to demonstrate how to use Matisse to build a GUI. In the demonstration, Strobl added a slider to the window and then, using their implementation of the new Beans Binding specification, bound the slider to a rating column found in the pre-existing database. The profiling demo focused on how one would use the profiling capabilities to diagnose and correct a memory leak. The two features focused on were generations and heapwalker. Generations was used to help determine which object was leaking. Heapwalker is a way to trace the chain of references from an object back to its roots.
Time prevented Strobl from demonstrating mobility support. He instead moved on to create a crude blogging application. The application was built in about 3 minutes using Rails (and a little help from some templates). Strobl wanted to demonstrate the use of a voice manager API written in Java in the blog application. Unfortunately the final demo failed at the buzzer but it was nonetheless a great demonstration of JRuby support in NetBeans.
The Eclipse Foundation
Next up was Wayne Beaton from the Eclipse Foundation. Getting the Eclipse Foundation to participate in this event was one of the more difficult challenges for the organizers of this event. The first few minutes of Beaton’s talk focused on the source of some of these challenges. The Eclipse Foundation isn’t only about Eclipse the IDE, it is about Eclipse the platform that is used by many in the Eclipse eco-system to create some very interesting and unexpected applications.
“It [Eclipse] wasn’t intended to be an IDE, it was intended to be an open source framework to solve problems,” said Beaton.
In the presentation, Beaton threw up a logo cloud that demonstrated just how large and diverse the Eclipse ecosystem is. It is an environment where many competitors have come together to cooperate and contribute to Eclipse. These competitors then build on top of Eclipse to complete.
Other technologies integrated into Eclipse included the SOA Tools Platform, TopLink (Eclipse Blade), DLTK (Dynamic Languages Toolkit for Eclipse Platform) which includes the capability to create language aware editors from a grammar and DSCP for small embedded device development.
In the last half of the talk, Beaton focused on Mylyn, included in a newly made available download from www.eclipse.org. Most projects contain a significant amount of code. This point is demonstrated via a Calendar application that Beaton has written on top of Eclipse RCP. Mylyn allows you to build tasks and focus the development environment on those tasks. It works to remove clutter from your view so that you see only those things that you care about. If you return to an older task, Mylyn will work to re-expose those elements that have become important.
Frank Nimphius, the Principle Product Manager for Oracle JDeveloper started his talk with a short history of Oracle development tools. He then spoke of how JDeveloper has evolved from some source code purchased from Borland into what it is today. He also addressed the significant contributions that Oracle has made to Eclipse. In doing so he provided an answer to the question, “Why would Oracle continue with JDeveloper?”
To answer this question Nimphius explained how Oracle not only produces technology but also consumes technology. JDeveloper has an important user base within Oracle and is seen as a key to the technology that is produced. To satisfy the needs of these consumers it made sense to continue JDeveloper development. He also pointed out that Oracle contributes quite a bit to the Eclipse Foundation and then answered a question he posed, “Why doesn’t Oracle drop JDeveloper in favor of Eclipse?” The reason is that with so many consumers of Oracle technology, with their varying requirements, it made sense to continue on with JDeveloper. According to Nimphius, Oracle committed to ensuring that the market place has a strong alternative choice in an IDE.
As would be expected from a database company, JDeveloper comes with a lot of support for Java/database integration activities. This includes the capability to create schemas and edit data. They also wanted to ensure that application developers, no matter what skill level they’re at, would be productive in the IDE. This included Forms developers that really had no idea of what Java is.
“(Our aim is to) help everybody, the coder, the Java EE specialist, and help newbies and also our 4GL type customers that are working with Oracle forms that are used to drag and drop and have no clue what Java really is,” Nimphius said. “Now have these guys become productive immediately.”
Nimphius acknowledged the high level of copying that occurs between each of the IDEs. Features that appear in one will appear in the others tomorrow so these features are no longer the key to an IDE’s future. What *is* key are secondary feature sets and for
JDeveloper this translates to full life-cycle support.
Two JSRs that Oracle is involved in include JSR 198, the plug-in specification and JSR 227, Standard Binding and Data Access Facilities for JEE. The reference implementation for JSR 227, known as Oracle Application Development Framework, creates an abstraction layer between the UI and the business logic layer.
Nimphius’s demo was to build an EJB 3.0 application using ADF bindings with an AJAX component. JDeveloper supports developer interactions at all levels, from those that like to tinker under the hood to those that just want to use the interactions without everybody looking at them. Another interesting feature is support for reusable task fragments. The example given was for login logic. The demo ended with Nimphius adding in some very nice data bindings with support for some AJAX interactions.
JetBrains rounded out the night with a talk about IntelliJ IDEA. Notably, IDEA was the only IDE that cost money so it seemed a reasonable start that Aizatsky addressed the question of why should someone pay money for their IDE. The biggest reason given was that the JetBrains development team listens to you, the developer. The next question Aizatsky addressed was why IntelliJ isn’t open source.
“Open source is all about the opportunity to contribute back to the project,” said Aizatsky. “But honestly, how many people have ever produced a custom build of Eclipse? I think no one, no one here (at least).”
When the same comment was made about a patch for Eclipse, Beaton suggested that Aizatsky look into the bug database. Though Aizatsky took the point, the essence of his argument still remains: IDEs are complex applications and like any other complex application it isn’t something that anyone can jump into and easily contribute to. Aizatsky’s claim that with IntelliJ’s early access program (EAP) they had found a more efficient way for users to contribute back to the project.
The EAP provides a forum in which IDEA users are able to contribute back thoughts, report on bugs and offer feature suggestions. Once more, everyone at JetBrains is committed to listening to those that contribute, Aizatsky said. In one instance this even led them to delay a GA release.
IDEA has long been known for its innovations in IDE technology and this presentation was quick to point out a number of them. The list of innovations discussed included:
1) Automatic creation of important statements
2) Refactoring even with code that will not compile
3) Syntax based selections (Intelli-sense)
4) Parameter shortcuts
5) High-lighting of compile time errors
6) Implementation of refactoring
7) Static code analysis (beyond compiling)
8) Camel hump navigation
9) Langauge APIs
10) Support for injected langauges (even in Java literals). The short demo that followed the slides focused on a number of innovations that went beyond what the compiler will tell you.
These innovations included not-null analysis to awareness of variable names and how to assist developers when the IDE believes that you are using the wrong variable.
Strobl stirred things up a bit by showing a code generation feature in NetBeans that looked identical to one found in IntelliJ (there was a difference in shadowing). It was a demonstration that brought about annoyed looks of frustration from the IntelliJ group.
During the Q&A that followed the sessions, Beaton re-iterated the point brought up by Aizatsky during his presentation. From his perspective, IDE users are interested in seeing about 80% of the features in all IDEs and so it made sense that all IDEs work about the same way. It was the secondary set of features on which they should be competing. Thus we see a lot of cooperation not only in the Eclipse Foundation but even between the IDE authors themselves. Strobl mentioned an Eclipse implementation that included Matisse. Support for Toplink and the JPA soon to be included in all IDEs is sourced from Oracle.
The presentations were followed up with a Q&A session. Those that attended were not disappointed as each of the presenters did an excellent job representing their respective products.
However, some tough questions were asked. In many ways Eclipse is blazing its own trail and a number of questions were directed at finding out why certain technologies were chosen over “standard ones”. Though some of the decisions (bundling of Harmony) seemed politically motivated, most do have a solid technical footing. The OSGi component model currently has no match and it will be quite some time before the modules JSR will be ready.
NetBean’s “blatant copying” of IntelliJ was also questioned but this concern too was addressed from the perspective of Aizatsky and Beaton.
Other questions centered around IntelliJ’s support for Domain Specific Languages (DSL). This is an area where JetBrains is putting forth efforts to make DSL more accessible to average developers.
Taken as a whole the IDE shootout at the Cologne JUG showed how competition amongst the various IDE offerings has really helped to boost developer productivity. It also demonstrated that the commanding lead that Eclipse currently enjoys is not so safe. They need to keep innovating in order to maintain that lead as the others keep pushing forward in the market. JetBrains clearly demonstrated why they’ve earned their reputation and how they plan on keeping it. The take away from this JUG meeting is that there is still much innovation to be done in the IDE arena to better support and better enable productivity for us, the developer. Hats off to the Cologne JUG for organizing this great evening.
Kirk Pepperdine is a performance tuning specialist offering training and consulting services. He can be reached at firstname.lastname@example.org