Data processing: software development – installation – and managem – Software program development tool – Translation of code
Reexamination Certificate
1998-06-30
2001-09-11
Chaki, Kakali (Department: 2122)
Data processing: software development, installation, and managem
Software program development tool
Translation of code
C004S590000, C004S590000
Reexamination Certificate
active
06289506
ABSTRACT:
BACKGROUND OF THE INVENTION
1. Field of the Invention
This invention relates to the field of computer software optimization. More particularly, the present invention relates to a method for optimizing Java performance using precompiled code.
2. History of the Prior Art
Computer programs are generally created as source code. The source code is later compiled into object code for program execution. Hence, most programs exist as compiled object code in computer systems. However, the compiled code is usually designed/compiled to operate on only one particular operating system or on only one particular computer architecture. The binary file for an application that runs on one platform cannot run on another platform because the binary file is machine-specific. In order to use a certain program on several different types of computer systems, the original source code must be separately compiled into object code for each different operating system and each different processor architecture.
The popularization of the World Wide Web has exacerbated a problem for software developers trying to create software for networked consumer devices. While millions of people around the globe are surfing the Internet and browsing web pages with their computers, not all of those computers are the same. One person may be using a Macintosh, another a PC, and yet another user with a UNIX machine. Hence software developers may find it desirable to design computer programs that could support multiple host architectures and could allow secure delivery of its software components.
The Java programming language and environment is designed to solve a number of problems in modern programming practice. Java is designed to meet the challenges of application development in the context of heterogeneous, network-wide distributed environments. Paramount among these challenges is secure delivery of applications that consume the minimum of system resources, can run on any hardware and software platform, and can be extended dynamically. Java is a simple, object-oriented, network-savvy, interpreted, robust, secure, architecture neutral, portable, multithreaded, dynamic language.
Java is a strongly typed programming language. A Java program is created by compiling source code written in Java Language's well defined format into a compact, architecture-neutral object code known as Java bytecode. Compilation normally consists of translating Java source code into a machine independent Java bytecode representation. Java bytecodes are translated (interpreted) on the fly into native machine code for the particular CPU the application is running on. Bytecodes are executed at runtime by an interpreter residing on the client computer. Runtime activities may include loading and linking the classes needed to execute a program, machine code generation and dynamic optimization of the program, and actual program execution.
A program written in the Java Language compiles to a bytecode file that can run wherever a Java Platform is present. This portability is possible because at the core of a Java Platform is a Java Virtual Machine. Java bytecodes are designed to operate on a Java Virtual Machine (VM). The Java Virtual Machine is an abstract computing machine that has its own instruction set and uses various memory areas. A Java VM is not an actual hardware platform, but rather a low level software emulator that can be implemented on many different processor architectures and under many different operating systems. A Java VM reads and interprets each bytecode so that the instructions may be executed by the native microprocessor. Hence compiled Java bytecodes are capable of functioning on any platform that has a Java Virtual Machine implementation available.
However, bytecode interpretation detracts from program performance since the microprocessor has to spend part of its processing time interpreting bytecodes. Java “Just In Time” (JIT) compilers were introduced to improve the performance of Java Virtual Machines. A Java JIT compiler translates Java bytecodes into the processor's native machine code during runtime. The processor then executes the compiled native code like any other native program. Such compiled Java programs execute much faster than Java programs that are executed using a Java interpreter
Although a Just In Time compiled Java program executes faster than an interpreted Java program, the performance of such Just In Time compiled Java programs can be further improved. In order to harness performance improvements from Java code via JIT compilation, a program's Java bytecodes have to be JIT complied. Since Just In Time compilations are performed during program runtime, the compile time adds to the time constraint during execution time. Furthermore, since the native machine code outputted by a JIT compiler is not saved, the program's Java bytecodes have to be JIT compiled every time the program is loaded and run. JIT compilers also do not produce efficient code since they must quickly produce the code and thus the code is not optimized.
SUMMARY OF THE INVENTION
The present invention introduces a method for optimizing Java performance using precompiled code. The method of the present invention first monitors the performance of program code during program execution. Then a list of program functions for possible native code compilation is created. A plurality of program functions from said list of program functions is selected. The selected program functions are precompiled into native program functions.
REFERENCES:
patent: 5367685 (1994-11-01), Gosling
patent: 5465258 (1995-11-01), Adams
patent: 5539907 (1996-07-01), Srivastava et al.
patent: 5590331 (1996-12-01), Lewis et al.
patent: 5668999 (1997-09-01), Gosling
patent: 5768592 (1998-06-01), Chang
patent: 5768593 (1998-06-01), Walters et al.
patent: 5842017 (1998-11-01), Hookway et al.
patent: 5905895 (1999-05-01), Halter
patent: 5909577 (1999-06-01), Devanbu
patent: 5995754 (1999-09-01), Holzle et al.
patent: 6170083 (2001-01-01), Adl-Tabatabai
Bothner, “A Gcc-basedJava Implementation”, IEEE 1997, pp. 174-178.*
Cierniak et al., “Briki: An Optimizing Java compiler”, Compcon Proceedings,IEEE, 1997, pp. 179-184.*
Hsieh et al., “Java Bytecode to Native Code Translation: The Caffeine Prototype and Preliminary Results”, IEEE, 1996, pp. 90-97.*
Hsieh et al., “Optimizing NET Compilers for Improved Java Performance”, IEEE 1997, pp. 67-75.*
James Gosling, et al., The Java Language Specification, Published by Addison-Wesley, 1996, pp. 29-49.
Tim Lindholm, et al., The Java Virtual Machine Specification, Published by Addison-Wesley, 1997, pp. 57-82.
Alfred V. Aho, et al., Compilers-Principles, Techniques, and Tools, Published by Addsion-Wesley, 1988, pp. 1-24.
Steven S. Muchnick, Advanced Compiler Design & Implementation, Published by Morgan Kaufmann, 1997, pp. 1-18, 319-328.
Douglas Kramer, The Java Platform-A White Paper, Published by Javasoft, 1996, pp. 6-24.
P. Tyma; “Tuning Java Performance”, Dr. Dobb's Journal, vol. 21, No. 4, pp. 52-58.
D. Bell; “Make Java Fast: Optimaze”, Javaworld (online). Retrieved from :<http:/www.javaworld.com> Jun. 22, 1999.
Jansen, et al.; “Security and Dynamic Class Loading in Java: a Formalisation” IEEE/IEE Electronic Library (online).
Aho, et al.; “Compilers, Principles, Techniques, and Tools”, Addison-Wesley Publishing Co., Ch. 9 and 10.
Ciemiek, et al.; “Briki: An Optimizing Java Compiler”, IEEE/IEE Electronic Library (Online) Proceedings of IEEE Compcon '97, pp. 179-184.
E. Armstrong, “HotSpot: A New Breed of Virtual Machine”, Javaworld (online). Retrieved from <http:/www.javaworld.com> on Jun. 22, 1999.
Bacon, et al.; “Compiler Transformations and High-Performance Computing”, ACM Computing Surveys, vol. 25, No. 4, 12/94, pp. 345-420.
Bothner, “A Gcc-Based Java Implementation”, Cygnus Solutions, IEEE, 1963, pp. 174-178.
Kwong Alice
Lai Michael
O'Neill James W.
Wang Julie
Chaki Kakali
Intel Corporation
Lam Peter
LandOfFree
Method for optimizing Java performance using precompiled code does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with Method for optimizing Java performance using precompiled code, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Method for optimizing Java performance using precompiled code will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2544079