At JavaOne, Coverity -- the leader in automatically improving software quality and security in C/C++ and Java -- announced the release of Coverity Thread Analyzer for Java. The product is the first dynamic analysis tool for multi-threaded applications that automatically detects concurrency defects that can cause data corruption and application failures. Coverity Thread Analyzer can also be used in concert with Coverity Prevent, the industry-leading static analysis tool, to create a powerful software quality solution that will help developers control the complexity of writing multi-threaded applications.
“The continued growth of multi-core processors has forced development teams to begin creating multi-threaded applications whether they are ready or not,” said Michael Monticello, security and risk analyst at Enterprise Management Associates. “To successfully eliminate the concurrency defects inherent to multi-threaded applications, organizations need sophisticated new tools that pinpoint these hard-to-find issues so developers can focus on bringing secure and reliable new products to market.”
Coverity Thread Analyzer for Java observes code as it is executed and identifies race conditions and deadlocks. The product is unique in the field of dynamic analysis because it detects not only problems that will occur in limited testing environments, but also problems that have the potential to occur over extended operations in field environments.
This distinction is particularly important for multi-threaded applications that, due to their complexity, may run without failure for extremely long periods of time before a “perfect storm” of system events triggers a concurrency defect. For example, the North American blackout of 2003 was due to a race condition that occurred after 3 million hours of consecutive system operation.
“We just evaluated Coverity Thread Analyzer on one of our equity trading applications. We were impressed with Thread Analyzer’s ability to dynamically identify, with pin-point accuracy, complex concurrency issues in our Java code,” said Hidekazu Sugiura, Director, Financial IT Division, Simplex Technology.
Coverity Thread Analyzer is also the first dynamic analysis solution that can reduce the risk inherent in migrating complex, single-threaded code bases to perform effectively in multi-core environments. The product accomplishes this by reporting thread-shared data to users, indicating locations where a locking discipline should be introduced. This allows developers to pro-actively identify existing and potential concurrency issues, so they can eliminate them before they cause failures in the field.
Coverity Thread Analyzer also combines with Coverity Prevent, the static analysis tool to give Java developers a comprehensive analysis solution that offers unmatched capabilities to identify and eliminate concurrency and other critical code defects that can cause slowdowns, failures and crashes. These two Coverity products integrate static and dynamic analysis by adopting the strengths of each technique to enhance the other. Specifically, the combined solution accelerates and lowers the overhead associated with dynamic analysis while further improving the accuracy of static analysis through the elimination of false positive results.
Unlike other dynamic analysis products that impose a memory and/or runtime overhead between 10x and 100x on the software systems they analyze, Coverity Thread Analyzer has a low 2x overhead for most programs, enabling the tool to be used in select production environments that include interactive applications and applications with strict timing requirements.
“As the demand for multi-threaded Java applications continues to accelerate, software developers are now faced with the pressure to deliver significantly more complex products, often on the same tight timelines as the single-threaded products that preceded them,” said Ben Chelf, chief technology officer at Coverity. “Coverity Thread Analyzer and Coverity Prevent help developers create high quality multi-threaded applications by combining powerful technologies to help them eliminate concurrency defects that are nearly impossible to detect with conventional methods.”
Coverity Thread Analyzer for Java simplifies the process of testing complex multi-threaded applications that execute concurrent operations. Product benefits for developers include:
* Automatic Defect Detection
* Low Overhead
* Eclipse IDE Integration
* Coverity Prevent Integration
Coverity Thread Analyzer is a standalone product that runs on the following platforms: Linux (32-bit & 64-bit), Solaris Sparc, Solaris X86, Windows XP and Server 2003, Mac OS X. The product supports Sun JDK 1.5, IBM’s 1.5 JVM and BEA Jrockit 5.