OK, I admit it: I'm a Java Integrated Development Environment (IDE) junkie.
Whether it's JBuilder, WebGain Studio, WebSphere Studio, or Together Control Center, I like them all, and the more bells and whistles the better. I use them all, although they each have their own unique strengths and quirks. However, this IDE addiction has three undesired side effects. The first is expense. IDEs can be very expensive, which makes me grateful to the companies that I work for who have had the foresight to see that good tools, in the right hands, are almost always worth the expense. The second undesired side effect is learning curve. Although IDEs are pretty easy to pick up, mastering them can be time-consuming. But the third, and to me the worst, undesired side effect is configuration. Setting up a new IDE to point to your source tree, integrating it with your version control system, and of course setting up your CLASSPATH can all be painful. In addition, if you are doing enterprise development, you are probably going to have to start over on how you deploy your applications. So either I need one IDE that does everything or I need all my IDEs to work together. Eclipse may just be the answer to my addiction.
What Is Eclipse?
The basic idea is simple: Eclipse provides an IDE platform that software vendors can extend the functionality of by writing their own plug-ins. The Eclipse platform itself is an open-source project supported by a consortium of industry leaders, including founding members Borland, IBM, MERANT, QNX Software Systems, Rational Software, SuSE, TogetherSoft, and WebGain, as well as recent additions Sybase and Fujitsu. In addition, Object Technology International, led by Technical Director and Object Pattern Guru Erich Gamma, has developed the Java Development Tools (JDT) subproject, which is essentially a set of Eclipse plug-ins that form a Java IDE that is distributed as part of the Eclipse Software Developer Kit (SDK).
How Eclipse Platform Plug-ins Work
Eclipse platform plug-ins, which of course are written in Java and distributed as JAR files, are hooked into predefined extension points within the Eclipse platform. In Eclipse terminology, a "plug-in" provides an extension to an extension point. In addition, a plug-in can declare its own extension points and provide extensions for other plug-ins' extension points. Also since you may have quite a number of plug-ins installed and may only use a subset of them during a session, Eclipse provides a registry mechanism for plug-ins to declare which extension points they extend. Eclipse further provides a mechanism called "activation" whereby registered plug-ins are loaded dynamically on an as-needed basis. This frees the Eclipse platform from the excessive startup times and bloated memory footprints often associated with Java IDEs.
Advantages for Software Tool Developers
There are two main reasons for software tool developers to use Eclipse. First, it either will implement or already does implement much of the functionality that would have to be built into any new IDE. Having commonly needed functionality like keeping history, internationalization, Build System (Ant), help, search, and scripting already at their disposal allows developers to focus on new functionality. Also, since Eclipse is an ongoing open-source project, developers will pick up additional functionality in the future with minimal development effort. The second advantage is that if Eclipse takes off and becomes the IDE platform of choice, it may become difficult to sell the all-in-one IDEs of today's market. IDE users will prefer new plug-ins to their existing Eclipse platform.
Advantages for IDE Users
There will be plug-ins to fit your IDE user's need. Although Eclipse has its roots in the Java community, vendors can make plug-ins to support any language or file type, including HTML, XML, C/C++, Smalltalk, or whatever languages the future holds. In fact, there may even be a market for plug-ins for legacy languages, but plug-ins are not just limited to languages and file types. There can also be plug-ins for debuggers, version control systems, and diagramming tools.
Think of the time you would save given the following scenario. You need to develop an application in a new language you have never used before. Instead of downloading trial versions of several entire IDE packages, installing them, and configuring them while at the same time trying to learn the new language, you could instead just download trial versions of their Eclipse plug-ins and be on your way. Once you have selected the plug-in that best suits your needs, you can remove the other plug-ins, which should be just a matter of unregistering it with the Eclipse platform and removing its associate JAR files. This seems more desirable than trying to uninstall the trial version of an IDE.
Another advantage is that the entire Eclipse platform is inherently cross-platform. So whether you are running on WindowsXP or RedHat, your Eclipse IDE will behave the same way. If you have done development on Java applications that are required to run on multiple platforms, you already know that you have to either push your application to test on each of your target platforms or set up an IDE on each so that you can make changes while on the target platform. Neither of these solutions is optimal. However, if you were using an Eclipse platform with the same plug-ins on each of your targets, development and testing would be much easier. The corollary to this is not as obvious but is still useful; potentially, plug-ins for languages like C and C++ will have platform-dependent targets, but the Eclipse platform to create the targets could be run on any platform. Only execution and debugging would have to occur on the targeted platforms.
Another advantage for the IDE user will be the ability to switch between plug-ins for the same language. Most developers tie themselves to one particular IDE and stick with it even when others have better features or better pricing, because the opportunity cost is too high in switching to a new IDE. The Eclipse platform will do more than allow you to migrate easily from one platform to another; it will let you move back and forth between plug-ins at will.
How to Get Started
Don't throw away your favorite IDE just yet, but if you would like to take a peek at what Eclipse is all about, you can download it from the Eclipse Web site and follow the link to the download section.
What's in Eclipse 2.0?
Eclipse 2.0 was released on June 28th, 2002. Release 2.0 focuses on adding stability and bug fixes to the current code base and will include the following:
- Source code for Eclipse
- Eclipse Software Developer Kit (SDK)
- Eclipse platform runtime binary distribution
- Java Development Tools (JDT) runtime binary distribution
- Eclipse SDK examples
Since Eclipse is written entirely in Java, it is naturally cross-platform and will be validated against various Java Virtual Machines (JVMs) on the following operating systems.
- Sun Solaris
What Are the Disadvantages?
The Eclipse team has gone to great lengths to specify how plug-ins will interoperate, but inevitably there will be problems and incompatibilities. Currently, when I have an issue or problem with an IDE, I know exactly which vendor's Web site to visit or tech support team to call. It may be difficult to discover who is at fault when you have a confederation of plug-ins working together and something goes wrong.
What About Price?
It will be interesting to see how plug-in vendors will position themselves. IDE users who are purchasing plug-ins will certainly expect that those plug-ins will cost significantly less than full-blown, stand-alone IDEs. However, since IDE users may need to procure a number of plug-ins just to match the functionality of their current IDEs, they may not experience a net savings. There may also be another factor in pricing. There are already a number of open-source projects in the works for various plug-ins. Competing plug-ins will be pressured to offer either a lower cost or more features and better support than their open-source counterparts.
Eclipse is based on the simple idea of allowing tool developers to create plug-ins and extensions to an existing IDE framework, thus freeing them to develop new functionality rather than spend time creating their own framework. Even though Eclipse is an open-source project, I believe it will succeed in the main stream because it has strong industry backing. The advantages of a well-defined plug-in, cross-platform framework are numerous and will benefit both plug-in developers and Eclipse users alike. The only disadvantage seems to be potential problems with interaction among various plug-ins. Pricing is, of course, always an issue, and it will be interesting to see how plug-in vendors position themselves. So download Version 2.0 and take it for a test drive and see what you think.
Links to More Information
TogetherSoft Control Center--www.togethersoft.com
QNX Software Systems--www.qnx.com/
Object Technology International--www.oti.com/