Data processing: software development – installation – and managem – Software program development tool – Translation of code
Reexamination Certificate
1998-12-03
2003-10-21
Ingberg, Tod (Department: 2124)
Data processing: software development, installation, and managem
Software program development tool
Translation of code
C717S151000
Reexamination Certificate
active
06637025
ABSTRACT:
BACKGROUND OF THE INVENTION
1. Technical Field
The present invention relates generally to an improved data processing system and in particular to an improved method and apparatus for processing a method in a Java Virtual Machine. Still more particularly, the present invention relates to a method and apparatus for dynamically selecting methods for just in time compiling.
2. Description of Related Art
JAVA, a trademark of Sun Microsystems, Inc., is an object-oriented programming language and environment focusing on defining data as objects and the methods that may be applied to those objects. JAVA is designed to solve a number of problems in modern programming practice. JAVA is able to support applications for many types of data processing systems, which may contain a variety of central processing units and operating systems architectures. To enable a JAVA application to execute on different types of data processing systems, a compiler typically generates an architecture-neutral file format—the compiled code is executable on many processors, given the presence of the JAVA runtime system. The JAVA compiler generates bytecode instructions that are non-specific to a particular computer architecture. A bytecode is a machine independent code generated by the JAVA compiler and executed by a JAVA interpreter. A JAVA interpreter is a module that alternately decodes and executes a bytecode. The decoding of the bytecode places the instruction into an executable form for the computer on which the code is to be executed. Then, the instruction is executed by the computer. These bytecode instructions are designed to be easy to interpret on any machine and easily translated on the fly into native machine code.
The JAVA Virtual Machine (JVM) is a virtual computer component that resides only in memory. A JVM includes components necessary to run a program on a computer, including an interpreter. The JVM allows JAVA programs to be executed on different platforms as opposed to only the one platform for which the code was compiled. JAVA programs are compiled for the JVM. In this manner, JAVA is able to support applications for many types of data processing systems, which may contain a variety of central processing units and operating systems architectures. To enable a JAVA application to execute on different types of data processing systems, a compiler typically generates an architecture-neutral file format—the compiled code is executable on many processors, given the presence of the JAVA runtime system. The JAVA compiler generates bytecode instructions that are non-specific to a particular computer architecture. A bytecode is a machine independent code generated by the JAVA compiler and executed by a JAVA interpreter.
In performance critical environments, sometimes it is necessary to rely on specialized just in time (JIT) compilers to generate different just in time compiled code for different circumstances. For example, some just in time compilers are optimized for processing loops in bytecodes. In other instances, some just in time compilers may cause errors or unpredictable results in compiling bytecodes into code for use on the client computer. Currently, this problem is resolved by changing the JAVA code itself and recompiling to code around the JIT compile problems, servicing the JIT compiler itself or disabling the JIT compiler for the virtual machine (VM), thereby reducing performance by causing all classes to be passed to the interpreter.
Whenever a JIT compiler causes errors in compiling a class or the overhead for JIT'ing reduces the performance of the application, it would be advantageous to have a methodology to not JIT compile some classes/methods. Further, because changing the JAVA code itself and recompiling to code around the JIT compilation problems, servicing the JIT compile itself requires expertise above that of a software developer in the field and still further because ‘quick fixes’ available to the software developer such as disabling the just in time compiler reduce the application performance even more, it would be advantageous to give software distributors control over which classes or methods get just in time compiled (JIT'ed) in the field.
SUMMARY OF THE INVENTION
The present invention provides a process in a data processing system for executing bytecodes. The bytecodes are contained in a JAVA archive file along with just in time compiling instructions. A call to just in time compile bytecodes is intercepted in which the bytecodes should not be JIT'ed. A means is provided within the JAVA archive file for software developers to mark as ‘no JIT’ some classes/methods in the field. Conversely, means is provided within the Java archive file for software developers to mark as ‘JIT’ some classes/methods in the field. Only the selected bytecodes are sent to the interpreter for processing rather than all of the classes.
REFERENCES:
patent: 5414855 (1995-05-01), West
patent: 5560013 (1996-09-01), Scalzi et al.
patent: 5835773 (1998-11-01), Dunn
patent: 5838978 (1998-11-01), Buzbee
patent: 5920720 (1999-07-01), Toutonghi et al.
patent: 5978585 (1999-11-01), Crelier
patent: 6078744 (2000-06-01), Wolczko et al.
patent: 6081665 (2000-06-01), Nilsen et al.
patent: 6093216 (2000-07-01), Adl-Tabatabai et al.
patent: 6110226 (2000-08-01), Bothner
patent: 6115719 (2000-09-01), Purdy et al.
patent: 6118940 (2000-09-01), Alexander, III et al.
patent: 6131191 (2000-10-01), Cierniak et al.
patent: 6139199 (2000-10-01), Rodriguez
patent: 6141794 (2000-10-01), Dice et al.
patent: 6151703 (2000-11-01), Crelier
patent: 6233725 (2001-05-01), Beadle et al.
patent: 6289504 (2001-09-01), Cierniak et al.
patent: 6289506 (2001-09-01), Kwong et al.
patent: 6295641 (2001-09-01), Beadle et al.
patent: 6295642 (2001-09-01), Blandy
patent: 6298477 (2001-10-01), Kessler
patent: 6324686 (2001-11-01), Komatsu et al.
patent: 6324687 (2001-11-01), Beadle et al.
“JavaSoft Announces JDK 1.1, Including Stringent Compatibility Tests”, Press Release Sun MicroSystems Inc. Dec. 3, 1996.*
“Sun Ships JDK 1.1—Javabeans Included”, Press Release, Feb. 19, 1997.*
U.S. Trademark Electronic Search System (TESS) The registration of the Trademark JAVA (74,631,225) Filed Feb. 7, 1995, Nov. 11, 2001.*
U.S. Trademark Electronic Search System (TESS) The registration of the Trademark JDK (75,695,723) Filed Apr. 30, 1999, Nov. 11, 2001.*
“Efficent Implementation of the Smalltalk-80 System”, L. Peter Deutsch et al. Xerox PARC, Software Concepts Group ACM 13 pages, 1984.*
“Advanced Compiler Design & Implementation”, Steven Muchnick pp. 127-134, Aug. 19, 1997.*
“The JAVA Archive (JAR) File” Sun Micro Systems website of intended use. Released in JDK1.1 Dec. 3, 1996 14 pages, Nov. 8, 2001.*
“Compiling JAVA Just In Time”, Timothy Cramer et al. IEEE Micro pp. 26-43, May 1997.*
“Compiling the Example Program”, Sun Micro Systems website on how to compile a program with a JARfile, Jun. 13, 2001.*
“Visual Cafe for JAVA Database Development Edition”, William Brogden et al. pp. 218, 219, 518, 519, Jan. 28, 1998.*
“The JAVA Factor” Communications of ACM, by Sandeep Singhal et al. vol. 41, No. 6 pp. 34, 36, 37, Jun. 1998.*
“The JIT Compiler API”, Frank Yellin, pp. 1-23, Jun. 1996.*
“The JAVA Native Code API”, Frank Yellin, pp. 1-21, Jul. 1996.*
“Java!”, Tim Richey, chapters 1-2, 14, New Riders Publishing Tommorrow's Realities, Sep. 22, 1995.*
“Design, Implementation, and Evaluation of Optimizations in Just—In-Time Compilers”, IBM Japan, No Date.*
“Latte: A Fast and Efficient Java VM Just-In-Time Compiler” Seoul National University, Mass Labority, 1999.*
“The Jalapeno Dynamic Optimizing Compiler for JAVA”, M. Burke et al., IBM Research Center, No Date.*
“Java Unleashed”, Michael Morrison et al. Sams Macmillan Computer Publishing, Chapter 39, Apr. 12, 1996.*
“IBM Visual Age for Java, version 2.0” Getting started by IBM manual # S430-4086-01, 1997.*
“Java on Solaris 2.6 a white paper” Sun Soft, pp. 1-50. Sep. 1997.*
“IBM Visual Age for Java—Fixes Available” IBM Corporation http://www-4.ibm.com/software/ad/vajava/fixes.ht
Beadle Bruce Anthony
Brown Michael Wayne
Paolini Michael Anthony
Rothert Douglas Scott
Ingberg Tod
LaBaw Jeffrey S.
Nichols Michael R.
Yee Duke W.
LandOfFree
Dynamic selection/definition of which class/methods should... does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with Dynamic selection/definition of which class/methods should..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Dynamic selection/definition of which class/methods should... will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-3169792