Developers get together to discuss the good, the bad, and the ugly of building Java-based software
All new technologies must pass through childhood and adolescence before reaching maturity. Remember back when using PCs meant struggling through DOS 4.x? Talk about an extended childhood! (Some might argue that Windows is still an adolescent, but I will leave that be.)
As a toddler, Java sought to allow cute little applets to execute in Web pages. As the language, platform, and related technologies matured into adolescence, people began to talk about significant Java applications. Corel promised office suites in Java. As with many adolescents, Java overextended itself without really understanding its strengths and weaknesses, and in cases, such as Corel’s hopes for the uber-suite, it failed miserably.
This year’s Software Development West conference (SD98), held February 9-13 in San Francisco, demonstrated once and for all that Java is rapidly maturing into adulthood. Vendors and attendees have recognized this coming of age and are building practical, real-world tools and applications using Java.
Perhaps one of the best indications of Java’s maturity at this year’s show was the lack of marketing hype that has surrounded everything Java since its inception. SD98 was focused, speaking to the day-in and day-out Java development issues we all face. Most sessions pointed out good and bad things about the technologies under discussion, and performance and compatibility with C/C++ were not shunned, but rather were featured in major courses and seminars.
Java design joins the rest of the object-oriented world The courses and workshops at SD98 were practical design and software development sessions. I was pleasantly surprised to discover that most sessions featured lively discussions with a lot of interactivity between the session leaders and the attendees.
The technical portions of the conference were divided into several tracks, featuring information on:
- Programming in Java
- C++ Programming
- Windows 95 and NT
- ActiveX
- User Interfaces and Usability
- Intranets and Client/Server
- Distributed Object Systems
- Databases
- Testing and Debugging
- Internet Servers
- Methods and Modeling
- Tools
Several sessions provided particularly useful information, including:
- “Judging Java Programming Idioms” by Ken Pugh
- “Inside the Java VM” by Allen Holub
- Several sessions on writing Java servlets
- The Unified Modeling Language (UML) courses
- The Windows CE and personal device programming courses
In his own piece on SD98, Bill Venners covers the first two of these sessions (see Resources), so I won’t go into detail on either session. Suffice it to say, I was impressed with both speakers’ depth and breadth of coverage. I think most attendees came away from each session which several tips to make their own design and Java programming a little easier, cleaner, or more reusable.
The servlet sessions brought timely information to intranet and Web server developers. Servlets are quite the hot topic these days, largely because they have several strong advantages over traditional CGI-based Web programming — once loaded, a servlet can stay resident; servlets easily can make use of other Java facilities like JDBC database access; and servlets are more widely supported than Web server-specific APIs such as NSAPI or ISAPI. Servlets are beginning to appear on high-volume Web sites and seem to be gaining in popularity. SD98 provided practical information at just the right time for a lot of would-be servlet developers.
I also enjoyed the talks I attended on UML and WinCE programming. As with the emerging recognition of the value of a common design language provided by design patterns, I believe the common modeling vernacular provided by UML can help developers practice better design. UML is both too broad and too deep to cover in this article, but I have included the URL for the UML resource center in my Resources so you can find out more on how UML might benefit you in your own design work. Definitely worth checking out.
Likewise, my growing interest in exploring opportunities in the PersonalJava and EmbeddedJava small device markets lured me into some WinCE talks. My conclusion: Stick with the Java-based alternatives if you can, but if not, WinCE APIs look to be workable and maybe even a little bit nicer to program to than Win32.
Some Java track sessions focused on theory and language-independent object-oriented design issues rather than practical how-to approaches. One of the deeper courses (during which the speaker himself remarked that he could see the audience was struggling to digest the ideas he was presenting) was Peter Coad’s “Java Design: Building Better Applications with Composition and Interfaces.” I was thankful that Mr. Coad included both UML and “Coad notation” versions of diagrams (that is, he included a companion, stick-figure-style diagram for each UML diagram). This approach made it easier for me to understand the intricacies of his UML models. In general, though, it seemed that some of his ideas had not yet been completely worked out to their natural conclusion. He even stated that some of the ideas he was airing for the first time in front of an audience, and that they he might need to do a little more work to get them into their final forms. The terminology was murky in places, and a lot of people appeared lost. This course could very well be superb with another year of polish, though, so watch for something similar if Coad speaks at SD99.
Finally, although SD98 focused on the more stable and common Java APIs than on newer ones, some courses were devoted to important upcoming technologies — notably the Java 2D API and the new support for Collections, both of which will become part of the core Java platform with the 1.2 release.
The “Advanced User Interfaces with Java” course by Ted Faison and a related follow-up course dealt with the upcoming Java 2D API and was particularly well attended. A standing-room only crowd learned how Java 2D supports more advanced 2D graphics manipulations and transformations than the standard 1.0 or 1.1 AWT allows. Java 2D builds in support for strokes, clipping, alpha channels, and more using extensions to the previous versions of the AWT.
Look for more information on Java 2D in an upcoming installment of my Java Media Programming column, scheduled to debut in the April issue of JavaWorld.
Practical products
Along with practical courses, SD98 vendors introduced a lot of useful updates and some interesting new Java-related products.
A major focus for tools was on performance. Intel was prominently showing its VTune 2.5 and 3.0 beta products. VTune uses debug information from Intel processors, and Intel C/C++ and Fortran compiler plug-ins or compliant JIT-compiled Java applications to generate performance information and statistics, helping to locate bottlenecks.
VTune includes a “Coach,” which suggests particular problem spots in your code and some possible workarounds. Intel representatives stated that VTune works properly with Visual J++, Symantec Visual Café, and Borland JBuilder JIT-compiled applications in at least some versions of each IDE, but did not have a precise list of supported tools/versions available for review. VTune, according to Intel reps, should support a JIT that generates Intel-compliant debugging information.
Intel’s approach, being external to the Java runtime itself, has the advantage of taking a system-wide view of the execution of your code. If you need to tune Java code running on Intel-based systems, and especially if you need to tune Java code that also uses native methods, VTune seems like a good CPU-aware performance tool. The biggest obvious downside is that it is so Intel-specific.
KLGroup, makers of JClass and several other popular JavaBean components (see JavaWorld honors winners of Editors’ Choice Awards for more information on KLGroup’s components) also announced a new Java performance profiling tool, JProbe. Unlike VTune, JProbe includes its own specially instrumented version of the Java virtual machine, which allows JProbe to capture profiling information as class files are loaded and executed in the VM rather than through an external API or through native-compiled executables. Of course, this approach does potentially add some overhead for the instrumented VM, but engineers at KL Group stated that the overhead was minimal (though no numbers were provided).
VTune is available for Windows 95 and NT, while JProbe literature states that it is only supported on NT 4.0. I would love to see one or both made available for other platforms, but given Intel’s desire to push their Intel architecture, I doubt we will see VTune ported any time soon. KLGroup, are you listening?
Another area of interest in commercial Java tools was decompiler technology. Ahpah Software debuted SourceAgain, its commercial decompiler with both regular and professional versions. The regular version appeared to be a competent and capable decompiler, and promises to fix certain problems common in many of the previously available freeware decompilers. The professional version adds the ability to directly insert debug information into class files so that you can step into decompiled source code without having to recompile the classes. This is a neat, practical, time saver for developers using third-party Java libraries, for instance.
Borland’s JBuilder, among many other interesting features, also includes a decompiler. When you load in new classes, JBuilder can go on its merry way and automatically generate source for them. JBuilder’s decompiler is based on the popular Mocha decompiler from the late Hanpeter van Vliet, and, in fact, JBuilder is dedicated in part to his memory. I applaud Borland for taking the step of including such an obviously useful and practical feature in its base IDE product, and I find it a fitting tribute for van Vliet, one of the early practitioners of “practical Java,” that Borland has dedicated a practical Java tool to his memory.
My cursory examination of both the SourceAgain and JBuilder decompilers indicated that SourceAgain was the more mature and fully featured of the two. Of course, if you are a JBuilder user, you already have their decompiler available with no extra effort or cost required on your part.
However, as an added bonus for potential SourceAgain users, SourceAgain is available for free trial in a Web-based version. You can type in the URL to one of your class files and Ahpah’s Web decompiler will spit back the code for you (see the Resources section for a link to SourceAgain on the Web).
Finally in the product update camp, Symantec was showing early versions of its 2.5 update to Visual Café for Java, and IBM announced version 1.0.1 of Visual Age for Java. Symantec will add an Open API architecture to its professional Java development products, which will allow developers to customize menus, build their own Visual Café wizards, and more. Symantec also promises to allow in-browser debugging within 2.5, a much requested feature. IBM’s Visual Age update adds support for AS/400 Java development and includes some new JavaBeans contributed by IBM partners.
Zaniness abounds
Just because our technologies have matured doesn’t mean we have. Engineers still have to have fun, right?
In keeping with this, SD98 also featured a programming contest, the Java Superbowl. Two representatives each from Borland, Sun Microsystems, SuperCede, Sybase, and Symantec used their own tools to build one or more applets while under the watchful eyes of a moderator, an esteemed judging panel, and several hundred of their closest Java developer friends.
Suffice it to say, the event was fun for all. Imagine hundreds of hackers and software engineers vying for tee shirts thrown high into the air from each of the contestant companies’ marketing staffs, accompanied by programming humor and the promise of pizza and beer to come at a Borland party afterwards, and you can get an idea of what the spirit of the Java Superbowl was like!
JavaWorld columnist Bill Venners was one of the Superbowl judges. His companion piece on SD98 (see Resources) provides more information on the Java Superbowl festivities.
Father Java speaks James Gosling gave the only Java-centric keynote at SD98. His keynote, delivered the morning following the Java Superbowl, couldn’t live up to the bowl’s energy, but was nonetheless captivating for a lot of the developers in attendance. The old E. F. Hutton commercial certainly holds true for Java developers and Gosling: When Gosling talks, Java developers listen!
Gosling centered his talk around the practical problems and challenges facing Java developers and engineers today, and obstacles to overcome in the coming year. He highlighted the biggest challenges facing JavaSoft and many of its partners today: Being able to simultaneously scale Java up into large servers and supercomputers and down into personal devices and even smartcards. He pointed out that this task was difficult in part because Java virtual machines have so far been deliberately optimized for portability rather than scalable performance.
I was also interested to see him discuss in detail the Seven Fallacies of Distributed Computing, first put forth by Peter Deutsch several years ago. Gosling argued that Java-based technology can allow us to cope with a lot of these problems, but only if we recognize them and build our software accordingly. The seven fallacies are that:
- The network is reliable
- Latency is zero
- Bandwidth is infinite
- The network is secure
- Network topology doesn’t change
- One administrator runs everything
- Transportation cost is zero
Gosling’s keynote has been written up in detail in several other daily and weekly online publications. So, rather than reiterate their Gosling quotes word-for-word, I’ve provided links to a couple of the better write-ups (see Resources). Be sure to check out the separate InfoWorld and Computerworld interviews for related comments on where “the world’s greatest programmer” thinks Java is headed. (Do you think Gosling will ever be able to live down that appellation with his close developer friends?)
Conclusions
Some conferences are almost an exercise in marketing and hype driven futility. If I had to rate SD98’s courses, product announcements, and exhibition space on a scale from heavy hype to particularly practical, my rating would fall strongly to the practical side of the scale. SD98 was a lot less flashy than Java events past, but then, isn’t it nice to get real-world information that helps you get the job done in addition to all of those neato tee shirts and buttons?