Class file archives with reduced data volume

Data processing: database and file management or data structures – Database design – Data structure types

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

C707S793000, C707S793000, C707S793000, C707S793000

Reexamination Certificate

active

06732108

ABSTRACT:

FIELD OF THE INVENTION
The present invention relates generally to computer software, and specifically to object-oriented computer applications.
BACKGROUND OF THE INVENTION
In transmitting applets and applications over the Internet and other low-bandwidth networks, download time can be a crucial factor. When such software takes too long to download, the user receiving the software will at best be dissatisfied, and may abandon the matter entirely. Common applets and applications, however, typically use many class files, along with other resources, such as image and audio files. In the Web browsing environment, each file to be transferred requires its own Hypertext Transfer Protocol (HTTP) transaction. In order to reduce the time needed to download an applet or application from a server to a client, it is important both to limit the number of files transferred and the total volume of data in the files.
For Java™ applets and applications, the Java Archive (JAR) provides a platform-independent file format that aggregates many files into one and can thus be used to reduce the number of HTTP transactions required for download. Multiple applets, including both their requisite class files and other resources, can be bundled into a single JAR file. The JAR file can then be compressed in order to reduce the data volume to be downloaded. At the client end, Web browsers with Java support are able to decompress and open the JAR file and then to run the applet or application that it contains. The JAR format also supports package sealing and electronic signing of the JAR contents, using a manifest file, which is placed at the beginning of the JAR file and lists the files present in the archive. These and other aspects of the JAR format and its use are described at http://java.sun.com/products/jdk/1.2/docs/guide/jar/.
A major component in nearly any Java class file is the constant pool, which is a table containing symbolic and string information, such as variable names, method names and signatures, and field names. Almost all other data structures in the class file contain references (indices) to entries in the constant pool. In a single applet or application, composed of multiple class files, the same values typically appear in certain entries in the constant pools of many of the classes. Furthermore, many elements of the constant pools of the different classes typically have the same semantic content, such as names of methods, fields and other classes, although they may be syntactically different in the compiled byte code. In other words, entries in the constant pools belonging to different classes of the applet or application may share the same name in the class source code (common semantics), while containing different values in the byte code due to the differences in use of the named entries (differences of syntax) in the different classes. There is thus a great deal of redundancy in the contents of the constant pools. A particular example of the redundancy that normally occurs in constant pools is presented below in Tables I and II, in the Detailed Description of Preferred Embodiments.
U.S. Pat. No. 5,966,702, whose disclosure is incorporated herein by reference, describes a method for pre-processing and packaging class files that addresses the problem of syntactic redundancy among the class files. During pre-processing, each class file in a set of class files is examined to locate duplicate information in the form of redundant constants (Integer, Double, Utf8 and Long entries) contained in its constant pool. The duplicate constants are placed in a separate shared table, and all occurrences of such constants are removed from the respective constant pools of the individual class files. After removal of these shared constants, the individual class files are left with reduced constant pools. The class files and the shared table are packaged as a unit in a multi-class file, which is typically downloaded to a client (in a manner similar to the above-mentioned JAR file).
To run the set of class files at the client side, the Java Virtual Machine (JVM) must resolve constant references to determine whether to read the constant values from the shared table or from the reduced constant pools of the individual classes. A modification to the JVM is required (relative to the standard JVM that is currently used in standard Web browsers) in order to perform this sort of constant resolution. U.S. Pat. No. 5,966,702 makes no provision for reconstructing the original classes from which the multi-class file was constructed. Furthermore, although the method of this patent eliminates duplication of syntactically-identical constants, by moving them to the shared table, it makes no attempt to deal with constant pool entries that are syntactically different but semantically identical.
SUMMARY OF THE INVENTION
Preferred embodiments of the present invention provide improved methods, systems and software products for reducing the volume of data that must be transmitted in conveying a set of class files over a network. In these preferred embodiments, the constant pools of at least some of the classes—and preferably, all of the classes—are consolidated into a global constant pool. In the course of this consolidation, multiple semantically-identical entries occurring in the different constant pools of the individual classes are replaced by a single entry in the global pool. References to the constant pool entries in the different classes are accordingly replaced by references to the corresponding entry in the global constant pool. The replacement of entries and references takes place regardless of whether or not the multiple entries are syntactically identical in their individual occurrences in the different classes.
In some preferred embodiments of the present invention, the class files comprise Java classes of an applet or application, which are packaged together in a JAR file in compliance with Java standards. A mechanism is added to the JAR file to reconstruct the individual constant pools out of the global constant pool in the JAR file. This mechanism may be implemented either by appending a new class to the set in the JAR file or by modifying one of the existing classes in the file. After the JAR file has been downloaded to a client, this mechanism reconstructs the application or applet automatically, in a manner transparent to the JVM at the client side, as a first step in installing the application or running the applet.
Thus, by eliminating semantic redundancies in the constant pools, and not only syntactic duplication, preferred embodiments of the present invention generally provide greater reduction in the size of a given set of class files than do those of U.S. Pat. No. 5,966,702. Furthermore, because the different references to the entries in the individual constant pools of the various classes are replaced by multiple references to the same entry in the global constant pool, a still greater reduction in the size of the JAR file can be achieved when the JAR file is compressed. This enhanced compression is due to the fact that JAR files are conventionally compressed using “ZIP-like” (Ziv-Lempel) compression algorithms, which search for and encode multiple occurrences of identical strings found in the file. These advantages of the present invention are achieved without the need for modification of the standard JVM.
There is therefore provided, in accordance with a preferred embodiment of the present invention, a method for packaging program resources, including:
collecting a set of the program resources that includes a plurality of object files, which contain data structures having entries that are constants and methods that reference the entries;
combining the data structures in at least some of the object files into a common data pool, in which semantically-identical entries in different ones of the files are represented by a single consolidated entry, irrespective of whether the entries in the different files are syntactically identical; and
packaging the set of the program resources together with the c

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

Class file archives with reduced data volume does not yet have a rating. At this time, there are no reviews or comments for this patent.

If you have personal experience with Class file archives with reduced data volume, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Class file archives with reduced data volume will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-3241135

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