A popular free IDE for writing Java. It does refactoring. It was originally developed by IBM. It is an enormous
project encompassing more than just an IDE. Internally it uses SWT, IBM is a crack at tackling the same problem Swing
does, but more streamlined. You have the option of using AWT, Swing or SWT in your own code. Eclipse is Jon Skeet’s
favourite IDE. It is gradually becoming my main IDE too. It allows plug-ins for extra functionality. It uses its own
compiler that lets it do incremental compiles and hot swapping of code during debugging.
Downsides
My main irritation with Eclipse is the time it takes to start up, 38 seconds on my machine. Granted the competition,
IntelliJ is even worse at 87 seconds. However I am used to SlickEdit® that is ready to
go in less than a second. I have to get used to the idea of leaving it runnig all the time, even when I have no
immediate plans for it.
Eclipse Is A SCID
Eclipse is a almost a SCID.
You may have no interest in how Eclipse works under the hood, but you had better understand at least as much as I am
about to explain. Eclipse has its own copy of the source files. It also compiles them on the fly, as you type. This is
how it can navigate so quickly, do global renames, refactor, find references and declarations instantly, compile
instantly and undo changes, plugins etc. It does not use Javac.exe at all (except in an ant
build). It tokenises your source as you type, checks for errors and uses its own incremental/background compiler when
you hit save.
Every time you click save at saves a conventional *.java copy of
the class source on disk along with a corresponding compiled *.class file. However, if you
modify one of those files, delete it, rename etc., sometimes nothing happens. It is as if Eclipse were oblivious to your
changes. The true copy of your program is in RAM. Don’t touch Eclipse’s *.java
files while Eclipse is running.
Instead of meddling with Eclipse’s *.java files, export, fix
with your conventional tools and editors and the import the back again.
Import is the trickiest feature of Eclipse. Check after every import that your new source overrode the old and went into
the correct place. You can drag and drop to the correct place if it missed. It is so easy to mess up and effectively
lose all the work you did outside Eclipse. If you screw up, you can compare Eclipse files with your exported ones,
correct your copy of the files with SlickEdit Diffzilla™, and reimport them. Again,
there is no point in using Diffzilla to directly fix the Eclipse files. I suggest you experiment with a practice set of
files till you are sure you get the hang of import, export and refresh.
The full story is more complicated than I presented here. You can make changes to the source files if you know what you
are doing.
Eclipse itself is written in Java, and you will notice a copy of javaw.exe running while it is.
It is good example of just how polished a Java app can be. Show it to someone the next time they tell you there are no “real”
apps in Java.
Downloading
Eclipse is a 103 MB download. You likely want the release candidate, not the latest build. Eclipse has no installer. You
just unzip it to a directory of your choice then create a shortcut to eclipse.exe
you can add to menus or the desktop. It uses IE to display its online help files. You might want
to set up a bat file like this to launch exclipse.exe. Windows shortcuts are not bright enough to include command line
parameters. You can tweak the parameters for maximal speed.
Plug-Ins
Much of the popularity comes from the way Eclipse is designed like a Lego set where can add or replace pieces of it.
Some of the hundreds of plug-ins available are available from:
Though Eclipse is free, the plug-ins are not necessarily free. For example BEA
Workshop a plug-in to handle JSP, Struts, JSF
and Hibernate is
.
Directory Structure
In eclipse terminology a project is a not a package, but a related group of packages.
If the project were called savetheworld, and my package were called com.mindprod.stopbush,
then the *.java files it generates would live in E:\ecwork\savetheworld\com\mindprod\stopbush.
They are thus fully accessible by ordinary text editors and other tools, but as I warned later, don’t modify them
when Eclipse is running.
Tips
- If you accidentally close toolbars and Control Panels of various sorts, you can get them back again with Windows
⇒ show view.
- Ant is built into Eclipse. To get at it, click Windows ⇒ show view ⇒ Ant
- You set and remove breakpoints by double clicking in the margin to the left of the source code line. You can find things
out like that most easily by clicking Help ⇒ Dynamic Help which gives context- sensitive
help. The other help is difficult to find anything in. To examine values of variables during debugging you just hover
your cursor over them. This is not your grandmother’s debugger.
- To configure the code formatter, there are scores of places you have to individually tell it how you like your space
before and after ( x ) done — once for every conceivable possible context.
Don’t give up. Eventually it will format your code exactly as you like it, even as you type. Then you can do a
global reformat of your entire project to your finely tuned specification.
- the left and right margins are full of marvels taking up very little space. Hover and click to discover what they do.
- You can easily inadvertently reconfigure your system by dragging the top left corner of any panel to any place.
- To create a jar, you must export a jar. Eclipse does a poor job of building jars, foolishly
including all sorts of classes not needed. It pays no attention to dependencies. It does not even insert the Main-Class
entry in the manifest, much less list the contents or sign the jars. I solve this by exporting the project and building
with Ant after it is debugged.
- The error messages are not what you are used to. Just look where it is putting squiggles as you type. That is a spot
with an error. Fix them as you go, right away!. It is much harder to sort out problems after you let them pile up.
- To exclude a file from being considered for compilation, you must exclude it from the build path. Use the build
path ⇒ exclude ⇒ browse to select the file. If you type it, remember no dots, use / and a trailing /
for a directory.
- To view references or definitions, you don’t just right click on an identifier. You
must first double left click to select the whole word, then right
click. I would call that a bug, until someone explains to me why it has to be that way.
- In Eclipse, you enable assertions by using the JDK 1.4+ level compiler then click run ⇒
arguments ⇒ VM arguments then enter -ea. There is no special checkbox to tick.
- In the Eclipse editor, F3 does not mean repeat-find the way it does in nearly every other
Windows editor. You can rectify that by clicking Window ⇒ Preferences ⇒ General ⇒
Keys ⇒ View (Category: Edit, Command: Find Next) ⇒ Edit ⇒ Key.
- To use SWT, you need to download an additional swt.jar and some DLLs.
- It is possible to natively compile Eclipse
itself using JET for extra speed.
- To see the Javadoc for anything in rendered HTML, (including your own code), highlight a reference and click
window ⇒ show view ⇒ Javadoc.
- Learn to use the package outline to natigate around your code rather that scrolling or search. You also have the show
declaration and show references.
- Eclipse won’t tidy/reformat your code if there is even the tiniest error, even though that is when you most need
the reformatter to help you find the unbalanced { or ( etc. So use the reformatter often. Save often to trigger a new
round of error messages. Fix errors as soon as Eclipse discovers them. If you procrcastinate, you will have a mess on
your hands and Eclipse will refuse to help you clean it up.
- I have not yet found out how to get Eclipse to work in column mode. In SlickEdit®, you
just right-click to move rectangular blocks of text, delete rectangular blocks of text, or limit global operations to a
rectangular block. In IntelliJ, you turn on column mode. It the meantime, I just copy a file back to SlickEdit, and work
there, then return. Similarly I have not found a an equivalent of SlickEdit DiffZilla® to intelligently compare two
pieces of code for differences. Again, I just hop back to SlickEdit. For safely, on the Eclipse side, I save and close,
though I don’t usually shutdown Eclipse entirely, do my work outside Eclipse, then do an Eclipse refresh. For
smaller bits of work, I just cut and paste.
- One of the slickest things about Eclipse (and IntelliJ) is the way it breaks String literals for you. If you had a String
literal like this:
"Please take your purchase of 12 apples to the counter."
Put you cursor just before the 12 and hit enter then just after and hit enter.
The code transforms to:
"Please take your purchase of "
+ "12"
+ " apples to the counter."
You can then, in a twinkling, change that to more generic code:
"Please take your purchase of "
+ appleCount
+ " apples to the counter."
Unfortunately, Eclipse is not as clever about gluing String literals back together. Further,
it is not smart enough to insert the backslashes needed to deal with embedded quotes.
Upgrading to Eclipse 3.1.1 from 3.0.1
Click Help ⇒ Software Updates ⇒ Find and install ⇒ Search for new features
Then add a new remote site with label of Eclipse SDK 3.1.1 Updates and an address of http://update.eclipse.org/updates/3.1
Then tick the new site, and select finished button.