This is one of two books that I purchased at Java One a few weeks ago (I also have the Gamma/Beck book which is also part of the same series). It is well organized and very easy to read. I have dabbled in writing Eclipse plugins in the past, but never felt like I had a really good grasp of the entire process. This book presents a very clear and concise road map for how to build and package a complete plugin. The book is full of useful tips and words of wisdom that obviously come from years of experience. The authors have also put together some incredibly useful diagrams illustrating how various elements fit together that I had never seen presented anywhere else. I would love to get some of these diagrams printed up as a stand alone poster. I've even photocopied a couple of them and have them taped to my office wall for quick reference.
In detail, here is what I liked about several of the chapters:
Chapter 1 - This is a very nice intro to using the Eclipse 3.0 tool set for anyone new to Eclipse. Some nice tips are provided for how to make Eclipse run faster and better configure it for use in Java development. As a former VisualAge Java user, I appreciated the authors tips on how to set up Eclipse to replicate some of my favorite VA Java features.
Chapter 2 - This is a very quick, short tutorial on how to get a quick plugin up and running. Here the authors introduce the "Favorites" example that they enhance through out the book. It is a well chosen example that, while simple on the surface, provides a great deal of opportunity later in the book for deeper enhancements. Unlike some book-length examples I have seen elsewhere, this one is actually useful. I found a couple of minor places where I had some problems (presumably due to some last minute changes to the Eclipse API). Fortunately, the authors have set up an excellent support site for the book (which also includes an errata section). The section on creating a plugin test is a bit short and could have used a longer explanation. For an exhaustive description of setting up plugin test cases, the Gamma/Beck book is very good.
Chapter 4 & 5 - These are excellent overviews of the Eclipse SWT and JFace libraries and provide just enough info to get you started building a plugin. I found the section on the history of SWT to be fascinating given all of the Swing vs. SWT discussions in the press over the last couple of years. Each widget, viewer and layout manager is described and an example is provided. Relevant API listings are also provided so that you can easily use the book as a standalone reference when you don't have the Eclipse javadoc handy. The book web site was helpful in getting some of the JFace examples running (i.e., which additional JAR files were needed).
Chapter 6, 7 & 8 - These chapters cover Eclipse Actions, Views and Editors in great detail and helped solve several difficult problems I had with a plugin I am working on. These chapters also included numerous tips and several excellent diagrams showing how the various plugin.xml entries relate to what you see in the workbench. These chapters (and most of the following chapters) end with a section on how to pass IBM's "Ready for WebSphere" certification requirements. While not immediately useful to me, I can see how this would be very useful to someone building a commercial plugin.
Chapter 12 & 13 - These chapters cover Preference Pages and Property Pages in great detail. Again, lots of useful tips and diagrams are presented. At this point, the emerging favorites example is really starting to take shape, and you can clearly see why it was a good choice for covering a lot of different plugin development topics.
Chapter 15 & 16 - These chapters covers implementing Eclipse Help and Internationalization (topics often ignore by a lot of plugin writers). While pretty simple topics, the authors do provide some nice tips on how to use anchor points, how to internationalize your help, how to access help programmatically, and how to write you code to make internationalization easier.
Chapter 18 - This chapter covers Features and Branding. "Features" are the standard mechanism for grouping multiple plugins into a single products. Much of the material here applies directly to the topic of how "commercial quality" plugins can establish their own identity within the Eclipse workbench.
Chapter 19 - What can I say? I loved this chapter the most. I had been struggling horribly with the problem of how to get my plugin working under both Eclipse 2.1 and 3.0. This chapter provides some very easy and elegant solutions to problem of how to build and deploy a plugin on multiple versions of Eclipse from a single source base. The authors also provided some very useful tools and utilities (CPL licensed from the book web site) for helping automate the process. This chapter by itself is worth the entire price of admission!
Chapter 20 - This final chapter covers a collection of advanced topics that the authors thought were important but that didn't fit in well elsewhere (many are referenced from earlier sections in the book). Some of the many advanced topics covered include how to set up reference projects (useful for searching Eclipse APIs), how to parameterize an extension point, how to use label decorators (very cool!), and how to use the Eclipse Jobs API.
While the authors state up front that the book was completed before Eclipse 3.0 was finalized, I found only a couple of places where the material presented was out of sync with the final Eclipse 3.0 release. The main point of this book is to teach you how to write high-quality, "commercial grade" plugins. It isn't about how to build plugins that only run in Eclipse 3.0. Where possible, the authors have tried to present examples that will run in Eclipse 2.1 and 3.0. In the few cases where I noticed that they use deprecated API, it seemed to be perfectly appropriate. Several of the new Eclipse books I saw at Java One claimed to cover 3.0, but only had a few pages devoted to that topic. This book really does cover 3.0 pretty well and the points where it diverges are minor and don't detract from the book as a whole.