If you wanted a home theater system, would you buy a shrink-wrapped solution - a preconfigured system from a single brand? Or are you one of those folks who would like to buy a TV from here, a receiver from there, and speaker from hither, and the amplifier from yonder? Because you can mix and match the best with the best. Of course, if you are the latter type, you have to know enough about connecting electronic components to set things up on your own, because coordinating support from multiple vendors can definitely be a headache.
If you are architecting J2EE solutions, would you rather buy your complete solution from one vendor, or would you like to shop for alternatives? Personally, I like one-stop shops, especially when the product I'm purchasing is just a means to an end - the entire solution provided by a single vendor. The reason is that integration between different products and components becomes a less formidable task. However, the catch is: What is the configuration of the products? Many times the configuration of a product suite ends up being the integration effort you were trying so hard to avoid. The reason? The J2EE vendor from whom you purchased the product actually bought it from several different vendors, marketed it under one single product suite, packaged it under one installation package, and made it available to you under one pricing scheme.
At the end of 2002, one of the large acquisitions in the software industry was that of Rational by IBM. (You may have seen SYS-CON's coverage of that.) The IBM WebSphere IDE already has some level of integration with Rational products, so the question is will this improve things for the development community? IDE integration with a CASE tool like Rose still requires you to work in two environments. You design in one, code in the other, and the integration plug-ins basically keep these two efforts in sync; however, you do have to switch between environments. Of course, Rational also offers code editing features, but would you use Rose to write Java? I wouldn't. It isn't as feature-rich as a Java IDE.
Another example is UML support from Borland's JBuilder (6.0 and up). It allows you to generate UML class diagrams within its IDE. But these are not dynamic - you can't edit them graphically. Another level of integration is through an extension that allows Rose to maintain consistency by pulling in code from JBuilder and generating the graphical representation. This is useful for reverse engineering but, then again, you still have to work in two environments.
The latest release of Oracle JDeveloper seems to have one of the most integrated offerings that provides a consolidated environment for UML design and J2EE development. This is because they have their own homegrown modeler that's a part of JDeveloper, and it may have enough features for developers to design the basic elements and go straight to code.
With IBM's acquisition of Rational and Borland's of TogetherSoft last year, it seems that acquiring and integrating these products is the trend. What would be really useful is for IBM to come up with a modeler within Studio or for Rose to have a full-fledged J2EE environment. When these products are bought separately, it is counterintuitive to shift from one environment to another.
If you're looking for a good book on Java and XML binding, check out Java and XML Data Binding by Brent McLaughlin (O'Reilly). It had useful insights on JAXB, Castor, and other alternatives for generating Java objects from XML.
Ajit Sagar is the J2EE editor of JDJ and the founding editor of XML-Journal. He is a senior technical architect with a leading global consulting and IT services organization and is well versed in Java, Web, and XML technologies.