Like a lot of developers out there, Eclipse is at the core of all my development activities. It's been that way for me for years. In this article, I'm going to list the five killer features/plug-ins that I use daily within Eclipse that make me very reluctant to move to another development environment.
I have to admit that I was a bit late to the Mylyn party, but only because there was no connector available to connect to the company bug repository. Thankfully, I tracked one down (see QCMylyn), and since then I haven't looked back.
The advantages of Mylyn are quite well known, but it isn't until you start to use Mylyn that you really see the benefits. I no longer need to keep a browser open on the side to see what bugs and tasks are assigned to me- I get them in the task list view. And then, when a new bug/task is assigned to me I get a system tray notification - no need to check my email for new issues.
And that's just the beginning - the task focussed UI is a brilliant way of keeping track of what files are related to your current task. Sure, it took a bit of getting used to, but once you do, it becomes second nature. Finally, I can use Mylyn to keep track of my own to-do list by using the local repository to store my own tasks.
It tends to get more than it's fair share of bad press, but for me, p2, the software update mechanism is essential.
Being able to simply add in an update site, and get the latest version of a framework or plug-in makes the developers life really easy. No need to worry about dependencies, or unzipping a plug-in download to the plugins folder. Everything is managed for you through this simple dialog.
Enterprise Java Tooling
It's a broad topic, but Eclipse has some of the best tooling available for JEE projects. It's not my usual type of development, but recently I needed to get setup to developer on an enterprise project. While I could have updated my current Eclipse instance, I just downloaded the complete Eclipse IDE for JavaEE bundle to have a dedicated Eclipse installation for my web based work.
The amount of functionality available here is outstanding - from wizards for Web Service creation, excellent JSF and JPA tooling, to XML editing.
It's a simple feature but I really like the servers view that allows you to control and deploy to your server of choice. If your server isn't listed as one of the available to deploy to you will typically be able to find a plug-in to support your server.
The recognition of Eclipse for enterprise Java development is prevalent across the industry. The recent GlassFish v3 release included a GlassFish Bundle for Eclipse, while the SpringSource Tool Suite makes full use of Eclipse and Mylyn to deliver quality tooling for Spring developers.
Model Driven Development
The Eclipse Modelling Project provides a nice set of modelling tools for those using EMF and related modelling technologies. The Ecore Tools available to work with EMF models allow you to create and modify your ecore through a standard tree, or using the visual Ecore diagram editor (see below)
Of course, you'll need to be using EMF to benefit from these tools, but the tools themselves provide a compelling reason to use EMF for your modelling. Rather than having a UML diagram, seperate to your source code, to represent your model you can have synchronisation between design and implementation using these tools.
The Smaller Features
Along with the four features I've listed above there are many other small features that together really help to make a developer's life easy in Eclipse.
For example, this post explains how you can force a format of your source code every time you save - essential if you want to ensure that you're following source formatting guidelines.
Perspectives are another essential. Being able to switch the context from Plug-in Development, JEE, Debugging or a perspective of your own creation really helps to keep things clear.
JUnit integration is another big win - I know it's not exclusive to Eclipse, but it's a nice view and gives good visibility into your testing tasks.
You'll find many plug-ins to help you along at the new Eclipse Marketplace (formerly known as EPIC). If you need plug-ins for checking code style, static analysis or connecting to your version control system, you're sure to find it here.
No doubt I've missed something the makes Eclipse essential to you, so please feel free to share your own favourite features here.