James Gosling has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).
Abstract: A program interpreter for computer programs written in a bytecode language, which uses a restricted set of data type specific bytecodes. The interpreter, prior to executing any bytecode program, executes a bytecode program verifier procedure that verifies the integrity of a specified program by identifying any bytecode instruction that would process data of the wrong type for such a bytecode and any bytecode instruction sequences in the specified program that would cause underflow or overflow of the operand stack. If the program verifier finds any instructions that violate predefined stack usage and data type usage restrictions, execution of the program by the interpreter is prevented. After pre-processing of the program by the verifier, if no program faults were found, the interpreter executes the program without performing operand stack overflow and underflow checks and without performing data type checks on operands stored in operand stack. As a result, program execution speed is greatly improved.
Abstract: Source code to be protected, a software application writer's private key, along with an application writer's license provided to the first computer. The application writer's license includes identifying information such as the application writer's name as well as the application writer's public key. A compiler program executed by the first computer compiles the source code into binary code, and computes a message digest for the binary code. The first computer then encrypts the message digest using the application writer's private key, such that the encrypted message digest is defined as a digital "signature" of the application writer. A software passport is then generated which includes the application writer's digital signature, the application writer's license and the binary code. The software passport is then distributed to a user using any number of software distribution models known in the industry.
Abstract: The present invention provides a verifier for use in conjunction with programs utilizing data type specific bytecodes for verifying the proper operation of the executable program prior to actual execution by a host processor. A verifier is provided which includes a virtual stack for temporarily storing stack information which parallels the typical stack operations required during the execution a bytecode program. The verifier also includes a stack snapshot storage structure having a snapshot directory and stack snapshot storage area for storing the state of the virtual stack at various points during program verification so as to assure proper stack manipulations by the source program. A two step source program verification process is provided for in which the source program is initially loaded into the verifier and a first pass source program evaluation is performed.
Abstract: A class loader downloads objects and object viewers from remote computer nodes, and invokes locally stored object viewers to view objects. When a user selects an object to view, a conventional downloading of the referenced object is initiated. The class loader, however, utilizes data type information received at the beginning of the object downloading process to determine if a viewer for the referenced object is available on the user's workstation. If an appropriate view is not locally available, the class loader automatically locates an appropriate viewer on the server from which the object is being downloaded, or from any other appropriate server known to the user's workstation. The class loader downloads the located viewer and then invokes a program verification procedure to verify the integrity of the downloaded viewer before the viewer is executed.
Abstract: Full-motion animation video is displayed in a computer system through use of sprite objects. The sprite objects define the images on the output display, and the locations of the sprite objects are changed to create the animation. The computer system includes three areas of physical memory assigned the status of a front buffer, a back buffer, and a cache buffer. The front buffer stores a frame currently displayed on the output display. The cache buffer is utilized to store a subset of the sprite objects so that all sprite objects need not be rendered for each frame of animation. The contents of the cache buffer are copied to the back buffer during display of the front buffer. To display a subsequent frame, the front and back buffers are switched. A cache buffer permits display of full-motion animation by minimizing use of processor and computer resources.
Abstract: A digital wiring configuration comprises a switch control allowing a user to select a function to control a corresponding electrical device. A control unit couples electrical power to the electrical devices through power outlets. The control unit allows an operator to dynamically configure the switch controls to operate electrical devices at specified power outlets. Upon selection of a function on the switch control, the switch control transmits both a switch state, indicative of the function selected, and a switch identification that uniquely identifies that switch control. The control unit receives the switch state and the switch identification and generates a device identification uniquely identifying the power outlet corresponding to the control switch. The control unit transmits the device identification and the switch state to the power outlets. The corresponding power outlet is selected through the device identification and executes the function in accordance with the switch state.
Abstract: A hybrid compiler-interpreter comprising a compiler for "compiling" source program code, and an interpreter for interpreting the "compiled" code, is provided to a computer system. The compiler comprises a code generator that generates code in intermediate form with data references made on a symbolic basis. The interpreter comprises a main interpretation routine, and two data reference handling routines, a dynamic field reference routine for handling symbolic references, and a static field reference routine for handling numeric references. The dynamic field reference routine, when invoked, resolves a symbolic reference and rewrites the symbolic reference into a numeric reference. After rewriting, the dynamic field reference routine returns to the main interpretation routine without advancing program execution to the next instruction, thereby allowing the rewritten instruction with numeric reference to be reexecuted.
Abstract: In the image generation method and apparatus of the present invention, an image generation apparatus is provided in which a digital halftone cell of threshold values is generated and broken down into a plurality of tiles determined from the locations of the four corners of the halftone cell. The tiles when put together form a bounding box around the halftone cell. These tiles are arranged into a threshold array of threshold values wherein the width of the array is equal to the number of threshold values in a sequence of threshold values across a row of contiguous tiles and the height of the array is equal to the greatest common denominator of the x axis increment and y axis increment between vertices of the halftone cell.The threshold array is stored in memory for subsequent reference during the halftoning process.
Abstract: A computer system comprising a display memory, a window indentification memory, logic circuitry for ascertaining that information to be stored at each position of the display memory is in the correct window by comparing the window number in the window identification memory with the window number of information to be sent to the display memory, and a window identification look-up table activated by window identification signals for providing an output to select the number of bits of color information to be output from the display memory to provide color information for an output device.
May 1, 1989
Date of Patent:
February 25, 1992
Sun Microsystems, Inc.
Susan Carrie, Serdar Ergene, James Gosling