Statically detecting externally referenced interfaces of a program
AssigneeInternational Business Machines Corporation
InventorYoung-Jun Yoon
Life of this patent
Estimating the term…
Loading patent…
AssigneeInternational Business Machines Corporation
InventorYoung-Jun Yoon
Estimating the term…
Externally referenced interfaces of a program are statically detected. The static detection of the externally referenced interfaces is performed prior to runtime and without the source code of the program. Input to the static detection is the compiled output of the program, and the output is a list of the externally referenced interfaces of the program.
A method of facilitating detection of externally referenced interfaces of a program, said method comprising:
A system of facilitating detection of externally referenced interfaces of a program, said system comprising:
A system of facilitating detection of externally referenced interfaces of a program, said system comprising:
At least one program storage device readable by a machine tangibly embodying at least one program of instructions executable by the machine to perform a method of facilitating detection of externally referenced interfaces of a program, said method comprising:
Dependencies are inferred from the claim text.
Drawings are temporarily unavailable. Open the PDF at USPTO
From the US filing history. Foreign family members aren’t listed.
Backward citations are indexed for grants only.
Transformation of program code: link editing before load time
Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines: abstract…
Computing and data processing
Term end not estimated
This invention relates, in general, to processing computer programs, and in particular, to statically detecting externally referenced interfaces of a computer program, prior to runtime.
Typically, there are various processing stages associated with creating and executing a computer program. For example, the source code of a program is written in a programming language of choice by a programmer. The source code is then compiled by a compiler or interpreted by an interpreter compatible with the programming language of the program to generate machine code. The machine code is then loaded onto a particular platform designed to run the machine code, and the machine code is executed.
With some programming languages, the processing stages described above are slightly modified. For instance, with the Java programming language, the stages are modified to allow a write once, run anywhere environment. To provide such an environment, the Java source code is both compiled and interpreted. In particular, the Java compiler compiles the code and generates an intermediate language, referred to as the Java byte codes. The byte codes, which are packaged in a *.class file, are then interpreted and executed on a computer that is equipped with a Java Virtual Machine.
The subject matter which is regarded as the invention is particularly pointed out and distinctly claimed in the claims at the conclusion of the specification. The foregoing and other objects, features, and advantages of the invention are apparent from the following detailed description taken in conjunction with the accompanying drawings in which:
FIG. 1 depicts one embodiment of various processing stages associated with a program, including a detection stage in which a list of one or more externally referenced interfaces of a program is produced, in accordance with an aspect of the present invention; and
FIGS. 2a-2b depict one embodiment of the logic associated with detecting one or more externally referenced interfaces of a program, in accordance with an aspect of the present invention.
In accordance with an aspect of the present invention, a capability is provided for statically detecting externally referenced interfaces (e.g., classes, functions, application programming interfaces, etc.) of a program. The detection is performed statically in that the program does not need to be run in a runtime environment to determine the externally referenced interfaces, and the program's source code is not needed for the detection. The detection capability can be implemented in various different programming languages and executed on different computing platforms. As one example, the detection capability is implemented in the Java programming language and run on a computer supporting the Java Virtual Machine (JVM). However, this is only one example.
The detection capability of an aspect of the present invention receives as input the output of a compiled program and produces as its output a list of externally referenced interfaces of the program. This processing is described further with reference to FIG. 1. Since the examples presented herein are with reference to the Java programming language, the output of the compiled program is a class file and the interfaces include classes. However, these are only examples.
Referring to FIG. 1, initially, a program 100, referred to as myProgram.java, is written by a programmer in the Java programming language. As one example, the program is an Enterprise JavaBean Application. The program is then compiled using a compiler 102 producing a compiled output 104, referred to as myProgram.class. MyProgram.class is a class file that includes a set of byte codes representing the program. The set of byte codes is then input to an interpreter 106, since the program is written in Java, and the interpreter interprets the byte codes. The interpreted byte codes are then executed on a computer 108. In one example, computer 108 includes a J2EE Application Server executing a Java Virtual Machine (JVM).