First, overall, now that I have gotten back in the water, I am really psyched about PDE dev. Given the perspective of my latest obsessions (Lean), PDE gets very high marks:
- The ability to actually unit test what you are writing in its native environment is HUGE!
- The whole cycle is VERY fast. I would like to see the PDE unit tests run faster (SSD/more RAM for that), but overall, the whole cycle is very good.
- Having loved TestNG, I have gotten a first taste of JUnit 4 in a long time, and it‘s pretty sweet. The regular (non-PDE) unit tests run much faster than TestNG unit tests. The plugin is better. It shows execution times on each test. It has a wizard for generating a test. Might have to go that way in general as TestNG has some other challenges (that I have blogged about), like not really being properly supported w/*Spring* anymore (though that tire may be changed first).
- I like the Gamma/Beck book a lot. It really is a great programming book. I got the one from the Instantiation guys; not liking that one so much. The book is a great mixture of rationale/practical hands-on/methodological material.
This is making me think that when I return from this little respite to regular JEE dev with RichFaces and JBoss Portal, I am going to have to get some kind of container testing hooked up or I will go crazy. I saw the poll the other day that was blogged about here about TDD and how its adoption has gone from something like 10 to 14 percent in years. That's sad. I would never hire anyone who doesn't do TDD, and people who just refuse to write tests are useless. (This is another reason I am hellbent on getting easily, fully integrated container testing going (gonna look at JSFUnit some more), because one of the last places for the club-carrying cretins to hide is behind the old ‘well I am writing ui code, that‘s why I haven‘t checked in a test in 3 months.‘)
Now for a few not so great things about PDE:
- Documentation is not a strong suit, still. The JavaDoc in their code is PATHETIC!! I mean, seriously, like don‘t bother bad.
- The Gamma/Beck book has some code that goes with it. One of the key classes is one called TestProject that is a fixture for doing PDE JUnit tests. The code has not been updated in 5 years and has a ton of deprecations in it. I went searching on a bunch of sites and found literally almost no evidence that these classes are used. What‘s worse? I asked Ed Merks on the eclipse IRC channel and we went and he told me that EMF had a bunch of unit tests and we ought look at that code. Checked it out, and it is well-covered by tests, but none are PDE tests (they have a good reasons for not doing PDE JUnit tests, so I am not busting on them). Have not found many of these in the wild. The ones in the commercial quality eclipse apps book were anemic: a few pages, showed nothing more than showing and hiding a view.
- Overall, the API is impressive. Some things are insane though. For instance, figuring out who to write out a source file after you have generated it with JET was a nightmare. There is code in G/B, but it‘s kind of nutty: you have to get a stream, turn it into an InputSource, make a Byte buffer, then check state, etc. Has anyone ever heard of OO? Surely this is a case of the organs being left on the outside of the body when we can‘t just have a factory or something for this. Even creating a folder in a project is ugly and procedural, and finding out how to do it is a nuisance.
- Many of the examples are old and the code has changed since. Is no one using a lot of these tools, e.g. JET? Seems to be the case. Someone has to adopt the attitude of ‘this stuff is good, no one will ever use it if we don‘t keep up the docs/tutorials‘ or just throw it away. (A general broken windows score [see The Tipping Point on eclipse would not come back as a 10, unfortunately.)
- The editors are awful. I have said this before: if eclipse really is about extension and leverage of other plugins, how can I not have code completion inside the tags when I am editing the plugin.xml file? (BTW, it also took way too long to figure out how to make a plugin class: again, the typical scenario: G/B not a reference because this has all changed, there was a long chain of deprecations, until we finally figure out that the Activator supercedes this need (in congress with the gradual takeover of OSGi). (Too much time as small time dick, plumbing through archeological layers…)
All that said, believe it or not, I give this a huge net positive rating right now. I am fired up to do some more programming with it. Yesterday, I was thinking I might not be able to wait for the Intel SSD drive. Was reading some reviews of the Samsung OEM SSD on newegg: 13 people, 13 5 star ratings, one of them saying he could never go back to a machine with platters.
Using eclipse w/out WTP really is like being in a different product. Someone at eclipse needs to figure this out: it‘s not like the signs aren‘t everywhere (but even if you are not paying attention: try developing something w/WTP, you will find out what a pox it is).