Skip to main content

Why I teach Eclipse

Gary Pollice, Professor of Practice, Worcester Polytechnic Institute
Author photo
Gary Pollice is a professor of practice at Worcester Polytechnic Institute, in Worcester, MA. He teaches software engineering, design, testing, and other computer science courses, and also directs student projects. Before entering the academic world, he spent more than thirty-five years developing various kinds of software, from business applications to compilers and tools. His last industry job was with IBM Rational software, where he was known as "the RUP Curmudgeon" and was also a member of the original Rational Suite team. He is the primary author of Software Development for Small Teams: A RUP-Centric Approach, published by Addison-Wesley in 2004. He holds a B.A. in mathematics and an M.S. in computer science.

Summary:  from The Rational Edge: In his monthly column, Gary Pollice discusses the virtues of Eclipse technology and explains why he and other instructors at Worcester Polytechnic Institute use it in their courses.

Date:  15 Jun 2005
Level:  Introductory
Activity:  844 views

Illustration Every advance in software technology requires parallel changes in software development tools. As someone who teaches future software developers, I am constantly weighing pedagogical concerns against my students' need for tools to do their assignments. Given the rapid rate of technological change, how much can I -- or should I -- teach my students about specific tools?

On the one hand, I know that if college professors don't employ good tools in the classroom, students may leave with significant book knowledge but still be at a practical disadvantage. On the other hand, teaching students to use "industrial strength" tools requires a lot of time. It would be nice to have a crystal ball to tell us which tools are worth the investment. Remember the CASE tools of the '80s? We spent a lot of time learning how to use them, but how many are still in use today?

Fortunately, life has become much simpler for me lately. Eclipse is close to a perfect software development environment for my students. It is industrial strength. You don't have to know everything about it to use it effectively. And it's as flexible as you could ever want.

If you don't know what Eclipse is, I urge you to take a look at the Eclipse Web pages.1 The first sentence on the main page says it all: "Eclipse is a kind of universal tool platform -- an open extensible IDE for anything and nothing in particular." It is truly the Swiss army knife of software tools. Sound too good to be true? Most of us know that when a tool tries to do everything, it ends up doing little well. But that's just not so with Eclipse!

What makes Eclipse so great for academic use? Here are some of its advantages:

  • Provides a consistent feature set on most platforms

  • Supports more than just Java or any single language

  • Open source and free, yet fully supported

  • Truly extensible and configurable

  • Industrial strength

We'll look at these in more detail below.

Eclipse provides a consistent feature set on multiple platforms

At Worcester Polytechnic, we do not teach to any specific computing platform. Our students are usually free to use the platform on which they are most comfortable; most have at least one computer, and many have more. Machines in our labs across the campus run several operating systems. That is one reason we want to avoid assigning a task that requires a specific platform, such as Microsoft® Windows.

When I assign large team projects in my software engineering classes, I want students to be free to concentrate on the problem rather than the specific platform. Eclipse supports this goal because it runs on all the platforms we use: Windows, Linux, and MacOS X. More important, it functions the same way on each of these platforms, so I can work with students even if I'm not an expert on their chosen platform.

In fact, no matter what platform you use, Eclipse acts like an application built for that platform. When you download Eclipse, you download it for your specific platform; it has separate graphical toolkits for each one. This provides a look and feel that's close to native, as well as better performance.


Eclipse supports more than Java

You'll see the real benefits of Eclipse when you realize that it isn't just a Java development platform. The Eclipse philosophy is embodied in the technology's architecture: provide a small core that gives developers a consistent way to extend the system's capabilities. Each extension, or plug-in, contributes specific functionality to an Eclipse configuration and may provide extension points that other plug-ins can use.2

The plug-in architecture makes it possible for Eclipse to support many languages and paradigms. Examples of plug-ins are:

  • The Eclipse C Development Tools (CDT) project (http://www.eclipse.org/cdt/). This core project, supported by the Eclipse Foundation,3 provides high-quality C and C++ support. Project deliverables include support for editing, debugging, makefile generators, parsing, searching, and content assistance.

  • Also sponsored by the Eclipse Foundation, the COBOL plug-in (http://www.eclipse.org/cobol/) provides capabilities similar to those of the CDT.

  • EPIC (http://e-p-i-c.sourceforge.net/) contributes a Perl development environment to Eclipse.

  • Pydev (http://sourceforge.net/projects/pydev/) is one of several plug-ins that support the Python language.

When I looked at my favorite Eclipse plug-in directory (http://www.eclipse-plugins.info/eclipse/index.jsp) recently, I saw that there are currently fifty-one plug-ins in the languages category. Whatever language you work with, chances are there is an Eclipse plug-in that will allow you to develop programs in that language from within Eclipse; Haskell, ML, Prolog, and GOO are all supported. Without carefully examining the Eclipse instance shown in Figure 1, you couldn't tell whether I was working in Java, C++, Ruby, or any one of the other supported languages.

This consistency in look and feel pays big dividends for me as a teacher -- and could for you, as a practicing engineer or manager. Once you learn how to navigate through the different Eclipse views, you can move effortlessly from one language or platform to another and know that things will work the same. I congratulate the Eclipse development team for establishing a set of standards that other developers can -- and do -- follow to create virtually any type of plug-in. The rare plug-ins that do not follow standard guidelines are usually of substandard quality.

Teaching my students how to use Eclipse usually requires one or two classes. This is not a big price to pay for the benefits they get -- and that I get from receiving their work in a consistent format. Grading is much easier when I can load and run their projects without any problems.

Figure 1: Typical Eclipse view

Figure 1: Typical Eclipse view


Eclipse is open source and free, but fully supported

The open source initiative has proven that free software is not necessarily low-quality software. However, companies, such as RedHat, have also realized that it's important to provide support for people using the software. In fact, Eclipse has a very active community that is willing to help with any problem. Plus, since Eclipse is the foundation for many commercial software products, including IBM Rational tools, many vendors supply additional support.

As one TV commercial claims, "free" is a great price, and that's especially true for the academic community. IBM, Microsoft, and other companies have wonderful programs that help educators and students obtain software either at very low prices or for free. Without their help, the price of a college education would be even higher than it is currently. The Eclipse platform and its many free plug-ins make it easy for students to download what they need. Moreover, the large number of free plug-ins gives them a low-risk way to expand their horizons by trying out new languages and tools. That's nice for me, too, since I continually look for cool new things to show students. I'm reluctant to assign a $100 book for a course; it's easier on my conscience when I ask students to use free software downloads instead that don't increase the total course cost.

Two of my students just completed their major qualifying project (MQP), a graduation requirement at WPI. Their project was to build an object bench for Eclipse that lets you interact with objects of classes you create, without having to write a complete program. They did marvelous work, but they would never have been able to achieve what they did without support from the Eclipse community. Whenever they encountered difficulty, they posted a message to the appropriate newsgroup and received prompt responses. This helped them not only to get the job done, but also to become part of a group of dedicated, professional developers; that support will be invaluable as they move ahead in their careers.4


Eclipse is truly extensible and configurable

Over the years, I've worked with many tools that were touted as extensible and configurable. However, after I purchased them, I found out that configuration wasn't quite as easy as it sounded. My first experience came in 1974; I needed to adapt a Datapoint computer, and the salesman told me I could do that with their new systems. I ordered a system with a whopping 5MB disk and waited. When it came in, I asked him, "OK, now how do I do the task?" The response was, "You can do it, but we don't have the software for that yet. You will need to write it." After spending two weeks in San Antonio, TX, learning about the operating system and assembler language, I was able to extend the software as I wanted. But the lesson stuck with me -- "extensible" is in the eye of the beholder.

Eclipse, however, truly is extensible. What a pleasure it is to work with software that is so well designed for that purpose. Right now, I'm writing a plug-in that I know will take me longer than my simple assembler language routine did in 1974, but I can do things that are so much more complex. In addition, since the Eclipse community is there to help, I expect the task to be much more enjoyable and the end product less prone to defects.

The Eclipse plug-in page (see earlier footnote), which lists 825 offerings, is proof of the platform's extensibility. As for most Eclipse software, installing plug-ins is a snap. With the latest Eclipse releases, you can simply point to a particular Web site from within Eclipse and click a button. Figure 2 shows the wizard for loading the AspectJ Development Tools plug-in. If the plug-in you want doesn't yet support update sites, you can simply download it and unpack the plug-in into the appropriate directory -- which is also how Eclipse is delivered. To install Eclipse, you simply unpack it. As long as you have a Java JRE on your system, you're ready to go.

Not all Eclipse plug-ins are free. Many commercial tools are either delivered as Eclipse plug-ins or have Eclipse bundled with them. For example, the latest-release IBM Rational tools are hosted on top of Eclipse, including IBM Websphere, which provides many extensions to Eclipse. Once you have these tools installed, you can build extensions upon them as well as other Eclipse plug-ins. This flexibility should yield great benefits for organizations adopting these Eclipse-based tools.

Figure 2: Wizard for installing the AspectJ Development Tools plug-in

Figure 2: Wizard for installing the AspectJ Development Tools plug-in

Eclipse is also highly configurable. Its architecture allows each plug-in to contribute configurable options with the functionality. Even after using Eclipse for a couple of years, I'm sure I still haven't found all of the possible configuration capabilities -- but I've found enough to feel very comfortable with the environment.

You configure Eclipse through the Preferences window, shown in Figure 3. As you can see, I'm changing some Java compiler settings. You can interpret the several types of Java infractions in different ways, and the Compiler pane in the Preferences window lets you decide whether these are errors, warnings, or acceptable. The new Java editor, a folding editor, lets you select whether to fold the code or even view only the method you are currently working on.

I have found that it is very easy to establish a coding style, enforce it with the Eclipse preferences, and share that style with others. With a simple key sequence -- such as SHIFT-CTL-F on Windows -- the code is automatically formatted according to your preferred style.

Figure 3: Eclipse Preferences window

Figure 3: Eclipse Preferences window

Eclipse configurability is reminiscent of Emacs configurability. If you are an Emacs user, you have most likely added your own macros and shortcuts to customize it for your style. Eclipse follows this tradition.


Eclipse is industrial strength

IBM5 originally developed Eclipse as a proprietary platform, but in 2004 it helped form the non-profit Eclipse Foundation to oversee the technology's further development. Now, the foundation's governing board approves new sub-projects, and the foundation engages commercial organizations, academic and research institutions, standards bodies, and so on, to ensure that Eclipse is at the forefront of the software tools industry. This means that you can depend upon Eclipse as a viable, industrial strength tool for the foreseeable future.

When I take time to present Eclipse to my students, I know it is time well spent. Eclipse is something they can take to their jobs because it's used in so many organizations. If their organization doesn't already use it, then it's something they can introduce. Most of all, it has the features they will need to produce high-quality software. I am constantly preaching the sermon of people, process, and tools to my students, and Eclipse definitely illustrates the benefits of good tools.

In my software engineering classes, students are exposed, at a minimum, to:

  • The basic Eclipse Java development environment.

  • The JUnit unit test plug-in.

  • The CVS or the Subversion plug-in for version control.

Once they master these three technologies, they have a good basic software development toolkit, and it's easy to add new capabilities incrementally through other plug-ins.


The bottom line

Not all students take to Eclipse. Some are still stuck in a comfort zone with text editors, such as Textpad®, and command line program execution. However, most of my students who are exposed to Eclipse come away with a better understanding of the power of good development tools and increased confidence in their ability to work effectively in larger software development projects.

Here are two comments that different students made about their experience with Eclipse in my latest software engineering project:

Student 1: I used to believe that tools like Eclipse did too much work for you and made you a lazy programmer. When I see how much more can be accomplished when an amazing tool like this takes away trivial coding tasks, it is hard to see how any professional could afford to avoid using a tool like Eclipse. Consistent formatting, intuitive debugging, built-in CVS and JUnit support, class and package summaries and hierarchies, and GUIs for them all, make Eclipse a very friendly helper.
Student 2: Learning to use an advanced GUI like Eclipse to develop software was also excellent, as it eliminated a lot of repetitive and trivial work, leaving me more time to think about actual code and important algorithms.

Of course, students encounter problems, as they would with any product. Some discovered ways to crash Eclipse when using the visual editor. Some found Eclipse slow and "bloated" with features they didn't need6 -- but many changed their points of view once they had to actually debug other people's code. Most of their experiences were positive and very real.

Even students who did not end up loving Eclipse were exposed to real software, and they understood the level of quality I hope they can achieve when they graduate. They saw how to design and implement a robust product, and they found out how valuable tools can be. If you haven't tried Eclipse, I urge you to give it a try. You'll be glad you did.


Further reading

Below are a few Eclipse sources that I have found helpful.

  • The Eclipse Web pages (http://www.eclipse.org) have articles about every part of the product. They are a great place to get started and find detailed technical information.

  • The Eclipse ECESIS project pages at http://www.eclipse.org/ecesis/ offer a great video tutorial on how to use Eclipse and write plug-ins.

  • If you are new to Eclipse, I would recommend The Java Developer's Guide to Eclipse, 2e by D'Anjou et al., published by Addison-Wesley. This is a big, complete book offering useful information on most topics.

  • If you move on to building your own plug-ins, you will probably want to look at Contributing to Eclipse, by Beck and Gamma, and Building Commercial-Quality Plug-Ins, by Clayberg and Rubel. Both books are published by Addison-Wesley.

Notes

1 Start at http://www.eclipse.org.

2 To learn more about plug-in architecture, see http://www.eclipse.org/articles/Article-Plug-in-architecture/plugin_architecture.html.

3 The Eclipse Foundation is the non-profit corporation formed to further the Eclipse platform: http://www.eclipse.org/org/index.html.

4 The homepage for the Eclipse object bench is http://sourceforge.net/projects/ebob/.

5 See http://www.eweek.com/article2/0,1759,1750358,00.asp

6 We discovered that Eclipse 3.1, still under development, is much slower than Eclipse 3.0. Since we did not need all the features supported in the new release, most of the class used Eclipse.


About the author

Author photo

Gary Pollice is a professor of practice at Worcester Polytechnic Institute, in Worcester, MA. He teaches software engineering, design, testing, and other computer science courses, and also directs student projects. Before entering the academic world, he spent more than thirty-five years developing various kinds of software, from business applications to compilers and tools. His last industry job was with IBM Rational software, where he was known as "the RUP Curmudgeon" and was also a member of the original Rational Suite team. He is the primary author of Software Development for Small Teams: A RUP-Centric Approach, published by Addison-Wesley in 2004. He holds a B.A. in mathematics and an M.S. in computer science.

Comments (Undergoing maintenance)



Trademarks  |  My developerWorks terms and conditions

Help: Update or add to My dW interests

What's this?

This little timesaver lets you update your My developerWorks profile with just one click! The general subject of this content (AIX and UNIX, Information Management, Lotus, Rational, Tivoli, WebSphere, Java, Linux, Open source, SOA and Web services, Web development, or XML) will be added to the interests section of your profile, if it's not there already. You only need to be logged in to My developerWorks.

And what's the point of adding your interests to your profile? That's how you find other users with the same interests as yours, and see what they're reading and contributing to the community. Your interests also help us recommend relevant developerWorks content to you.

View your My developerWorks profile

Return from help

Help: Remove from My dW interests

What's this?

Removing this interest does not alter your profile, but rather removes this piece of content from a list of all content for which you've indicated interest. In a future enhancement to My developerWorks, you'll be able to see a record of that content.

View your My developerWorks profile

Return from help

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=Rational
ArticleID=85641
ArticleTitle=Why I teach Eclipse
publish-date=06152005
author1-email=gpollice@cs.wpi.edu
author1-email-cc=

My developerWorks community

Tags

Help
Use the search field to find all types of content in My developerWorks with that tag.

Use the slider bar to see more or fewer tags.

Popular tags shows the top tags for this particular content zone (for example, Java technology, Linux, WebSphere).

My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere).

Use the search field to find all types of content in My developerWorks with that tag. Popular tags shows the top tags for this particular content zone (for example, Java technology, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere).

Rate a product. Write a review.

Special offers