A Recipe Book for Obscure Solutions

A sad attempt at clarifying a muddled landscape. Missing pieces, often unclear, and very non-linear.


The Microsoft Developer’s Studio 6.0 is a major, important release for the heavily used Windows development environment. Combining Visual BASIC, Visual C++, Visual InterDev and Visual J++ in a single development environment, in and of itself, is no small feat. The environment is impressive in multiple and subtle ways, provides a foundation for easy navigation, source code development and interoperability. The IDE is fully programmable and the new packaging features are a leap forward in facilitating program delivery. The Visual J++ Programmer’s Guide is designed to help programmers work with the Visual J++ part of this comprehensive new release.

A programmer’s guide should provide the answers you need to make your way though the development process. At the very least, it should present all the critical topics in logical form and facilitate the learning process. Although I find the recipe book nature of most Microsoft documentation generally frustrating - after all, we can pull down menus and read the buttons easily enough to make sense out of the obvious - the obscurity of their Java strategy takes this virtually over the top.

I have no direct objections to Microsoft’s Java tools, other than the missing parts of the Java standard. I’m prepared to learn about the Windows Foundation Classes and what it means to work with ActiveX. I want to know as much as possible about J/Direct. I need to understand how COM and Java Beans work together and, yes, I even want to know about the Microsoft classes that expose things I can’t get at any other way. Evidently, however, this books is not the place to find that out. Chapter 5 "Introducing Wizards and Builders", Chapter 7 "Packaging and Deploying Projects" and Chapter 8 "Managing Projects with Source Code Control" are virtually missing, with a single page or less and a typical reference to information at some other location.

If you’re starting from ground zero, inexperienced with integrated development environments, you may find the chapters that cover creating projects, designing forms, editing code and debugging applications instructive. There were no tips, tricks or insights worth noting in any of those chapters and the recipes would have been more easily discovered by anyone poking around the interface itself. The reference information in Chapter 9 "Compiling Applications with JVC" and Chapter 10 "Viewing Applications with JVIEW and WJVIEW" seemed much more valuable.

A full listing of error codes is presented in Appendix A and consumes over 100 pages. It may be useful to those who prefer having this in print. Appendix B "Conditional Compilation" explains the new compiler directives introduced in J++ 6.0. Most Java enthusiast might object to these and argue that they break the model and make any such code non-portable. This is accurate, so use this feature at your own risk. Appendix C covers all the Java reserved words, including multicast and delegate, introduced by Microsoft without Sun’s consent. They do, at least, point this out, but the documentation is too terse to be very useful.

The coverage of WFC is spread across four chapters. Dynamic HTML and related graphic services are covered in two chapters, ActiveX and COM in another pair of chapters. J/Direct is explored in a single chapter. All this coverage is important but seemed too shallow to give me the information I needed, not even enough to gauge my own commitment. I’m willing and interested in learning about all this, yet I didn’t find any compeling evidence that there was an advantage to any of these strategies. Using J/Direct is relatively simple, for example, but I was left with too many unanswered questions about the implications. The WFC is intriguing in many ways but really amounts to bypassing the whole Java 1.1 event model in favor of the old Windows callback model. This seems too much like a step backward to me. The callback model and necessary casting everywhere is much less elegant, but I can still see where it might be useful in some cases.

All in all, I was disappointed by this book. Perhaps I was looking for too much, or maybe its too early to take too close a look at this technology. Microsoft’s Application Foundation Classes, so large a part of their Java strategy only months before, has seemingly disappeared (in this book at least). Developing pure Java applications, obviously an options with the tool itself, is never mentioned. JavaBeans, third party components, packaging JAR files, distributing for use in multiple browsers, never touched on. In short, the Microsoft approach seems to obscure anything not purely theirs (something they do not seem to do in any of their other development tools), yet the coverage for their own replacements falls so far short as to be virtually impractical. If you need to apply these technologies, this book may provide a few hints. It didn’t do much for me.