WAS 6 implements the J2EE 1.4 spec, so it does everything described there, and it also provides some additional features. WAS developers are not required to use them, but many developers find them helpful. The extensions used to only be in the top-end WAS 5 configurations, WAS EE 5.0 and WBI-SF 5.1, but now are available in all WAS 6 editions/configurations, starting with WAS Express 6.0.
I have somewhat mixed feelings about using the extensions. On the one hand, I think it's a good idea to stick to the specs and keep your code portable to any J2EE implementation. On the other hand, IBM doesn't add these features to flout the specs, but to supplement the specs with additional solutions for common application needs, additional features that are better (we think) than what's provided in the specs. So the tradeoff is a small amount of development (a few days' worth) using the extension or a lot of development (weeks' or months' worth, plus maintenance) that sticks to the spec. Given that choice, I prefer to take the simpler path first and use the WAS-specific extension, and encapsulate the code so that it only affects small parts of my app. If and when the extension becomes a problem (such as needing to migrate to another J2EE product), then you can spend the time and effort to reimplement the code not to use the extension. (This is the XP/simplest thing approach; see Developing Code: Make it work and Some Quotes from Kent.)
Wayne's been documenting many of these extensions on his blog: DistributedMap, Startup Beans (which also discusses Asynchronous Beans).
Here's where to get some more info:
- Learn about WebSphere programming extensions (WAS Express 6.0)
- Migrating WebSphere programming model extensions (PMEs) (WAS Express 6.0)
- IBM Education Assistant: WebSphere Application Server programming model extensions
- Examining the Programming Model Extensions by Roland Barcia