Content area
Object oriented languages are now very widely spread. A large number of those languages and their compilers are now available. They integrate many concepts such as data encapsulation, inheritance, methods overriding and overloading, dynamic binding and many more. All those concepts make object oriented languages very popular as they make it possible for developers to write more flexible, extensible, and reusable good quality programs in a much quicker way. Java, which is one of the latest object oriented languages to come on the market, has an increasing popularity especially to its code mobility. Java is at the same time simple, robust and portable with high security features. It integrates many concepts such as mobile code, a virtual machine, an automatic garbage collector concurrency management and exception handling. Those qualities are however also responsible for Java's lack of performances when compared to other languages like C++.
This performance problem has motivated us to work on a Java project. Our main goals are to develop optimization techniques and to incorporate them in a compiler in order to improve Java's program performances. We use static analysis techniques to extract information which will be used to transform the code and make it more efficient.
The work achieved in this master's context deals with dynamic methods invocations optimization. We use a technique called class hierarchy analysis and have developed a data flow and control analysis to extract information from the code which will be used for dynamic invocations optimizations. We have also developed a platform that consists in a parser. This will allow the application of the analysis techniques we developed along with the ones that will be developed in the future.