Method for processing program files in a programming...

Data processing: software development – installation – and managem – Software program development tool – Translation of code

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

C717S139000, C717S141000, C717S146000, C717S165000

Reexamination Certificate

active

06813762

ABSTRACT:

FIELD OF THE INVENTION
This invention relates generally to processing of program files written in a high level-language, and specifically to program files written in a high-level programming language capable of dynamic loading.
RELATED ART
As the number and type of hand-held and other electronic devices increases, there is a corresponding increase in the applications that run on and interface with these devices, as well as an increase in the desired flexibility for the user to add special programs and functionality. These devices are sometimes referred to as “embedded devices,” as they include a processor for executing instructions, special function units, and the instructions for providing the desired functionality. Embedded devices are typically stand alone devices, having their own power supply, but often include the capability to interface with other systems. For example, embedded devices such as cellular phones, pagers, and personal digital assistants (PDAs) typically include a central processing unit (CPU) for executing computer programs stored within the device and a battery allowing mobility. Subsequent to manufacture of an embedded device, individual users may desire to customize their device by adding special functionality or applications. It is desirable to use computer programs, or codes, written in a high-level programming language, such as Java™, a language developed by Sun Microsystems, Inc., which facilitate the later installation of user-supplied applications. Java is particularly attractive, as it is platform-independent, meaning that it is not specific to one operating system or hardware configuration.
One constraint in developing code for an embedded device is the limited amount of memory, which reduces the amount of code that a device is able to store and also impacts the computing capabilities of the device. A key goal in designing code for an embedded device is then to maximize memory efficiency and speed of installed applications. Currently, several methods of increasing the memory efficiency of embedded applications exist, however, these methods do not generally extend to the subsequent installation of additional applications by the user.
For ease of illustration, the Java programming language serves as an exemplar, however, the present invention is applicable to other programming languages as well. Several terms will be used herein with reference to a system having embedded Java program(s). Memory refers to Read Only Memory (ROM), writable memory, and readable-writable memory. Readable-writable memory may be Random Access Memory (RAM), Electrically-Erasable-Programmable Memory (EEPROM), Programmable Memory (PROM), including both One-Time PROM (OTPROM) and Erasable PROM (EPROM), FLASH Memory, etc. The term “dynamic memory” is used to refer to memory that is dynamically allocated and does not retain stored information or data when power is removed from the device, such as RAM. The term “permanent memory” is used to refer to memory that is treated as read-only during execution, and retains stored information or data when power is removed from the device, such as ROM.
Java in particular, is an object-oriented programming language that is portable, easy to program, and architecture-neutral. Object-oriented design focuses on the data, referred to as “objects,” as well as the interfaces to the objects. The Java program is able to execute anywhere within a network including a variety of processing units and operating system architectures.
Java programs are both compiled and interpreted. Compilation is done once, where compiled Java programming code is referred to as “Java ByteCode” (JBC). The JBC is an intermediate language that is architecture-neutral or platform-independent. A Java interpreter parses and runs JBC instructions on a processor. Interpretation occurs each time the program is executed. A Java binary file, referred to as a class file, includes the JBC for a given program as well as supporting information, such as symbolic data. A class file, or program file, includes “items” or information about the class, such as fields, methods, JBC arrays, and a symbolic reference table. Specifically, a Java program is composed of one or a set of Java files, which, on compilation, produce one or a set of class files.
JBC is effectively the machine code instructions for a “Java Virtual Machine” (Java VM). Every Java interpreter, such as a Java development tool or a Java-capable web browser uses an implementation of the Java VM. Often, these tools will either use the Java VM already installed on a system, or may come bundled with a Java VM. Note that the Java VM may also be implemented in hardware. In this way, the program may be compiled on any machine with a Java compiler and the resulting JBC may run on any implementation of the Java VM.
In order to make applications written in Java portable, much symbolic information is maintained. During normal Java VM execution of the JBC, the symbolic data is used by the Java VM to perform the dynamic binding whereby the actual pointer to the referenced structure is obtained. For example, each reference to a function is represented by the symbolic information: class name; function name; and signature. The class name identifies the class object containing the declaration of the method. The methods identify the various functions available for that class, and the JBC arrays are programs executed to implement a method. The function name, together with the signature, identifies the given function within its class. The signature describes the member and type of arguments passed to and returned by a function. The symbolic information expands the size of the Java binary file which creates memory storage problems. During execution, two (2) copies of the JBC and the symbolic information are maintained: a first copy is stored in permanent memory; and a second copy is stored in dynamic memory in a format easily manipulated by the Java VM. For small embedded devices, such as pagers, cellular phones, and PDAs, dynamic memory is very limited. It is, therefore, desirable to reduce dynamic memory usage. An additional problem is latency during execution due to the use of costly table lookups for handling symbolic references.
To address some of these problems, tools allow for compacting and formatting of Java class files to more efficiently use memory. “Pre-internalization” is a process of reformatting Java class file information into a format that, when placed in memory, represents a class object. Internalization occurs during loading of a class file and is the process of extracting the class information from a class file and storing the information in structure(s) in dynamic memory. The pre-internalization process eliminates symbolic references and class loading, reducing dynamic memory storage requirements. The format of the pre-internalized file is specific to each Java VM implementation.
Pre-internalization occurs after compilation but prior to normal loading and execution of the JBC. Pre-internalized class objects are restructured to eliminate the need to store them in dynamic memory, and are maintained in permanent memory. This frees more of the dynamic memory for creation of dynamic objects during execution. Information and structures used to maintain state preservation, as well as dynamic objects, are stored in what is referred to as the “Java heap”. A problem exists with pre-internalization as storing class information in permanent memory eliminates the ability to update this information during execution.
Current solutions avoid storing the symbolic information in dynamic memory by requiring that all symbolic references be resolved prior to class installation on the target device. Resolving references involves replacing the A reference with the location of the referenced item, i.e. an address. A problem exists in pre-internalizing a set of class files, or “class file unit,” where a reference is made to classes already installed on the device and for which the location of the referenced item is either unknown or unreliable. To avo

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Method for processing program files in a programming... 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 processing program files in a programming..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Method for processing program files in a programming... will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-3320317

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.