Some reader favorites:
EJB fundamentals and session beans
Create a scrollable virtual desktop in Swing
Wizard API updated!
Tim Boudreau has released a new version of the Swing Wizard library (version 0.997) that fixes the WizardException bug reported in JavaWorld's recent Open Source Java Project profile. The article's examples have been reworked to test out the new, improved WizardException. Thanks, Tim, for this helpful fix!
Open Source Java Projects: The Wizard API
To understand performance characteristics and therefore where to expect bottlenecks, I ran benchmark tests on the following typical Java language constructs: method call, try/catch set-up, object creation, array creation, and array accessing. I didn't run tests of network I/O, disk I/O, or AWT performance -- the focus was purely on Java language performance. The tests were designed to avoid paging to disk.
Most of the tests required no garbage collection, so general system performance cannot be inferred by simply adding the results from the various tests together. I ran no general computation tests like "Tower of Hanoi" or "Sieve of Erastothenes." I omitted general computational tests because they're dedicated to showing relative speeds on differing platforms, and rarely show where bottlenecks are.
The benchmark tests I ran for this article were performed on a range of hardware systems and Java environments. The Java environments were:
| Description | JIT |
| Netscape Navigator 4.05 for Windows NT/95 | Symantec Java! ByteCode Compiler Version 210.065 |
| Netscape Navigator 4.05 for Power Macintosh | Yes |
| Internet Explorer 4.0 for Windows NT/95 | Yes |
| Symantec Visual Cafe PDE 2.1a for Windows NT/95 JDK 1.1.4 | Symantec Java! ByteCode Compiler Version i300.009 |
| Netscape Navigator 4.05 for SPARC | No |
| Netscape Navigator 4.05 for Linux | No |
The hardware/OS platforms were:
| OS | CPU (MegaHertz = MHz) | RAM (megabytes = MB) |
| Windows NT SP3 | Pentium Pro 200 MHz | 128 MB |
| Macintosh 7.6.1 | PowerPC 604e 180 MHz | |
| Solaris 2.5.1 | UltraSPARC-1 167 MHz | 128 MB |
| Red Hat Linux 5.1 | Pentium-II 266 MHz | 128 MB |
| Windows NT | Dual Pentium Pro 180 MHz | 32 MB |
To compare the various systems, I converted the time it took to perform the various operations into clock cycles. Why? This conversion makes it possible to compare machines running CPUs at different speeds. In general, comparing different CPUs to each other in such a crude way can be dangerous, because the amount of work that can be done in a single clock cycle can vary a lot from CPU to CPU. The 80486, for example, averages about 2 clock cycles per instruction, while the Pentium executes closer to 1. Fortunately, the PowerPC 604e, UltraSPARC, Pentium Pro, and Pentium-II are roughly comparable. While cache behavior could be different between the various systems, this seems not to affect the performance much. All the tests ran without paging to disk.
Special resources
For information relating to the benchmark testing, I've provided the following links:
Free Download - 5 Minute Product Review. When slow equals Off: Manage the complexity of Web applications - Symphoniq
![]()
Free Download - 5 Minute Product Review. Realize the benefits of real user monitoring in less than an hour. - Symphoniq