WO2002021264A2 - Method and apparatus for representing executable content within a barcode (scanlet) - Google Patents

Method and apparatus for representing executable content within a barcode (scanlet) Download PDF

Info

Publication number
WO2002021264A2
WO2002021264A2 PCT/US2001/028146 US0128146W WO0221264A2 WO 2002021264 A2 WO2002021264 A2 WO 2002021264A2 US 0128146 W US0128146 W US 0128146W WO 0221264 A2 WO0221264 A2 WO 0221264A2
Authority
WO
WIPO (PCT)
Prior art keywords
recited
executable content
data file
java
class file
Prior art date
Application number
PCT/US2001/028146
Other languages
French (fr)
Other versions
WO2002021264A3 (en
Inventor
James T. Connors
Craig S. Ellis
Original Assignee
Sun Microsystems, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems, Inc. filed Critical Sun Microsystems, Inc.
Priority to AU2001290680A priority Critical patent/AU2001290680A1/en
Publication of WO2002021264A2 publication Critical patent/WO2002021264A2/en
Publication of WO2002021264A3 publication Critical patent/WO2002021264A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/06009Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code with optically detectable marking
    • G06K19/06037Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code with optically detectable marking multi-dimensional coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K2019/06215Aspects not covered by other subgroups
    • G06K2019/06253Aspects not covered by other subgroups for a specific application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K2207/00Other aspects
    • G06K2207/1017Programmable

Definitions

  • the invention relates generally to computing and information systems. More particularly, methods and apparatus for representing executable content in the form of a barcode, also referred to as a scanlet.
  • Java applet is a small program that can be sent along with a Web page to a user that can perform interactive animations, immediate calculations, or other simple tasks without having to send a user request back to the server.
  • a distributed computer system 100 includes a client computer 102 that is coupled to a server (host) computer 104.
  • the computer 102 includes a browser application 106 that, in turn, includes a requested Web page 108 having an applet 110 embedded therein capable of performing various tasks.
  • the applet 110 is executed by a Java Nirtual Machine (JNM) 112 that in this example is also resident in the browser 106.
  • JNM Java Nirtual Machine
  • the applet's requisite component files (such as ".class files", images and sounds) represented by files 114 - 118 must be downloaded from the server 104 to the JVM 112.
  • the server 104 is part of a distributed network of computers, such as the Internet, or in some cases could be part of an intranet type of arrangement.
  • the files 114-118 that are required for the JVM 112 to run the applet 110 include Java class files as well as resource files that are used to support the execution of the applet 110.
  • Such class files includes a main class file, main.class 114, that is used by the JVM 112 as an entry point for execution of the applet 110.
  • the server 104 also stores other class files such as b. class 116 that are used by the JVM 112 in the furtherance of executing the applet 110.
  • Various image and sound components used in the execution of the applet 110 are stored in resource files such as c.image 118.
  • the PDF 417 accomodates much more information than does the ubiquitous ID barcode, it is still inadequate to support anything but the most rudimentary of Java class files. Specifically, the PDF417 has a maximum capacity of 1080 bytes of binary data, whereas the class file for a simple program (such as the Java program "Hello World") requires up to 500 bytes, it is clear that as currently configured, a conventional 2D barcode could only provide a class file of sufficient size to support only the most simple programs.
  • the invention relates to an improved method, apparatus and computer system for encoding executable content in a 2D barcode to form a scanlet that is capable of storing sufficient executable content for a simple program.
  • the invention can be implemented in numerous ways, including as a method, a computer system, and an apparatus. Several embodiments of the invention are discussed below.
  • a method for A method for symbolically encoding executable content in an icon is described.
  • the executable content is converted to an uncompressed data file that is then compressed to form a compressed data file having data consistent with the executable content.
  • the data included in the compressed data file is then encoded into the icon.
  • a method of executing compressed executable content stored in the icon is disclosed.
  • the compressed executable content is read and uncompressed.
  • the uncompressed executable content is then input to a program which performs the executable content.
  • Fig. 1 shows a conventional distributed computer system that includes a client computer coupled to a server (host) computer.
  • Fig. 2 is a system for compressing a Java class file to form a scanlet in accordance with an embodiment of the invention.
  • Fig. 3 shows a Java enabled device for reading a scanlet and executing the Java class file encoded therein in accordance with an embodiment of the invention.
  • Fig. 4 shows a flowchart detailing a process for encoding a scanlet in accordance with an embodiment of the invention.
  • Fig. 5 is a flowchart detailing a process for reading and executing data stored in a scanlet by a Java enabled device in accordance with an embodiment of the invention.
  • Fig. 6 illustrates a computer system that can be employed to implement the present invention.
  • the invention will initially be described in terms of a Java enabled device but can be used in any device capable of performing executable content, such as an instruction set.
  • executable content such as a Java class file
  • a determination is made whether or not the Java class file to be stored can be adequately compressed so as to fit within the available barcode technology.
  • the Java class file is compressed in such a manner as to be fully comprehended by the 2D barcode in the form of a scanlet.
  • the compression methodology is substantially a lossless compression methodology whereby there is no loss in executable content from the Java class file.
  • the mclass file is then used to form the scanlet suitably arranged to provide executable content (in the form of the decompressed mclass file) to any Java enabled device.
  • a conventional scanner reads the scanlet and sends the data in the form of mclass data bytes to a buffer or other such appropriate storage device.
  • a decompressor coupled to the buffer then decompresses the mclass data bytes stored in the buffer to form a restored Java class file that replicates the original Java class file.
  • the restored Java class file is then used to provide the executable content for a Java Virtual Machine incorporated in the Java enabled device.
  • Java program written in the Java programming language are compiled into bytecodes or Java virtual machine instructions that are then executed by a Java virtual machine.
  • the bytecodes are stored in class files that are input into the Java virtual machine for interpretation.
  • Java source code includes the classic "Hello World” program written in Java.
  • the source code is then input into a bytecode compiler that compiles the source code into bytecodes.
  • the bytecodes are virtual machine instructions as they will be executed by a software emulated computer.
  • virtual machine instructions are generic (i.e., not designed for any specific microprocessor or computer architecture) but this is not required.
  • the bytecode compiler outputs a Java class file that includes the bytecodes for the Java program.
  • the Java class file is input into a Java virtual machine.
  • the Java virtual machine is an interpreter that decodes and executes the bytecodes in the Java class file.
  • the Java virtual machine is an interpreter, but is commonly referred to as a virtual machine as it emulates a microprocessor or computer architecture in software (e.g., the microprocessor or computer architecture that may not exist in hardware).
  • the Java programming language an object-oriented language
  • Java virtual machine or bytecode interpreter
  • the Java virtual machine is designed to convert the bytecode into instructions that can be executed by the actual hardware processor.
  • bytecode can be recompiled at each particular system platform by, in some cases, a just-in-time (JIT) compiler.
  • JIT just-in-time
  • the invention will now be described in terms of a Java enabled device such as for example, a personal digital assistant (PDA) having access to a barcode scanner, for example. It should be noted, however, that the invention is not limited to the described Java enabled device, nor is it limited to only the Java programming language. As a matter of fact, the invention can be used in any system where data is symbolically encoded which includes, but is not limited to, barcodes and the like.
  • PDA personal digital assistant
  • Fig. 2 is a system 200 for compressing a Java class file to form a scanlet in accordance with an embodiment of the invention.
  • the system 200 includes an mclass file compiler 202 arranged to convert a Java class file 204 into what is referred to as a mclass file 205 suitable for being encoded in a barcode to form a scanlet 206.
  • a mclass file 205 suitable for being encoded in a barcode to form a scanlet 206.
  • the "g:none" compiler option found in the Java 2 compilers produced by Sun Microsystems of Mountain View, CA can produce a class file that contains no debug information.
  • it is possible to further reduce the size of the Java class file 204 by using other compiler optimization techniques and flags not mentioned here for sake of clarity but otherwise well known to those skilled in the art.
  • the Java class file 204 is sent to an mclass pre-processor unit 208 arranged to further reduce the size of the Java class file 204.
  • a pre-processor unit suitable for pre-processing the Java class file 204 is referred to as a Java obfuscator.
  • a Java obfuscator in addition to providing some security by making reverse engineering of the Java class file 204 more difficult, typically reduces the size of the Java class file 204.
  • the compiler 202 includes a pre- verifier unit 210 arranged to receive the pre-processed Java class file 204 and determine whether or not it can be compressed to a size suitable for forming the scanlet 206. Once the pre- verifier 210 has determined that the Java class file 204 can be sufficiently compressed to be encoded into the scanlet 206, it is sent to an mclass compressor unit 212 which forms the mclass file 205 by performing various compression algorithms on the pre- processed Java class file.
  • Such compression algorithms include: examining constant pool entries and shrinking their component fields (if appropriate) from, for example, 16 bits to 8 bits; eliminating repetitive constant pool tags; introducing smaller mclass- specific bytecode instructions which can accommodate smaller offsets (such as 8 bit signed offsets rather than 16 bit offsets); identifying and compressing null methods; and identifying commonly found strings and substituting them with appropriate abbreviations.
  • the mclass file 205 is copied to a verifier unit 214 where it is compared to the original Java class file 204. This comparison assures that the compression performed by the mclass file compiler 202 was in fact a substantially lossless compression since it is important that no material information be lost in the compression process.
  • the mclass file 205 is used by a conventional barcode printer 216 to form the scanlet 206.
  • Fig. 3 shows a Java enabled device 300 for reading a scanlet and executing the Java class file encoded therein in accordance with an embodiment of the invention.
  • the device 300 includes, or is coupled to, a conventional scanner 302 having a lens 304 coupled to an interface 306 that receives instructions from a scanclassloader unit 308 included in the device 300.
  • the scanclassloader unit 308 sends a native call to the interface 306 which results in the interface 306 sending the scanned data to a byte array 310 included in, or coupled to, the scanclassloader unit 308.
  • the byte array 310 stores the mclass data bytes received from the scanner until such time as a decompressor 312 directs that the stored data bytes be transferred for decompressing.
  • the decompressor 312 takes the mclass data bytes from the byte array 310 and expands them to form a restored Java class file 314 which is sent to class file buffer 316 until such time as it is required by a JVM 318 for
  • Fig. 4 shows a flowchart detailing a process 400 for encoding a scanlet in accordance with an embodiment of the invention.
  • the process 400 begins at 402 by pre-processing the Java class file by the pre-processor and at 404 by representing a Java class file as a data structure.
  • a determination is made by the pre-verifier whether or not the pre-processed Java class file can be compressed so as to be able to be encoded as a scanlet. If the pre-processed Java class file can not be adequately compressed, then the process 400 ends, otherwise a lossless compression is performed by the compressor unit at 408 to form an mclass file.
  • a copy of the mclass file is forwarded to the decompressor at 410 where it is decompressed at 412 to form a restored Java class file.
  • the restored Java class file is compared to the original Java class file and if it is determined at 415 that the comparison is not valid, then an error is thrown at 416, otherwise, control is passed to 418 where the verified mclass is sent to the barcode printer.
  • the barcode printer generates the scanlet based upon the verified mclass file.
  • Fig. 5 is a flowchart detailing a process 500 for reading and executing data stored in a scanlet by a Java enabled device in accordance with an embodiment of the invention.
  • the process 500 begins at 502 by a scanclassloader unit prompting a user to scan a scanlet that in the described embodiment takes the form of a 2D barcode.
  • the mclass file from the scanned scanlet is input to a decompressor unit at 506.
  • the decompressor unit then expands the mclass file at 508 and then verifies that the expanded mclass file is in fact a valid Java class file at 510. If the expanded mclass file is not a valid Java class file, then an error is thrown at 512, otherwise, control is passed to 514 where a JVM verifies and executes the bytecodes in the Java class file at 516.
  • Fig. 6 illustrates a computer system 600 that can be employed to implement the present invention.
  • the computer system 600 or, more specifically, CPUs 602 may be arranged to support a virtual machine, as will be appreciated by those skilled in the art.
  • ROM acts to transfer data and instructions uni- directionally to the CPUs 602, while RAM is used typically to transfer data and instructions in a bi-directional manner.
  • CPUs 602 may generally include any number of processors.
  • Both primary storage devices 604, 606 may include any suitable computer-readable media.
  • a secondary storage medium 608, which is typically a mass memory device, is also coupled bi-directionally to CPUs 602 and provides additional data storage capacity.
  • the mass memory device 608 is a computer- readable medium that may be used to store programs including computer code, data, and the like.
  • mass memory device 608 is a storage medium such as a hard disk or a tape which generally slower than primary storage devices 604, 606.
  • Mass memory storage device 608 may take the form of a magnetic or paper tape reader or some other well-known device. It will be appreciated that the information retained within the mass memory device 608, may, in appropriate cases, be incorporated in standard fashion as part of RAM 606 as virtual memory.
  • a specific primary storage device 604 such as a CD-ROM may also pass data uni-directionally to the CPUs 602.
  • CPUs 602 are also coupled to one or more input/output devices 610 that may include, but are not limited to, devices such as video monitors, track balls, mice, keyboards, microphones, touch-sensitive displays, transducer card readers, magnetic or paper tape readers, tablets, styluses, voice or handwriting recognizers, or other well-known input devices such as, of course, other computers.
  • CPUs 602 optionally may be coupled to a computer or telecommunications network, e.g. , an Internet network, or an intranet network, using a network connection as shown generally at 612. With such a network connection, it is contemplated that the CPUs 602 might receive information from the network, or might output information to the network in the course of performing the above-described method steps.
  • Such information which is often represented as a sequence of instructions to be executed using CPUs 602, may be received from and outputted to the network, for example, in the form of a computer data signal embodied in a carrier wave.
  • the above-described devices and materials will be familiar to those of skill in the computer hardware and software arts.
  • the scanclassloader can be used in any computing system capable of supporting the Java programming language.
  • the methods and apparatus of the invention are particularly suitable for implementation with respect to a JavaTM based environment, the methods may generally be applied in any suitable object-based environment.
  • the methods are suitable for use in platform-independent object-based environments.
  • the methods may also be implemented in some distributed object-oriented systems.
  • the present invention may generally be implemented on any suitable computing system having a compiler or any network of interconnected computers. Therefore, the present examples are to be considered as illustrative and not restrictive, and the invention is not to be limited to the details given herein, but may be modified within the scope of the appended claims along with their full scope of equivalents.

Abstract

Systems and methods for storing executable content in an icon, such as a scanlet, and using the stored executable content are described. In general, in order to store executable content, such as a Java class file, a determination is made whether or not the Java class file to be stored can be adequately compressed so as to fit within the scanlet. Once so determined, the Java class file is losslessly compressed and encoded to form the scanlet. In order to execute the executable content incorporated in the scanlet, in one embodiment, a conventional scanner reads the scanlet and sends the data in the form of mclass data bytes to a buffer or other such appropriate storage device. A decompressor coupled to the buffer then decompresses the mclass data bytes stored in the buffer to form a restored Java class file that replicates the original Java class file. The restored Java class file is then used to provide the executable content for a Java Virtual Machine incorporated in the Java enabled device.

Description

PATENT APPLICATION
METHOD AND APPARATUS FOR REPRESENTING EXECUTABLE CONTENT WITHIN A BARCODE (SCANLET)
BACKGROUND OF THE INVENTION
1. Field of Invention
The invention relates generally to computing and information systems. More particularly, methods and apparatus for representing executable content in the form of a barcode, also referred to as a scanlet.
2. Description of Relevant Art
One of the many advantages of Java is that it can also be used to build small application modules, or applets, that can be embedded in any number and type of documents, such as a Web page. A Java applet is a small program that can be sent along with a Web page to a user that can perform interactive animations, immediate calculations, or other simple tasks without having to send a user request back to the server. As an example, as shown in Fig. 1, a distributed computer system 100 includes a client computer 102 that is coupled to a server (host) computer 104. The computer 102 includes a browser application 106 that, in turn, includes a requested Web page 108 having an applet 110 embedded therein capable of performing various tasks. In most situations, the applet 110 is executed by a Java Nirtual Machine (JNM) 112 that in this example is also resident in the browser 106.
In order for the JVM 112 to execute the applet 110, the applet's requisite component files (such as ".class files", images and sounds) represented by files 114 - 118 must be downloaded from the server 104 to the JVM 112. Typically the server 104 is part of a distributed network of computers, such as the Internet, or in some cases could be part of an intranet type of arrangement. In any case, the files 114-118 that are required for the JVM 112 to run the applet 110 include Java class files as well as resource files that are used to support the execution of the applet 110. Such class files, includes a main class file, main.class 114, that is used by the JVM 112 as an entry point for execution of the applet 110. The server 104 also stores other class files such as b. class 116 that are used by the JVM 112 in the furtherance of executing the applet 110. Various image and sound components used in the execution of the applet 110 are stored in resource files such as c.image 118.
Other approaches to storing executable content (such as Java class files) besides those involving server side storage techniques have also been attempted. Once such approach is the use of a barcode, the content of which has traditionally been relatively static in nature. Unfortunately, however, although promising, the static nature (and small storage capacity) of one dimensional (ID) bar code precludes it as an effective way of storing executable content. However, with the advent of two dimensional (2D) barcodes and two dimensional scanning technology with its resultant larger data storage capability, the possibility of storing executable content (such as, for example, a Java class file) within a two dimensional bar code has become feasible.
Currently, there are a myriad of barcode symbologies available, each having differing capabilities. The current trade offs between these various formats appear to revolve around data density versus reliability and error correction. One such barcode symbology is represented by the PDF417 barcode standard selected by the Symbol Technologies Inc. of Holtsville, NY (a recognized leader in scanning technology) which is a barcode standard understood by a large number of available 2D scanners.
Even though the PDF 417 accomodates much more information than does the ubiquitous ID barcode, it is still inadequate to support anything but the most rudimentary of Java class files. Specifically, the PDF417 has a maximum capacity of 1080 bytes of binary data, whereas the class file for a simple program (such as the Java program "Hello World") requires up to 500 bytes, it is clear that as currently configured, a conventional 2D barcode could only provide a class file of sufficient size to support only the most simple programs.
Therefore, what is desired is the capability of incorporating executable content in a 2D barcode and using the executable content incorporated therein as input to a simple program.
SUMMARY OF THE INVENTION
Broadly speaking, the invention relates to an improved method, apparatus and computer system for encoding executable content in a 2D barcode to form a scanlet that is capable of storing sufficient executable content for a simple program. The invention can be implemented in numerous ways, including as a method, a computer system, and an apparatus. Several embodiments of the invention are discussed below.
According to one aspect of the present invention, a method for A method for symbolically encoding executable content in an icon is described. The executable content is converted to an uncompressed data file that is then compressed to form a compressed data file having data consistent with the executable content. The data included in the compressed data file is then encoded into the icon. In another embodiment, a method of executing compressed executable content stored in the icon is disclosed. The compressed executable content is read and uncompressed. The uncompressed executable content is then input to a program which performs the executable content.
These and other advantages of the present invention will become apparent upon reading the following detailed descriptions and studying the various figures of the drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
The invention, together with further advantages thereof, may best be understood by reference to the following description taken in conjunction with the accompanying drawings in which:
Fig. 1 shows a conventional distributed computer system that includes a client computer coupled to a server (host) computer.
Fig. 2 is a system for compressing a Java class file to form a scanlet in accordance with an embodiment of the invention.
Fig. 3 shows a Java enabled device for reading a scanlet and executing the Java class file encoded therein in accordance with an embodiment of the invention.
Fig. 4 shows a flowchart detailing a process for encoding a scanlet in accordance with an embodiment of the invention.
Fig. 5 is a flowchart detailing a process for reading and executing data stored in a scanlet by a Java enabled device in accordance with an embodiment of the invention.
Fig. 6 illustrates a computer system that can be employed to implement the present invention. DETAILED DESCRIPTION OF THE EMBODIMENTS
The following description is provided to enable any person skilled in the art to make and use the invention and sets forth the best modes contemplated by the inventor for carrying out the invention. Various modifications, however, will remain readily apparent to those skilled in the art, since the basic principles of the present invention have been defined herein specifically to provide a novel protocol and apparatus for storing executable content in the form of a 2D barcode.
Reference will now be made in detail to a preferred embodiment of the invention. An example of the preferred embodiment is illustrated in the accompanying drawings. While the invention will be described in conjunction with a preferred embodiment, it will be understood that it is not intended to limit the invention to one preferred embodiment. To the contrary, it is intended to cover alternatives, modifications, and equivalents as may be included within the spirit and scope of the invention as defined by the appended claims.
In the following description, frameworks and methods of storing executable content and using the stored executable content are described. The invention will initially be described in terms of a Java enabled device but can be used in any device capable of performing executable content, such as an instruction set. In general, in order to store executable content, such as a Java class file, in the form of a 2D barcode, a determination is made whether or not the Java class file to be stored can be adequately compressed so as to fit within the available barcode technology. Once so determined, the Java class file is compressed in such a manner as to be fully comprehended by the 2D barcode in the form of a scanlet. It should be noted that the compression methodology is substantially a lossless compression methodology whereby there is no loss in executable content from the Java class file. Once the original Java class file has been compressed to form what is referred to as an mclass file, the mclass file is copied, decompressed and checked against the original Java class file in order to assure fidelity between the original Java class file and the mclass file.
Using conventional printing techniques, the mclass file is then used to form the scanlet suitably arranged to provide executable content (in the form of the decompressed mclass file) to any Java enabled device.
In order to execute the executable content incorporated in the scanlet, in one embodiment, a conventional scanner reads the scanlet and sends the data in the form of mclass data bytes to a buffer or other such appropriate storage device. A decompressor coupled to the buffer then decompresses the mclass data bytes stored in the buffer to form a restored Java class file that replicates the original Java class file. The restored Java class file is then used to provide the executable content for a Java Virtual Machine incorporated in the Java enabled device.
Typically, computer programs written in the Java programming language are compiled into bytecodes or Java virtual machine instructions that are then executed by a Java virtual machine. The bytecodes are stored in class files that are input into the Java virtual machine for interpretation. Java source code includes the classic "Hello World" program written in Java. The source code is then input into a bytecode compiler that compiles the source code into bytecodes. The bytecodes are virtual machine instructions as they will be executed by a software emulated computer. Typically, virtual machine instructions are generic (i.e., not designed for any specific microprocessor or computer architecture) but this is not required. The bytecode compiler outputs a Java class file that includes the bytecodes for the Java program. The Java class file is input into a Java virtual machine. The Java virtual machine is an interpreter that decodes and executes the bytecodes in the Java class file. The Java virtual machine is an interpreter, but is commonly referred to as a virtual machine as it emulates a microprocessor or computer architecture in software (e.g., the microprocessor or computer architecture that may not exist in hardware).
More recently, the Java programming language, an object-oriented language, has introduced the possibility of compiling output (called bytecode) that can run on any computer system platform for which a Java virtual machine (or bytecode interpreter) is provided. The Java virtual machine is designed to convert the bytecode into instructions that can be executed by the actual hardware processor. Using this virtual machine, rather than being interpreted one instruction at a time, bytecode can be recompiled at each particular system platform by, in some cases, a just-in-time (JIT) compiler. The operation of virtual machines or, more particularly, Java™ virtual machines, is described in more detail in The Java™ Virtual Machine Specification by Tim Lindholm and Frank Yellin (ISBN 0-201-63452-X), which is incorporated herein by reference.
The invention will now be described in terms of a Java enabled device such as for example, a personal digital assistant (PDA) having access to a barcode scanner, for example. It should be noted, however, that the invention is not limited to the described Java enabled device, nor is it limited to only the Java programming language. As a matter of fact, the invention can be used in any system where data is symbolically encoded which includes, but is not limited to, barcodes and the like.
Fig. 2 is a system 200 for compressing a Java class file to form a scanlet in accordance with an embodiment of the invention. The system 200 includes an mclass file compiler 202 arranged to convert a Java class file 204 into what is referred to as a mclass file 205 suitable for being encoded in a barcode to form a scanlet 206. It should be noted that in order to maximize the number of Java class files which can be compressed sufficient for encoding as a scanlet, the smallest possible Java class file must be used. This can be accomplished in any number of ways. For instance, the "g:none" compiler option found in the Java 2 compilers produced by Sun Microsystems of Mountain View, CA can produce a class file that contains no debug information. In addition, it is possible to further reduce the size of the Java class file 204 by using other compiler optimization techniques and flags not mentioned here for sake of clarity but otherwise well known to those skilled in the art.
Once the Java class file 204 has been suitably optimized, the Java class file 204 is sent to an mclass pre-processor unit 208 arranged to further reduce the size of the Java class file 204. Once such pre-processor unit suitable for pre-processing the Java class file 204 is referred to as a Java obfuscator. A Java obfuscator, in addition to providing some security by making reverse engineering of the Java class file 204 more difficult, typically reduces the size of the Java class file 204.
In the described embodiment, the compiler 202 includes a pre- verifier unit 210 arranged to receive the pre-processed Java class file 204 and determine whether or not it can be compressed to a size suitable for forming the scanlet 206. Once the pre- verifier 210 has determined that the Java class file 204 can be sufficiently compressed to be encoded into the scanlet 206, it is sent to an mclass compressor unit 212 which forms the mclass file 205 by performing various compression algorithms on the pre- processed Java class file. Such compression algorithms include: examining constant pool entries and shrinking their component fields (if appropriate) from, for example, 16 bits to 8 bits; eliminating repetitive constant pool tags; introducing smaller mclass- specific bytecode instructions which can accommodate smaller offsets (such as 8 bit signed offsets rather than 16 bit offsets); identifying and compressing null methods; and identifying commonly found strings and substituting them with appropriate abbreviations.
Once completed, the mclass file 205 is copied to a verifier unit 214 where it is compared to the original Java class file 204. This comparison assures that the compression performed by the mclass file compiler 202 was in fact a substantially lossless compression since it is important that no material information be lost in the compression process. Once verified against the original Java class file 204, the mclass file 205 is used by a conventional barcode printer 216 to form the scanlet 206.
Fig. 3 shows a Java enabled device 300 for reading a scanlet and executing the Java class file encoded therein in accordance with an embodiment of the invention. The device 300 includes, or is coupled to, a conventional scanner 302 having a lens 304 coupled to an interface 306 that receives instructions from a scanclassloader unit 308 included in the device 300. hi the described embodiment, the scanclassloader unit 308 sends a native call to the interface 306 which results in the interface 306 sending the scanned data to a byte array 310 included in, or coupled to, the scanclassloader unit 308. The byte array 310 stores the mclass data bytes received from the scanner until such time as a decompressor 312 directs that the stored data bytes be transferred for decompressing. The decompressor 312 takes the mclass data bytes from the byte array 310 and expands them to form a restored Java class file 314 which is sent to class file buffer 316 until such time as it is required by a JVM 318 for execution.
Fig. 4 shows a flowchart detailing a process 400 for encoding a scanlet in accordance with an embodiment of the invention. The process 400 begins at 402 by pre-processing the Java class file by the pre-processor and at 404 by representing a Java class file as a data structure. At 406, a determination is made by the pre-verifier whether or not the pre-processed Java class file can be compressed so as to be able to be encoded as a scanlet. If the pre-processed Java class file can not be adequately compressed, then the process 400 ends, otherwise a lossless compression is performed by the compressor unit at 408 to form an mclass file. A copy of the mclass file is forwarded to the decompressor at 410 where it is decompressed at 412 to form a restored Java class file. At 414 the restored Java class file is compared to the original Java class file and if it is determined at 415 that the comparison is not valid, then an error is thrown at 416, otherwise, control is passed to 418 where the verified mclass is sent to the barcode printer. At 420, the barcode printer generates the scanlet based upon the verified mclass file.
Fig. 5 is a flowchart detailing a process 500 for reading and executing data stored in a scanlet by a Java enabled device in accordance with an embodiment of the invention. The process 500 begins at 502 by a scanclassloader unit prompting a user to scan a scanlet that in the described embodiment takes the form of a 2D barcode. Once the barcode is scanned at 504, the mclass file from the scanned scanlet is input to a decompressor unit at 506. The decompressor unit then expands the mclass file at 508 and then verifies that the expanded mclass file is in fact a valid Java class file at 510. If the expanded mclass file is not a valid Java class file, then an error is thrown at 512, otherwise, control is passed to 514 where a JVM verifies and executes the bytecodes in the Java class file at 516.
Fig. 6 illustrates a computer system 600 that can be employed to implement the present invention. The computer system 600 or, more specifically, CPUs 602, may be arranged to support a virtual machine, as will be appreciated by those skilled in the art. As is well known in the art, ROM acts to transfer data and instructions uni- directionally to the CPUs 602, while RAM is used typically to transfer data and instructions in a bi-directional manner. CPUs 602 may generally include any number of processors. Both primary storage devices 604, 606 may include any suitable computer-readable media. A secondary storage medium 608, which is typically a mass memory device, is also coupled bi-directionally to CPUs 602 and provides additional data storage capacity. The mass memory device 608 is a computer- readable medium that may be used to store programs including computer code, data, and the like. Typically, mass memory device 608 is a storage medium such as a hard disk or a tape which generally slower than primary storage devices 604, 606. Mass memory storage device 608 may take the form of a magnetic or paper tape reader or some other well-known device. It will be appreciated that the information retained within the mass memory device 608, may, in appropriate cases, be incorporated in standard fashion as part of RAM 606 as virtual memory. A specific primary storage device 604 such as a CD-ROM may also pass data uni-directionally to the CPUs 602. CPUs 602 are also coupled to one or more input/output devices 610 that may include, but are not limited to, devices such as video monitors, track balls, mice, keyboards, microphones, touch-sensitive displays, transducer card readers, magnetic or paper tape readers, tablets, styluses, voice or handwriting recognizers, or other well-known input devices such as, of course, other computers. Finally, CPUs 602 optionally may be coupled to a computer or telecommunications network, e.g. , an Internet network, or an intranet network, using a network connection as shown generally at 612. With such a network connection, it is contemplated that the CPUs 602 might receive information from the network, or might output information to the network in the course of performing the above-described method steps. Such information, which is often represented as a sequence of instructions to be executed using CPUs 602, may be received from and outputted to the network, for example, in the form of a computer data signal embodied in a carrier wave. The above-described devices and materials will be familiar to those of skill in the computer hardware and software arts.
Although only a few embodiments of the present invention have been described, it should be understood that the present invention may be embodied in many other specific forms without departing from the spirit or the scope of the present invention. By way of example, the scanclassloader can be used in any computing system capable of supporting the Java programming language.
Although the methods and apparatus of the invention are particularly suitable for implementation with respect to a Java™ based environment, the methods may generally be applied in any suitable object-based environment. In particular, the methods are suitable for use in platform-independent object-based environments. It should be appreciated that the methods may also be implemented in some distributed object-oriented systems. It should be appreciated that the present invention may generally be implemented on any suitable computing system having a compiler or any network of interconnected computers. Therefore, the present examples are to be considered as illustrative and not restrictive, and the invention is not to be limited to the details given herein, but may be modified within the scope of the appended claims along with their full scope of equivalents.
What is claimed is:

Claims

Claims:
1. A method for symbolically encoding executable content in an icon, comprising: converting the executable content to an uncompressed data file; compressing the uncompressed data file to form a compressed data file; and encoding the compressed data file into the icon.
2. A method as recited in claim 1, wherein the icon is a two dimensional barcode.
3. A method as recited in claim 1, wherein the executable content is a Java class file.
4. A method as recited in claim 3, wherein the compressing, comprises: examining a constant pool entry; and shrinking a component field associated with the examined constant pool entry, if appropriate.
5. A method as recited in claim 3, wherein the compressing comprises: eliminating repetitive constant pool tags.
6. A method as recited in claim 3, wherein the compressing comprises: introducing smaller mclass-specific bytecode instructions which can accommodate smaller offsets.
7. A method as recited in claim 3, wherein the compressing comprises: identifying a null method; and eliminating the identified null method.
8. A method as recited in claim 3, wherein the compressing comprises: identifying commonly a found string; and substituting the found string with an appropriate abbreviation.
9. A method as recited in claim 1, further comprising: copying the compressed data file; de-compressing the compressed data file to form a restored data file; and comparing the restored data file to the uncompressed data file.
10. A method as recited in claim 5, further comprising: based on the comparing, if the restored data file matches the uncompressed data file, then forwarding the compressed data file corresponding to the restored data file to an encoder.
11. A method of executing compressed executable content stored in an icon, comprising: reading the compressed executable content; uncompressing the read compressed executable content; and inputting the uncompressed executable content to a program, wherein the program performs the executable content.
12. A method as recited in claim 11, wherein the executable content is a Java class file.
13. A method as recited in claim 12, wherein the icon is a 2D barcode.
14. A method as recited in claim 13, wherein the program is an applet.
15. A method as recited in claim 14, wherein the reading is performed by a barcode scanner.
16. A method as recited in claim 15, wherein the barcode scanner is coupled to a Java enabled device.
PCT/US2001/028146 2000-09-06 2001-09-06 Method and apparatus for representing executable content within a barcode (scanlet) WO2002021264A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2001290680A AU2001290680A1 (en) 2000-09-06 2001-09-06 Method and apparatus for representing executable content within a barcode (scanlet)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US65575100A 2000-09-06 2000-09-06
US09/655,751 2000-09-06

Publications (2)

Publication Number Publication Date
WO2002021264A2 true WO2002021264A2 (en) 2002-03-14
WO2002021264A3 WO2002021264A3 (en) 2002-08-01

Family

ID=24630211

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2001/028146 WO2002021264A2 (en) 2000-09-06 2001-09-06 Method and apparatus for representing executable content within a barcode (scanlet)

Country Status (2)

Country Link
AU (1) AU2001290680A1 (en)
WO (1) WO2002021264A2 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005043470A1 (en) * 2003-10-31 2005-05-12 Gtech Rhode Island Corporation Method and apparatus for providing and processing active barcodes
WO2008038017A1 (en) * 2006-09-29 2008-04-03 British Telecommunications Public Limited Company Information processing system and related method
WO2021158778A1 (en) * 2020-02-05 2021-08-12 LabWare Holdings, Inc. Systems and methods for encoding executable code in barcodes
WO2023001659A1 (en) * 2021-07-20 2023-01-26 Eupalia Medium able to be recognized optically by a user, featuring digital data and the means for decoding them

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2158693A5 (en) * 1971-10-28 1973-06-15 Documentor Sciences Corp
US5837986A (en) * 1990-01-05 1998-11-17 Symbol Technologies, Inc. Modification of software files in a microprocessor-controlled device via two-dimensional bar code symbols
WO1999057885A1 (en) * 1998-04-30 1999-11-11 Mediasec Technologies Llc Digital authentication with analog documents

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2158693A5 (en) * 1971-10-28 1973-06-15 Documentor Sciences Corp
US5837986A (en) * 1990-01-05 1998-11-17 Symbol Technologies, Inc. Modification of software files in a microprocessor-controlled device via two-dimensional bar code symbols
WO1999057885A1 (en) * 1998-04-30 1999-11-11 Mediasec Technologies Llc Digital authentication with analog documents

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
ALFRED V. AHO, RAVI SETHI, JEFFREY D. ULLMAN: "Compilers -- Principles, Techniques, and Tools" 1987 , ADDISON-WESLEY SERIES IN COMPUTER SCIENCE , ÉTATS-UNIS D'AMÉRIQUE XP002199144 ISBN: 0-201-10088-6 page 554, line 4 -page 557, line 30 page 585 -page 609 *
BERT MOORE: "A New Dimension in Bar Codes" INTERNET DOCUMENT, [Online] December 1995 (1995-12), XP002199025 Retrieved from the Internet: <URL:http://www.byte.com/art/9512/sec7/art 3.htm> *
CHARLES LEFURGY, TREVOR MUDGE: "Code Compression for DSP" PROCEEDINGS OF THE COMPILER AND ARCHITECTURE SUPPORT FOR EMBEDDED COMPUTING SYSTEMS (CASES 98) CONFERENCE, [Online] 4 - 5 December 1998, XP002199141 George Washington University, Washington DC, États-Unis d'Amérique Retrieved from the Internet: <URL:http://www.eecs.umich.edu/~tnm/compre ss/publications/cse-tr-380-98.pdf> [retrieved on 2002-05-16] *
MADLERÐALUMNI.CALTECH.EDU: "tired of gilbert" INTERNET DOCUMENT, [Online] 6 August 1996 (1996-08-06), XP002199142 comp.compression Retrieved from the Internet: <URL:http://groups.google.com/groups?selm= 4u8ee0%24oef%40netline-fddi.jpl.nasa.gov&o utput=gplain> [retrieved on 2002-05-16] *
QUETZALCOATL BRADLEY, R. NIGEL HORSPOOL, JAN VITEK: "JAZZ: An Efficient Compressed Format for Java Archive Files" PROCEEDINGS OF THE CASCON'98 CONFERENCE, [Online] 1998, XP002199143 Toronto, Canada Retrieved from the Internet: <URL:http://www.csr.uvic.ca/~nigelh/Public ations/jazz.pdf> [retrieved on 2002-05-16] *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005043470A1 (en) * 2003-10-31 2005-05-12 Gtech Rhode Island Corporation Method and apparatus for providing and processing active barcodes
AU2004285247B2 (en) * 2003-10-31 2010-09-09 Gtech Rhode Island Corporation Method and apparatus for providing and processing active barcodes
WO2008038017A1 (en) * 2006-09-29 2008-04-03 British Telecommunications Public Limited Company Information processing system and related method
EP1923783A1 (en) * 2006-09-29 2008-05-21 British Telecommunications Public Limited Company Information processing system and related method
WO2021158778A1 (en) * 2020-02-05 2021-08-12 LabWare Holdings, Inc. Systems and methods for encoding executable code in barcodes
WO2023001659A1 (en) * 2021-07-20 2023-01-26 Eupalia Medium able to be recognized optically by a user, featuring digital data and the means for decoding them
FR3125616A1 (en) * 2021-07-20 2023-01-27 Eupalia Support optically discernible by a user, representing digital data and the means of decoding them

Also Published As

Publication number Publication date
AU2001290680A1 (en) 2002-03-22
WO2002021264A3 (en) 2002-08-01

Similar Documents

Publication Publication Date Title
EP1076290B1 (en) Method for on-demand network application download and execution
EP0949566B1 (en) Method and system for performing static initialization
JP4165683B2 (en) Generate a persistent representation of a complex data structure
JP4130713B2 (en) Program converter
US20030056029A1 (en) Method and apparatus for customizing Java API implementations
US20030041317A1 (en) Frameworks for generation of java macro instructions for storing values into local variables
AU774192B2 (en) Method and apparatus for handling exceptions as normal control flow
US20070039010A1 (en) Automatic generation of software code to facilitate interoperability
US9152437B2 (en) Dynamically installing image processing
US7313789B1 (en) Methods and systems for reducing a program size
WO2000013132A1 (en) Improving the portability of digital images
JP2001034483A (en) Numbering operational code for encoding metadata
CN114816417A (en) Cross compiling method and device, computing equipment and storage medium
EP1306753A2 (en) Exception handling in Java computing environments
JP2005501334A (en) A framework for generating Java macro instructions in a Java computing environment
US20030086620A1 (en) System and method for split-stream dictionary program compression and just-in-time translation
WO2002021264A2 (en) Method and apparatus for representing executable content within a barcode (scanlet)
Ford VXA: A Virtual Architecture for Durable Compressed Archives.
US6948156B2 (en) Type checking in java computing environments
US7228533B2 (en) Frameworks for generation of Java macro instructions for performing programming loops
US20020169556A1 (en) Identifying and tracking object references in a java programming environment
JP2004062220A (en) Information processor, method of processing information, and program converter
CN1703675B (en) Accelerating multimedia content
US6978448B1 (en) Method and apparatus for rewriting bytecodes to minimize runtime checks
US20030041322A1 (en) Frameworks for generation of java macro instructions for instantiating java objects

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PH PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
AK Designated states

Kind code of ref document: A3

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PH PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A3

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase in:

Ref country code: JP