IBM Real-Time Class Analysis Tool for Java
A tool enabling the deployment of real-time Java applications without manual definition of classes to be preloaded.
Date Posted: August 31, 2006
|
|
 |
 |
|
What is IBM Real-Time Class Analysis Tool for Java?
Developers of real-time Java™ applications must ensure that, during execution of their application, there are no unpredictable delays caused by class loading. Traditionally, this problem has been resolved by manually loading classes in advance, which is an error-prone and cumbersome process that requires updating when the application is modified. Another approach is to preload all the classes, but that unfortunately takes significantly more time and space.
IBM Real-Time Class Analysis Tool for Java provides real-time developers with a means of deploying their Java applications without manually defining the classes that should be preloaded.
In order to determine the list of classes that the application will actually use and reference, this tool scans the Java bytecode of the user's application as well as the classes that it uses. The tool then generates a Java source file containing a static method that can be called by the application to preload and, optionally, pre-compile all these classes.
This technology runs on Linux® (Red Hat or SuSE) and Windows®.
How does it work? The tool reads the bytecode for the main method of the application and then proceeds to locate all methods that can be called by the main method. This process is repeated recursively until all methods have been loaded. Three key areas are tricky to handle:
- A method or an interface dispatch could go to many targets since Java is an object-oriented (OO) language. The algorithm is conservative and assumes all possible targets could be taken.
- A native method could call back into Java classes. The tool cannot 'see' native methods, so the application user can provide proxy classes that describe the classes reachable from these native methods. An initial set of proxy classes for the IBM JDK 5.0 JVM is provided, but it is currently incomplete.
- A set of methods that call Class.forName () have similar problems to native methods, and a similar solution is provided: The user can provide proxy classes for these methods. Considerable effort has been made to optimize the analysis process so that it is completed in a reasonable amount of time. Several controls enable the user to cache results from previous runs for faster analysis.
In addition, a Java class interface is provided so that the user can extend and augment the general services provided by the tool.
|
|
 |

|  | About the technology author(s): Mike Fulton graduated in 1989 from Simon Fraser University, British Columbia, Canada, with a degree in computer science, specializing in compiler technology. After graduation, he began working for the IBM Toronto Lab as a tester of the C compiler and run-time environment for MVS and VM/CMS. For the past 16 years, Mr. Fulton has worked in the compiler area in many technical roles involving testing, code development, documentation, service, architecture, and performance analysis. The products he has worked on are in the areas of C, C++, Java, parser technology, debuggers, profilers, and, for the last several years, compiler optimization for the Just In Time (JIT) Java compilation. In 2005, Mr. Fulton turned his focus to developing a Real-Time Java solution, but he continues to be involved in the IBM zSeries technology on which he has worked since joining the lab.
| |
|
| |