Data processing: software development – installation – and managem – Software program development tool – Translation of code
Reexamination Certificate
1998-07-30
2001-09-25
Powell, Mark R. (Department: 2122)
Data processing: software development, installation, and managem
Software program development tool
Translation of code
C717S152000, C717S152000, C717S152000
Reexamination Certificate
active
06295638
ABSTRACT:
BACKGROUND OF THE INVENTION
CROSS REFERENCE TO RELATED APPLICATION
The present invention is related to an application entitled Method and Apparatus For Optimizing Execution of Java Programs, application Ser. No. 09/126,282 filed even date hereof, assigned to the same assignee and incorporated herein by reference.
1. Technical Field
The present invention relates generally to an improved data processing system and in particular to an improved method and apparatus for optimizing execution of code in a data processing system. Still more particularly, the present invention relates to a method and apparatus for optimizing execution of code in a data processing system using code optimized for a particular runtime environment in a data processing system.
2. Description of Related Art
A computer includes both a physical machine, namely the hardware, and the instructions which cause the physical machine to operate, namely the software. Software includes both application and operating system programs. If the program is simply to do tasks for a user, such as solving specific problems, it is referred to as application software. If a program controls the hardware of the computer and the execution of the application programs, it is called operating system software. System software further includes the operating system, the program that controls the actual computer or central processing unit (CPU), and device drivers that control the input and output devices (I/O) such as printers and terminals.
A number of application programs are usually present waiting to use the CPU. The operating system determines which program will run next, how much of the CPU time it will be allowed to use, and what other computer resources the application will be allowed to access and use. Further, each application program will require a special input or output device and the application program must transfer its data to the operating system, which controls the device drivers.
A network containing a number of computers may be formed by having these computers, also referred to as “nodes” or “network computers”, communicate with each other over one or more communications links, which is an aggregation which is a computer network. Today, many computer workstations are connected to other workstations, file servers, or other resources in a network. Each computer on a network is connected to the network via an adapter card or other similar means, which provides an ability to establish a communications link to the network.
In corporations, client/server technology is employed in networks to provide a sharing of processing load between a client and a server on a network. Client computers request data and services from a server computer. Client computers may take the form of a network computer (NC), which typically contains fewer components than many personal computers. For example, a network computer may be diskless or have only a single storage device, such as a hard disk drive. Applications are often sent to a network computer from the server. Java applications are becoming increasingly more prevalent as the type of application sent between server and client computers. Java applications are common on the Internet and becoming more increasingly common in intranets and in other types of networks used in corporations.
Java 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 supports only a single inheritance, meaning that each class can inherit from only one other class at any given time. Java also allows for the creation of totally abstract classes known as interfaces, which allow the defining of methods that may be shared with several classes without regard for how other classes are handling the methods.
The Java virtual machine (JVM) is a virtual computer component that resides only in memory. The JVM allows Java programs to be executed on a 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 run-time 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 in the JVM that alternately denodes and executes a bytecode or bytecodes. These bytecode instructions are designed to be easy to interpret on any computer and easily translated on the fly into native machine code.
With the increasing use of network computers having limited processor speed, limited memory, little or no virtual memory support, and/or no secondary storage for temporary files, various run time technologies used in Java are limited or unavailable. For example, just-in-time (JIT) compilers are an example of a run-time technology used to increase the performance of Java programs. A JIT compiler provides an increase in performance by compiling methods into native machine instructions before executing them. The advantages of a JIT compiler are unavailable to many network computers because JIT compiler implementations require significant data processing resources, such as processing power and memory, to provide increase performance. Therefore, it would be advantageous to have an improved method and apparatus for increasing performance of Java programs without requiring significant data processing resources.
SUMMARY OF THE INVENTION
It is one object of the present invention to have an improved data processing system.
It is another object of the present invention to have an improved method and apparatus for executing programs in a data processing system.
It is yet another object of the present invention to have a method and apparatus for loading native code in a data processing system.
The present invention provides method and apparatus for loading native code into the memory of a data processing system for use by a Java virtual machine. Native code is loaded for a method into the memory, wherein the memory is accessible by the Java virtual machine. An indicator is set to indicate to the Java virtual machine that native code is present for the method.
REFERENCES:
patent: 4835708 (1989-05-01), Frans
patent: 5349655 (1994-09-01), Mann
patent: 5408642 (1995-04-01), Mann
patent: 5848274 (1998-12-01), Hamby et al.
patent: 5889996 (1999-03-01), Adams
patent: 5898885 (1999-04-01), Dickol et al.
patent: 5905895 (1999-05-01), Halter
patent: 5926631 (1999-07-01), McGarvey
patent: 5974256 (1999-10-01), Matthews et al.
patent: 5983310 (1999-11-01), Adams
patent: 6003143 (1999-12-01), Kim et al.
patent: 6016474 (2000-01-01), Kim et al.
patent: 6029000 (2000-02-01), Woolsey et al.
patent: 6039765 (2000-03-01), Trissel
patent: 6049664 (2000-04-01), Dale et al.
patent: 6063128 (2000-05-01), Bentley et al.
patent: 6112025 (2000-08-01), Mulchandani et al.
patent: 6118940 (2000-09-01), Alexander, III et al.
patent: 6122638 (2000-09-01), Huber et al.
patent: 6151703 (2000-11-01), Crelier
Adl-Tabatabai et al.; “Efficient and Language-Independent Mobile Programs”. ACM Digital Library[online]. Proceedings of the ACM SIGPLAN '96, pp. 127-136, May 1996.*
Dean et al.; “Vortex: An Optimizing Compiler for Object-Oriented Languages”. ACM Digital Library[online]. Proceedings of the 11th annual conference on OOPSLA, pp. 83-100, Oct. 1996.*
Hsieh et al.; “Java Bytecode to Native Code Translation: The Caffeine Prototype and Preliminary Results”. IEEE/IEE Electronic Library[online], Proceedings of the 29th Annual IEEE/ACM International Symposium on Microarchitecture, pp
Brown Michael Wayne
McIntyre Joseph Herbert
Winters Scott Lee
Booker Kelvin
International Business Machines - Corporation
LaBaw Jeffrey S.
Powell Mark R.
Yee Duke W.
LandOfFree
Method and apparatus for loading native object code in data... 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 and apparatus for loading native object code in data..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Method and apparatus for loading native object code in data... will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2478454