The distribution of business intelligence through a network of organizations within an enterprise requires the evolution of spontaneous networks, which in turn requires middleware that facilitates intelligent communication of information regardless of platform, device or application. In this context Java provides a natural platform-neutral object-oriented approach that supports a scalable messaging service, JMS (Java Messaging Service), now a standard part of the Java 2 Enterprise Edition (J2EE).
Leading the way with a JMS interface to their messaging service is SoftWired, whose iBus//MessageBus is the first of seven products that allow companies to build scalable electronic business systems more easily. iBus distributes messages and business events through various communication protocols to diverse applications. SoftWired decided to use Java for this product as early as 1996, when few tools were available to assist developers with this relatively new language.
Lightweight messaging middleware written entirely in Java is the core of SoftWired's iBus solution. This publish/subscribe middleware allows any type of computing device (PC, server, mainframe, PDA, cellular phone) to efficiently exchange information by any communication protocol (IP multicast, TCP/IP, HTTP, wireless).
Working as a unit of nine developers, SoftWired needed to ensure that MessageBus was fast and efficient enough to deliver business events in near real-time. When Silvano Meffeis, executive vice president of SoftWired, encountered a performance problem in the module that set up the network configuration, he used JProbe Profiler from KL Group to find the cause.
He had suspected that the problem lay in serialization/deserialization of the network objects. "That was only a guess until I ran Profiler, which pinpointed exactly where we needed to optimize." JProbe soon became an indispensable part of SoftWired's development: "JProbe Profiler enabled us to enhance the performance of our Java messaging middleware by 50%."
Meffeis also found performance bottlenecks in unexpected places. He found that using the "+" operator to concatenate strings was simple to code but expensive to run, since each concatenation actually created a StringBuffer object that was thrown away after use. Detecting performance problems related to string manipulation would have been difficult without tools such as Profiler, since the calls to these methods were distributed throughout the package. After witnessing the effects of the methods on the system's overall performance in Profiler, Meffeis decided to use them less often. By converting the strings to byte arrays before transmission and converting them back to strings only if required, Meffeis improved the performance of the module by 20%.
Using JProbe Profiler on MessageBus was just the beginning. JProbe's Memory Debugger (fully integrated with JProbe Profiler) enabled SoftWired engineers to find message objects that were no longer being used but still taking up precious memory. Once these objects were located, following the stack trace back to where these objects were created was easy, enabling the developers to manage them more effectively.






