CN1114155C - Method and system for loading classes in read-only memory - Google Patents

Method and system for loading classes in read-only memory Download PDF

Info

Publication number
CN1114155C
CN1114155C CN97112905A CN97112905A CN1114155C CN 1114155 C CN1114155 C CN 1114155C CN 97112905 A CN97112905 A CN 97112905A CN 97112905 A CN97112905 A CN 97112905A CN 1114155 C CN1114155 C CN 1114155C
Authority
CN
China
Prior art keywords
data
module
class
computer
executable
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Lifetime
Application number
CN97112905A
Other languages
Chinese (zh)
Other versions
CN1172303A (en
Inventor
西伦·D·托克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
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
Publication of CN1172303A publication Critical patent/CN1172303A/en
Application granted granted Critical
Publication of CN1114155C publication Critical patent/CN1114155C/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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
    • G06F9/44557Code layout in executable memory
    • G06F9/44563Sharing
    • 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
    • G06F9/44568Immediately runnable code
    • G06F9/44573Execute-in-place [XIP]
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution

Abstract

A method and system for providing an executable module having two address spaces reside in a read-only storage medium and a random access memory is herein described. The executable module represents Java classes that are structured for dynamic class loading. A static class loader is used to modify the class structure to accommodate static loading. The static class loader also identifies methods that contain unresolved symbolic references and data that varies during the execution of the module. These methods and data are identified in order to place them in the address space that resides in the random access memory. The static loader is beneficial in a distributed computing environment having a client computer that has little or no secondary storage. By utilizing a read-only memory to store statically loadable classes, the random access memory is left available for other uses.

Description

Computer system and method for operating thereof and control device
Technical field
The present invention relates to have the object oriented calculation machine system of the class of dynamic load working time, specifically, relate to a kind of in ROM (read-only memory) the system and method for a subclass of prestrain class.
Background technology
A trend of current object oriented programming languages is the function of expansion language, to adapt to the distribution of dynamic content in distributed computing environment.In a kind of such language, it by working time dynamic loading type realize.Class is the set of some variablees and method, and they are models of an object behavior.By dynamic loading type working time, existing application program can increase function by connecting into new class, and these new classes reside in any computer system in the distributed computing environment.
In this language, symbolic reference (symbolic references) is used in reference to for the class members (as the method and the class variable of class).When a class was called, the dynamic load device was determined the storage scheme of class and is solved symbolic reference.When the time-like that visit constantly is updated, such loading scheme is useful.Yet a limitation of this loading scheme is that it depends on read/write memory devices, as random-access memory (ram).Have seldom or do not have in the computing environment of supplementary storage (as the non-volatile magnetic disk storage) a kind of, so dynamic loading type can be used up the memory capacity of RAM very soon.Because the capacity of RAM is limited, reduces application program as far as possible and use the amount of RAM to need.Therefore, but when execution contains the OO program code of class of dynamic load, need limit the amount of its used RAM.
Summary of the invention
It will be useful that a kind of method and system that overcome this defective of prior art are provided.
In brief, the disclosure belongs to a kind of off-line type (offline) Classloader, and it is used to produce an executable module, and the class of this module is gone in the storer by prestrain and do not needed dynamic load working time.However, this executable module still comprises a class formation that is exclusively used in dynamic load working time.Therefore, this off-line type Classloader is revised existing class formation to adapt to static the loading.Yet this species structure allows to change and comprises unsolved data of quoting and method.This off-line type Classloader marks for these methods and data, and indicating them will be deposited in the random access memory.Other data all are stored in the ROM (read-only memory).After static loading procedure is finished, but just produce an executable module that comprises the prestrain of two address spaces.First address space comprises the data that contain the unsolved method of quoting and change in the module implementation, this first address space is loaded into random access memory.Second address space comprises method that contains the class that is loaded by static state and the constant that is loaded into ROM (read-only memory).
Have seldom or do not have in the Distributed Computer System of supplementary storage in client computer, but the executable module of this prestrain is useful.Such client computer needs to run application in random access memory fully, and random access memory becomes Limited resources soon.By adopting this off-line type Classloader that application program is divided into two address spaces, but the RAM quantity that the prestrain module is used just reduces to minimum.In one embodiment, client computer with bottom line supplementary storage adopt the off-line type Classloader in the ROM (read-only memory) of client computer prestrain a browser.This browser is divided into aforesaid two address spaces.When system initialization or when powering on, the random access memory of this browser part just is loaded into random access memory from ROM (read-only memory).By carrying out most of browser in ROM (read-only memory), browser has just had more RAM and has been used for canned data content and executable module, and they are to obtain from other server computer with the client computer communication.
Specifically, according to one aspect of the present invention, the method of a kind of operational computations machine system is provided, this computer system comprises Classloader, being used for class with method is loaded into computer system and carries out, this method comprises: data in the access ROM device and instruction, in this ROM device, store software module, this module comprises the prestrain module, this prestrain module comprises data and at least one method, this method comprises a plurality of instructions, but the subclass of this instruction comprises the symbolic reference to the computing machine access method; Wherein this prestrain module is divided into first submodule and second submodule, each submodule comprises a plurality of instruction and datas, this second submodule has subset of instructions and data subset, this subset of instructions and data subset comprise instruction and data, and these data can be modified in the process of carrying out these a plurality of instructions; When this computer system of initialization, store this second submodule into readable writing in the random access memory device; Never call this Classloader and carry out this prestrain module, comprise the instruction of carrying out in this first and second submodule and carry out the instruction of revising the data in this second submodule; And, call this Classloader, so that before carrying out other software modules, load these other software modules.
According to another aspect of the present invention, a kind of computer-controlled device is provided, comprise: ROM device, wherein store software module, wherein this software module is the prestrain module, and this prestrain module is divided into first submodule and second submodule, each submodule comprises a plurality of instruction and datas, this second submodule has subset of instructions and data subset, and this subset of instructions and data subset comprise instruction and data, and these data can be modified in the process of carrying out these a plurality of instructions; The readable random access memory device of writing, this second submodule is stored in wherein when this computer system of initialization; Data processor is used to carry out this software module, so that input information content-data and computer-executable modules and the data that will import and computer-executable modules store this readable writing in the random access memory device into from other devices; And Classloader is used for class with method and is loaded into computer system and carries out, and wherein is stored in this prestrain module in this ROM device and waits for that this data processor carries out and handle without this Classloader.
According to another aspect of the present invention, a kind of method of operational computations machine is provided, this method may further comprise the steps: a plurality of classes of storage in storer, these a plurality of classes will be included in the executable module, at least one class in these a plurality of classes comprises data and at least one method, this method comprises a plurality of instructions, but the subclass of this instruction comprises the symbolic reference to the computing machine access method; To each class, when such data can be revised by such method, such data are set up mark; Its instruction in these a plurality of classes comprised each method of the symbolic reference that is not stored in the method in this storer is set up mark; And, this executable module is provided, this executable module comprises each class in these a plurality of classes, wherein when carrying out this executable module, each method of not setting up mark is pre-loaded in the read-only storage medium with each data of not setting up mark, and each method of setting up mark will be stored in readable writing in the storage medium with each data of setting up mark.
According to another aspect of the present invention, a kind of computer system is provided, comprise: storer, be used for storing the class that will be included executable module, such comprises data and at least one method, this method comprises a plurality of instructions, but the subclass of this instruction comprises the symbolic reference to the computing machine access method; The off-line type Classloader, be used for when such data can be revised by such method, such data being set up mark, and its instruction in such comprised each method of the symbolic reference that is not stored in the method in this storer is set up mark: and connector, be used to produce executable module, this executable module has first and second portion, this first comprises each method and the data of being set up mark by this off-line type Classloader, and this second portion comprises not each method and the data in this first.
Description of drawings
From the following detailed description and claims and in conjunction with the accompanying drawings, the other objects and features of the invention can be clearer, and accompanying drawing is:
Fig. 1 is the block scheme of Distributed Computer System.
Fig. 2 is the block scheme of client computer in the Distributed Computer System shown in Figure 1.
Fig. 3 is the process flow diagram of explanation processing element, but this processing element is used to produce the executable module of prestrain.
Fig. 4 is the file build of explanation class file.
Fig. 5 is the file build of explanation constant pool (constant pool).
Fig. 6 illustrates the class block data structure.
Fig. 7 illustrates a command byte code stream.
Fig. 8 A and 8B are the process flow diagrams of off-line type Classloader method therefor.
Fig. 9 is a process flow diagram of setting up the method for class block data structure.
Figure 10 is the process flow diagram that deletion repeats the method for constant.
Figure 11 is the process flow diagram that non-(non-quick) order format fast is converted to the method for quick order format.
Figure 12 is a block scheme, and the mapping relations that application program are pre-loaded to ROM (read-only memory) and random access memory are described, and explanation is mapped to the method in the random access memory and the loading procedure of data division by the static class initializer.
Embodiment
Method and system described herein adopts distributed computing environment, and this distributed computing environment has the communication link that connects at least one server computer and some client computer.Some client computer has seldom or does not have supplementary storage (as the non-volatile magnetic disk storage), therefore requires application program to move in random access memory fully.A kind of application program with the exploitation of Java programming language is carried out on such client computer.Best, this application program is such browser, be from one or more server computer input Java contents, as Java Applet (applet).Usually this browser is an interpreter module, and it adopts HTTP(Hypertext Transport Protocol) retrieval network document, so that from the one or more webpages of server access as network address, these web page format are HTML(Hypertext Markup Language).Html document is shown to the user of client-side after explaining.Usually, html document embeds in the applet.Applet is an executable module, is expressed as a java class.Browser is written into this applet and associated class, to carry out this applet.
Browser, html document and applet all reside among the RAM of computing machine.Sometimes, the data that are written among the RAM are to surpass its capacity.Because client computer may not have supplementary storage, it is useful supporting the part of class to insert ROM (read-only memory) substantially browser and other.Like this, the RAM storer specially keeps for the applet of input.Best, browser and other support class (as I/O and utility classes) to be pre-loaded to ROM (read-only memory) substantially.
The off-line type Classloader as browser and the basic class of supporting, is divided into the address space of at least two separation with java application.First address space resides in the ROM (read-only memory), comprises method that does not need dynamic load and the data that remain unchanged.Second address space resides in the read/writable memory device (as random access memory), comprises method that needs dynamic load and the data that change in the process of implementation.
But the browser initial storage of Hua Fening is in the ROM (read-only memory) of client computer like this.When system powered on, second address space was pre-loaded to RAM.Can reserve a large amount of RAM storeies like this and import html document, applet, out of Memory front and back literary composition (information-context) and executable module for browser, they all can pass through the communication link access.
Should be pointed out that the disclosure is described with reference to the Java programming language.Therefore, this description will be adopted the term among the Java.Following Java term will frequently use in a full piece of writing is described, and makes brief description at this.Class is example (instance) variable that is used for the description object behavior and the combination of method.To liking an example of class.Instance variable is the data of object, and it is by the class instantiation.Static instance variable all is identical for all examples of class.Non-static instance variable is all different to each example of class.The constant data refer to those immovable data in program process.
Method is to carry out the program segment of the clear and definite operation of a series of implications.In Java, method is to realize with the instruction that the byte code stream is represented.Bytecode is one 8 a code, and it can be the part of instruction, as one 8 operand or operational code.Interface is an abstract class, and wherein the bytecode of implementation method defined in working time.Java application is the executable module that comprises bytecode, and it can adopt Java interpreter or Java (just-in-time) compiler execution in time.The characteristic of Java programming language is shown at Tim Ritchey Programming with Java Beta 2.0,Have a detailed description in New RidersPublishing (1995) one books.
With reference to Fig. 1, shown in Distributed Computer System 100, a plurality of client computer 102 and a plurality of server computer 104 are arranged.In one embodiment, every client computer 102 is connected with server 104 by Internet 106, also can adopt communicating to connect of other form certainly.Best, server and client computer can be desktop computers, and as sun station, IBM compatible and Macintosh machine, yet in fact the computing machine of any kind all can be used as server or client computer.And this system is not limited to Distributed Computer System.It can be realized not according to the details of explanation here, can be implemented as the loose coupling microprocessor system of the tight coupling processor or the different structure of different computer systems, different structure.
In one embodiment, one or more server computers comprise a html document storehouse as network address, wherein comprise Java content and applet.Client computer is carried out browser, and this browser provides from the chance of server computer access html document for the user of client-side.With reference to Fig. 1, server computer generally includes one or more processors 112, communication interface 116, user interface 114 and storer 110.Storer 110 storages:
Operating system 118;
The access to netwoks program 120 of Internet contact manager program or other type;
Compiler 122 is used for the source code that the Java programming language is write is translated into the byte code stream;
Source code library 124 comprises the source code file of the one or more Java of comprising source codes;
Class file storehouse 128 comprises one or more class files 130 and comprises one or more class libraries 131 of class file that each class file comprises the data of representing certain kinds;
Off-line type Classloader 132 is used for the specific category of prestrain; The off-line type Classloader also can be described as the static class loader;
Assembler 134 produces file destination, represents class members, class data structure and memory stores indicator with the discernible form of connector;
Connector 136 for the class of a series of prestrains is determined memory layout, and solves all symbolic references;
Browser 138 is used for the access html document;
One or more data files are used for server.
Browser can comprise:
Runtime class loader module 140 is loaded into user address space with class, and uses the verification of bytecode program checker to be loaded the integrality of the relevant method of class with each;
Whether bytecode program checker module 142, designated program of verification satisfy some predetermined integrality criterion; With
HTML loader 144 is used to load html document; And other module.
Figure 2 shows that client computer, comprise one or more processors 202, communication interface 206, user interface 204, ROM (read-only memory) 208 and random access memory 210.A part 212 and the support program (comprising operating system 213 and access to netwoks program 214) of ROM (read-only memory) 208 storage browsers, the method in this support program does not contain unsolved quoting, and the data in this support program remain unchanged.
Random access memory 210 storages:
The second portion 215 of browser and support program 216,217 comprise and contain the data that change in unsolved application program of quoting and the implementation;
Html document storehouse 220 comprises one or more html documents 222, and these documents answer the user to ask to be obtained by browser by user interface 204;
Class file storehouse 224 comprises one or more class files or applet 226; And
One or more data files 228, client computer may be used these data files in it is handled.
But Fig. 3 is the synoptic chart of order that produces the used step of executable module of prestrain.Be noted that method and system described herein is fit to prestrain browser and other support program.Yet method and system described herein is not limited to specific java application herein.The all available method and system prestrain described herein of method collection that any java application or other working time connect.
Each source code 126 that comprises the class of java application is compiled into class file 130 by compiler 122.Class file comprises the class data structure of representing class, bytecode, constant data and other information of each method.The class file more detailed description is seen below.Another kind method is that the class file corresponding with application program can reside in one or more class libraries 131.In case class file can use, composition will just be transmitted to off-line type Classloader 132 by a whole set of class file 128 of the application program of prestrain.
The effect of off-line type Classloader 132 is to determine which method and the variable relevant with each class can deposit ROM (read-only memory) in, and which must deposit random access memory in.Call the Java interface or use the method for non-static instance variable to reside in the random access memory.This is because realizing the bytecode of interface is to determine working time, and non-static instance variable changes for the instantiation of each associated class.Off-line type Classloader 132 finds these methods and variable, and inserts a special indicator mark and go out them and will be loaded into random access memory.The off-line type Classloader also carries out a series of optimization, to produce compacter executable code.For example, the constant pool relevant with each class is combined for all classes that resides in the application program and uses.In addition, the processing that the off-line type Classloader also adds will be so that will be that the class file of dynamic load structure changes the class environment use for prestrain into originally.
The output 302 of off-line type Classloader is made up of two files: one is the constant pool file that comprises the constant data of whole application program; Another is the class file that upgrades, and comprises class data structure and class members.The form of the data in these two files is data definition, and wherein the side-play amount of a bytecode and an instruction memory position is specified in each definition.The class file that upgrades comprises the storer indicator, and it indicates specific one group and saves the storer which kind of type sign indicating number deposits in surely.Yet method and system described herein is not limited to produce this two files.Also can adopt other file structure, include but not limited to a file that comprises all associated class data.
Then, this document sends assembler 134 to, and it produces an object module, and this module has connector data map is arrived the required form in appropriate address space.Two address spaces are preferably arranged, give random access memory for one, another gives ROM (read-only memory).Then object module sends connector 136 to, and it generates memory layout for the class in the application program.In case determined memory layout, connector 136 will solve all symbolic references, and replace them with first level address.This memory layout is divided into two address spaces.The method and the data that are marked as ROM (read-only memory) are included in first address space, are marked as the method and the data that need deposit random access memory in and are included in second address space.But the output of connector 136 is executable modules 306 of a prestrain, comprises the method and the data of these two address spaces.
As mentioned above, the major function of off-line type Classloader is to determine which method and data will be deposited in ROM (read-only memory) and which will be deposited in random access memory.In addition, the constant pool best incorporated of the class of all prestrains is got up, and reduces to minimum with the amount of the ROM (read-only memory) that will use.For in conjunction with constant pool, carried out some and optimized to reduce the use amount of storer.More particularly, deleted the expression formula that repeats, replaced by the pointer of corresponding substring position in the long character string as the character string of growing a character string part.
The general constant pool that comprises all classes is divided into two sections, and first section across 256 bytes, and second section across the 64K-256 byte.First section can comprise maximum 256 constants, and second section comprises remaining constant.The ordering of constant pool makes the most normal constant of quoting deposit first section of pond in, and the constant of the most seldom quoting deposits second section in.In case constant pool is combined, the bytecode of quoting constant may need correct.Constant in first section is quoted with 8 positional operands, and the constant in second section is quoted (see Fig. 7, wherein operand 702 is one 8 positional operands, and operand 704 and 706 has been formed one 16 positional operand jointly) with two 8 positional operands.Be extended to 16 positional operands from 8 positional operands, need adjust the bytecode of the constant in second section of the quoting general constant pool, consider the relative position that bytecode changes in these methods simultaneously, the bytecode side-play amount in the method for adjustment (as in branch instruction).In addition, the change of bytecode requires to update stored in the side-play amount in the exception table, with the change of bytecode starting and ending position in the reflection method, specifies different exception handlers in view of the above.
And then the off-line type Classloader is carried out two conversion in addition, so that class formation is suitable for the prestrain class.Produce a static class initializer, it carries out the class initialization to the class of prestrain.Adopt the bytecode of non-quick order format with the symbolic reference method, recompile is that quick order format is directly to quote this method.
Fig. 8 has more specifically described the step that off-line type Classloader 132 is adopted.The off-line type Classloader receives a class file when initial, and each class wherein all is the part of application program, and the class of this application program will be by prestrain.Fig. 4 illustrates the form of this class file.Such file comprises 402, constant pool 404 of one or more header record (header record), one or more method 406 and an exception table 408.Header record 402 can indicate the size of constant pool, the number of method and the size of exception table.Constant pool 404 comprises the data that remain unchanged in the application program implementation.The example of this data can comprise character string constant, static final integer (final integers), to the quoting of method, to quoting of class and quoting of docking port.Method data 406 are made up of the byte code stream of realizing each method, and each in the exception table provides the side-play amount of bytecode starting and ending side-play amount, Exception Type and exception handler.This indicates when type unusual occurring indicating in the code that the starting and ending side-play amount indicates, and this abnormity processing program can find at the side-play amount place of given handling procedure.
Each class file is all read in (step 802) by the off-line type Classloader, and sets up suitable class data structure (804) for each class, and such data structure deposits the storer of the computing machine that is used for the pre-service application program in.Fig. 6 illustrates class data structure 600.Each class all have a class piece 602, one or more method piece 604, each method bytecode 608, one or more field piece 614, be used for each mask data district 618, constant pool 624, mapping table 626 and the exception table 628 of each field.
The class piece is the data structure of a fixed length, can comprise column data down:
Class name 630;
Pointer 632 points to the class piece of the nearest superclass (immediate superclass) of current class;
The array 634 of one or more pointers, each pointer are quoted a method piece;
The array 636 of one or more pointers, each pointer are quoted a field piece;
The pointer 638 of the constant pool of sense(-)class;
The pointer 640 of the exception table of sense(-)class.
Method piece 604 is data structures of a fixed length, comprises the method that ascertains the number.Distribute one or more method pieces to comprise all methods of class.Method piece 604 comprises method name 612 and points to the pointer 610 of respective byte sign indicating number 608.
Field piece 614 is data structures of a fixed length, comprises instance variable or field.Java provides different field block formats for two kinds of dissimilar variablees.First kind of form 616 is used for integer or floating type instance variable.This form 616 comprises instance variable name, type (as integer or floating type) and value thereof.Second kind of form 620 is used for double or elongated instance variable.This form 620 comprises instance variable name, type (as double or elongated) and points to the pointer of instance variable value 618 positions.
Fig. 9 explanation is used to set up the step of class data structure.Information in the header record is used for to each class data structure allocation space (step 1002).In case the class data structure is assigned with, each the pointer that points in these locations of structures just is included in the class piece (step 1004).
Then, the off-line type Classloader reads in constant pool.Before these steps are discussed, the content of constant pool is described at first.Fig. 5 explanation is stored in the structure of the constant pool in each class file.First comprises class name and superclass name (502).These names are stored as character string constant, and first comprises the pointer that points to these character string positions in the constant pool.Second belongs to field and instance variable.Head 504 is used to refer to the number of field in the constant pool.The head back is each field 506.
Similarly, the character string constant front is a head 508, the number of character string constant in this head indication constant pool.What follow is each character string constant 510.Character string constant is used for method for expressing name, class name and interface name.The back, the method in the constant pool of being stored in is a head before quoting, the quantity 512 of this head indicating means.In the constant pool each method is all had method pointer 511, this method pointer comprises the pointer 514 of pointing method name and the pointer 516 of pointing method class name.These names are stored in the constant pool with character string constant.Method pointer 511 is used for method of symbolic reference.This is used in the non-quick form of call method instruction.
A method can comprise an instruction of calling a method.This instruction can be expressed as follows with non-quick form:
Call method " class ". " method " (1) " class " here refers to comprise the character string constant of class name, and " method " refers to comprise the character string constant of method name.The call method instruction comprises the pointer of a pointing method pointer 511.The off-line type Classloader solves symbolic reference by the pointer that adds the pointing method piece to the method name.In case connector has been determined the memory layout of each class, connector replaces the non-quick form of call method instruction with the quick form of the direct quoting method address of storage means (promptly by).By solving symbolic reference, this method can be by prestrain.
Refer back to Fig. 9, for mapping table 626 has distributed storer, this mapping table will be followed the tracks of constant moving from original position to different temporary positions in the class file constant pool, be deposited in general constant pool up to constant.Set up mapping table 626 for each class, the initial address of each constant in the constant pool is mapped to its current address (step 1006).All data in the constant pool except that field all read and deposit in constant pool (step 1008) from class file.Along with constant is transferred to from class file in the constant pool, mapping table 626 will upgrade, with initial address and current address (step 1008) in the reflection constant pool.Yet the field that reads from constant pool is loaded into one or more field pieces, does not create (step 1008) for them in mapping table.
The method data read from class file, and deposit one or more method pieces in.Annex memory is distributed to the bytecode relevant with each method.The pointer of method name and sensing bytecode position is put into method piece (step 1010) together.Similarly, exception table also is loaded into from class file in the corresponding exception table data structure (step 1012).
Refer back to Fig. 8, after the class data structure is set up, distributed a hash table (hash table) 180 (see figure 3)s according to the total length of all constant pool, constant (step 805) will be repeated with its deletion in the back.
Then, the off-line type Classloader begins deletion repetition constant.The purpose of doing like this is that the constant pool with all classes is combined into a kind of form of effectively utilizing the space.For each class file (step 806), each in the scanning class constant pool is searched repetition constant (step 812).With reference to Figure 10, adopt hash table to detect and repeat constant.The hashed value of constant is determined (step 1102) by a suitable hash function (hashing function).Check to determine whether this hashed value is included in (step 1104) in the hash table.If there is this hashed value in the hash table, then this constant is repetition, so by changing constant item in the mapping table to reflect the memory location of existing constant, come deletion this (step 1106) from constant pool.Otherwise the hashed value of this constant and memory location deposit hash table (step 1108) in.
Refer back to Fig. 8, the off-line type Classloader begins to determine public substring (commonsubstrings).Public substring is to be included in wherein character string as a part that has been stored in a long character string in the constant pool.For each class file (step 814), scan each character string to determine that whether it is the part (step 816) of certain long character string of comprising in the constant pool.This can adopt one of several famous string matching algorithms to finish.When finding such substring, it replaces (step 818) with regard to the pointer of substring position in the directed big character string.
Then the off-line type Classloader begins to scan the bytecode (step 820-824) that is included in all methods in each class file.With reference to Figure 11, in bytecode, search calling interface instruction (step 1202).Method with calling interface instruction all is labeled as the RAM storer, because had only just can finish (step 1204) working time by the method for this instruction calls.Otherwise, in syllabified code, search call method instruction (step 1206).In this case, the method name in being stored in constant pool adds pointer 511 (see figure 5)s of a pointing method piece, and this method piece comprises the invoked method (step 1208) of wanting.The memory layout that connector has been determined all classes is worked as in the back, and connector is with the symbolic reference of the first level address substitution technique of method.This is to determine that by the method name pointer of following the tracks of the pointing method piece this method piece comprises the pointer that points to this method.
Because each bytecode all is scanned, each is produced a reference count (step 828) by the variable of bytecode access.Reference count is included in the added field in the mapping table.This will be used in the back determining the most frequently used constant, thereby constant pool will be resequenced.In addition, scan each bytecode to search the field that is changed by bytecode.This can determine by checking whether this field was once used at the left end of an assignment statement.In this case, field is accepted a new value.If reformed field deposits its value in the field piece, so whole field piece all is labeled as RAM storer (step 830).
In case distributed the space for general constant pool, all integrated with in the general constant pool (step 902) from the item of inhomogeneity constant pool.As previously mentioned, constant pool is divided into two sections.First section can be held 256 constants of quoting the most normal at most.Second section is held remaining constant.The constant that never is cited is deleted, and is not stored in the general constant pool.Because mapping table has reference count, have deleted duplicate keys, and have the pointer that points to public substring, so the constant pool item reads from the mapping table of each class.
In case formed general constant pool, the bytecode of the constant of reference stores in second section of general constant pool needs a two length offset value, and it has occupied two bytes rather than one and has quoted this constant.This requires the method (step 906-908) of each bytecode of scanning to search each class, and, replace the byte side-play amount with this constant (step 910) of addressing with a double byte side-play amount for the bytecode of a constant in second section of each quoting general constant pool.This can be by distributing another data field to realize for storing this bytecode.Along with bytecode is scanned, they are read into the new data district and any requirement is substituted in this copy procedure with the byte side-play amount that the double byte side-play amount replaces.The method piece is updated with the new memory location of reflection bytecode then.The side-play amount operand of the bytecode of expression branch instruction is adjusted according to the byte number (if there is) that position between branch's bytecode and branch target bytecode adds.
Similarly, if any method in the class file is quoted the constant in second section of the constant pool, the exception table of each class file all needs to adjust.Controlled instruction of quoting constant will take more space than in the past in second section of the constant pool, therefore had influence on the side-play amount in the exception table.The corrected initial and end skew of the plug-in effect of the two length constant pool side-play amounts of quilt is put and (step 916-918) in the exception table will be calculated and deposit in to the side-play amount of handling procedure all.
Then, produce the initialized new method of a kind of processing static class.Generally, after a class is dynamically loaded, move a class initializer simultaneously and come initialization some variable relevant etc. with such.Because these classes are pre-loaded in the method and system described here, so will not carry out the class initialization.Therefore, the off-line type Classloader need be created a method, and this method will be carried out the class initialization to the class of prestrain.Yet,, carry out data-flow analysis (step 920-924) earlier in order to determine the execution sequence of each class initializer.Because a class may be used initialized data in another class, so this is important in proper order.If do not keep correct order, the static class initializer will produce wrong result.In case determined order, will produce a new method, this method will be carried out initialization (step 926) by the order of prestrain to each class according to class.
In the class block structure, insert link indicator (linkage indicator) then and will be deposited in random access memory to indicate which method and field piece.Connector utilizes these information to generate an address space that separates for the method that will be deposited in random access memory with the field piece.Connector can be thought does not have indicator to mean that method and field will be deposited in ROM (read-only memory).Another kind of possible selection is that an additional indicator can be used to explicitly and indicates those methods that will be deposited in ROM (read-only memory), class data structure and field (step 928).
At last, the off-line type Classloader is exported the class file that general constant pool, comprise the renewal of the indicator that class data structure and indicative of memory require, and a special boot time starter (boot time initiator) (step 930).
With reference to Figure 12, but the executable module of prestrain and boot time starter 1220 permanently are stored in the ROM (read-only memory) of client computer.Client computer powers on or when restarting, all will automatically perform the boot time starter each time.In other task, the boot time starter must reside in method and data in the random access memory in the process of implementation with those, copies in the random access memory by connector program appointed positions.
Describe though aforementioned system and method are used for visiting html document according to execution Java browser and support program on Internet, method and system described herein can be applicable to any java application.And java application needn't run in the distributed environment, and it can run on client computer or the server computer with stand-alone mode (stand-alone mode), and not from the new class of external system input.In stand-alone mode, application program is that the memory limitations that satisfies the specific calculations environment is divided into two address spaces.
Though method and system described herein is described with reference to the Java programming language, it also can be used for other computer system that adopts OO class, and these classes use the dynamic operation time to load.
And then said method and system can carry out polytype the execution on the medium, and are not limited only to the memory device as random access memory.Also can adopt the media carried out of other type, computer-readable recording medium for example, it can be any memory devices, CD and flexible plastic disc, but also is not limited to this.
The present invention is clearly defined by the protection domain of whole equivalences of appended claim.

Claims (16)

1, the method for a kind of operational computations machine system, this computer system comprises Classloader, is used for class with method and is loaded into computer system and carries out, this method comprises:
Data in the access ROM device and instruction, in this ROM device, store software module, this module comprises the prestrain module, this prestrain module comprises data and at least one method, this method comprises a plurality of instructions, but the subclass of this instruction comprises the symbolic reference to the computing machine access method; Wherein this prestrain module is divided into first submodule and second submodule, each submodule comprises a plurality of instruction and datas, this second submodule has subset of instructions and data subset, this subset of instructions and data subset comprise instruction and data, and these data can be modified in the process of carrying out these a plurality of instructions;
When this computer system of initialization, store this second submodule into readable writing in the random access memory device;
Never call this Classloader and carry out this prestrain module, comprise the instruction of carrying out in this first and second submodule and carry out the instruction of revising the data in this second submodule; And
Call this Classloader, so that before carrying out other software modules, load these other software modules.
2, the method for claim 1, wherein
The step of described execution prestrain module comprises input information content-data and computer-executable modules, and data that this is transfused to and computer-executable modules are stored in readable writing in the random access memory device; And
This Classloader invocation step comprises calls Classloader, so that load this computer-executable modules by this execution in step input.
3, method as claimed in claim 2, wherein this prestrain module is a browser module.
4, a kind of computer-controlled device comprises:
ROM device, wherein store software module, wherein this software module is the prestrain module, this prestrain module is divided into first submodule and second submodule, each submodule comprises a plurality of instruction and datas, this second submodule has subset of instructions and data subset, and this subset of instructions and data subset comprise instruction and data, and these data can be modified in the process of carrying out these a plurality of instructions;
The readable random access memory device of writing, this second submodule is stored in wherein when this computer system of initialization;
Data processor is used to carry out this software module, so that input information content-data and computer-executable modules and the data that will import and computer-executable modules store this readable writing in the random access memory device into from other devices; And
Classloader is used for class with method and is loaded into computer system and carries out, and wherein is stored in this prestrain module in this ROM device and waits for that this data processor carries out and handle without this Classloader.
5, computer-controlled device as claimed in claim 4, wherein
This prestrain module comprises the instruction that is used for input information content-data and computer-executable modules, and data that this is transfused to and computer-executable modules are stored in readable writing in the random access memory device; And
This Classloader is carried in this data processor and carries out the computer-executable modules of importing in the process of this prestrain module.
6, computer-controlled device as claimed in claim 5, wherein this prestrain module is a browser module.
7, a kind of method of operational computations machine, this method may further comprise the steps:
The a plurality of classes of storage in storer, these a plurality of classes will be included in the executable module, at least one class in these a plurality of classes comprises data and at least one method, and this method comprises a plurality of instructions, but the subclass of this instruction comprises the symbolic reference to the computing machine access method;
To each class, when such data can be revised by such method, such data are set up mark;
Its instruction in these a plurality of classes comprised each method of the symbolic reference that is not stored in the method in this storer is set up mark; And
This executable module is provided, this executable module comprises each class in these a plurality of classes, wherein when carrying out this executable module, each method of not setting up mark is pre-loaded in the read-only storage medium with each data of not setting up mark, and each method of setting up mark will be stored in readable writing in the storage medium with each data of setting up mark.
8, method as claimed in claim 7, this method comprises:
To replace with each symbolic reference that is stored in the designation method in this storer and the position corresponding value of this appointed method in this read-only storage medium.
9, method as claimed in claim 7 wherein is pre-loaded to data that in this read-only storage medium this do not set up the method for mark and do not set up mark and is configured to when carrying out this executable module from this read-only storage medium by access.
10, method as claimed in claim 7, wherein this executable module is a browser module, is used for access and is stored in the object of this computing machine and is stored in object in other computing machines.
11, method as claimed in claim 10, wherein this browser module comprises and is used for input information content-data and computer-executable modules and is used for storing the data and the computer-executable modules of this input into the readable instruction of writing storage medium.
12, a kind of computer system comprises:
Storer is used for storing the class that will be included executable module, and such comprises data and at least one method, and this method comprises a plurality of instructions, but the subclass of this instruction comprises the symbolic reference to the computing machine access method;
The off-line type Classloader is used for when such data can be revised by such method such data being set up mark, and its instruction in such is comprised each method of the symbolic reference that is not stored in the method in this storer is set up mark: and
Connector, be used to produce executable module, this executable module has first and second portion, and this first comprises each method and the data of being set up mark by this off-line type Classloader, and this second portion comprises not each method and the data in this first.
13, computer system as claimed in claim 12, wherein this first of this executable module is configured to be stored in the readable writable media when carrying out this executable module, and this second portion is configured to be stored in the read-only storage medium when carrying out this executable module.
14, computer system as claimed in claim 13, wherein this off-line type Classloader will replace with the symbolic reference that is stored in the designation method in this storer and the position corresponding value of this appointed method in this read-only storage medium.
15, computer system as claimed in claim 13, wherein this executable module is a browser module, is used for access and is stored in the object of this computing machine and is stored in object in other computing machines.
16, computer system as claimed in claim 15, wherein this browser module comprises and is used for input information content-data and computer-executable modules and is used for storing the data and the computer-executable modules of this input into this readable instruction of writing storage medium.
CN97112905A 1996-05-30 1997-05-29 Method and system for loading classes in read-only memory Expired - Lifetime CN1114155C (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US655474 1996-05-30
US08/655,474 US5815718A (en) 1996-05-30 1996-05-30 Method and system for loading classes in read-only memory
US655,474 1996-05-30

Publications (2)

Publication Number Publication Date
CN1172303A CN1172303A (en) 1998-02-04
CN1114155C true CN1114155C (en) 2003-07-09

Family

ID=24629025

Family Applications (1)

Application Number Title Priority Date Filing Date
CN97112905A Expired - Lifetime CN1114155C (en) 1996-05-30 1997-05-29 Method and system for loading classes in read-only memory

Country Status (8)

Country Link
US (4) US5815718A (en)
EP (2) EP0810522B1 (en)
JP (1) JP4021520B2 (en)
KR (1) KR100450312B1 (en)
CN (1) CN1114155C (en)
DE (2) DE69707752T2 (en)
SG (1) SG76513A1 (en)
TW (1) TW363167B (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104583948A (en) * 2012-08-30 2015-04-29 微软公司 Layout and execution of operating systems using BPRAM
US9952879B2 (en) 2012-08-30 2018-04-24 Microsoft Technology Licensing, Llc Application pre-layout in byte-addressable persistent random access memory

Families Citing this family (154)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5815718A (en) * 1996-05-30 1998-09-29 Sun Microsystems, Inc. Method and system for loading classes in read-only memory
US6473768B1 (en) * 1996-11-12 2002-10-29 Computer Associates Think, Inc. System and method for modifying an executing application
US6003038A (en) * 1997-03-31 1999-12-14 Sun Microsystems, Inc. Object-oriented processor architecture and operating method
US5974428A (en) * 1997-08-29 1999-10-26 International Business Machines Corporation Method and apparatus for class version naming and mapping
US5966702A (en) * 1997-10-31 1999-10-12 Sun Microsystems, Inc. Method and apparatus for pre-processing and packaging class files
US6026237A (en) * 1997-11-03 2000-02-15 International Business Machines Corporation System and method for dynamic modification of class files
US5953526A (en) * 1997-11-10 1999-09-14 Internatinal Business Machines Corp. Object oriented programming system with displayable natural language documentation through dual translation of program source code
US5995975A (en) * 1997-11-25 1999-11-30 International Business Machines Corporation Dictionary based process for object containment
US6272673B1 (en) * 1997-11-25 2001-08-07 Alphablox Corporation Mechanism for automatically establishing connections between executable components of a hypertext-based application
US6349344B1 (en) * 1997-12-16 2002-02-19 Microsoft Corporation Combining multiple java class files into a run-time image
DE19810675A1 (en) * 1998-03-12 1999-10-14 Giesecke & Devrient Gmbh Disk
US6493870B1 (en) * 1998-03-20 2002-12-10 Sun Microsystems, Inc. Methods and apparatus for packaging a program for remote execution
US6199196B1 (en) * 1998-03-20 2001-03-06 Sun Microsystems, Inc. Methods and apparatus for linking a program for remote execution
US6658492B1 (en) * 1998-03-20 2003-12-02 Sun Microsystems, Inc. System and method for reducing the footprint of preloaded classes
US6792612B1 (en) * 1998-03-23 2004-09-14 International Business Machines Corporation Java runtime system with modified constant pool
US6061520A (en) * 1998-04-07 2000-05-09 Sun Microsystems, Inc. Method and system for performing static initialization
US7089331B1 (en) 1998-05-29 2006-08-08 Oracle International Corporation Method and mechanism for reducing client-side memory footprint of transmitted data
JP4026940B2 (en) * 1998-07-22 2007-12-26 松下電器産業株式会社 Program converter
US6374266B1 (en) * 1998-07-28 2002-04-16 Ralph Shnelvar Method and apparatus for storing information in a data processing system
US6430569B1 (en) 1998-08-14 2002-08-06 Sun Microsystems, Inc. Methods and apparatus for type safe, lazy, user-defined class loading
US8434099B2 (en) 1998-09-09 2013-04-30 Microsoft Corporation Efficient linking and loading for late binding and platform retargeting
US7143421B2 (en) * 1998-09-09 2006-11-28 Microsoft Corporation Highly componentized system architecture with a demand-loading namespace and programming model
US6446084B1 (en) 1998-09-22 2002-09-03 Sun Microsystems, Inc. Optimizing symbol table lookups in platform-independent virtual machines
US6631515B1 (en) 1998-09-24 2003-10-07 International Business Machines Corporation Method and apparatus to reduce code size and runtime in a Java environment
JP2000122876A (en) * 1998-10-16 2000-04-28 Matsushita Electric Ind Co Ltd Information processor
GB2343021A (en) * 1998-10-19 2000-04-26 Ibm Class loading model for object oriented programming
JP2000148503A (en) * 1998-11-10 2000-05-30 Mitsubishi Electric Corp Dynamic module constituting system and its method and device
GB9825102D0 (en) 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
CA2255042C (en) * 1998-11-30 2004-04-13 Leonard W. Theivendra Class loader
US6305012B1 (en) * 1998-12-03 2001-10-16 International Business Machines Corporation Method and apparatus for dynamic selection of instructions for compiling using tags
US6530075B1 (en) * 1998-12-03 2003-03-04 International Business Machines Corporation JIT/compiler Java language extensions to enable field performance and serviceability
US6338160B1 (en) * 1998-12-08 2002-01-08 Nazomi Communications, Inc. Constant pool reference resolution method
US6624761B2 (en) 1998-12-11 2003-09-23 Realtime Data, Llc Content independent data compression method and system
US6848111B1 (en) * 1999-02-02 2005-01-25 Sun Microsystems, Inc. Zero overhead exception handling
US6637023B1 (en) * 1999-03-03 2003-10-21 Microsoft Corporation Method and system for updating read-only software modules
US7195661B2 (en) * 1999-03-05 2007-03-27 Pioneer Metals And Technology, Inc. Magnetic material
US6601104B1 (en) 1999-03-11 2003-07-29 Realtime Data Llc System and methods for accelerated data storage and retrieval
CA2267539C (en) * 1999-03-30 2004-04-13 Object Technology International Inc. Access to resource files stored in rom
US6845498B1 (en) * 1999-05-11 2005-01-18 Microsoft Corporation Method and apparatus for sharing data files among run time environment applets in an integrated circuit card
US6601114B1 (en) * 1999-05-27 2003-07-29 Sun Microsystems, Inc. Fully lazy linking with module-by-module verification
US6763397B1 (en) 1999-05-27 2004-07-13 Sun Microsystems, Inc. Fully lazy linking
US6618769B1 (en) * 1999-05-27 2003-09-09 Sun Microsystems, Inc. Module-by-module verification
US6766521B1 (en) 1999-05-27 2004-07-20 Sun Microsystems, Inc. Dataflow algorithm for symbolic computation of lowest upper bound type
JP3531536B2 (en) * 1999-05-28 2004-05-31 日本電気株式会社 Dynamic Assignment of Type Information in Data Structure Definition Using Abstract Syntax Notation
US6968549B1 (en) * 1999-07-02 2005-11-22 Beryl Technical Assays Llc Method and system for dynamically loading data structures into memory with global constant pool
US7150005B2 (en) * 1999-07-02 2006-12-12 Beryl Technical Assays, Llc Method and system for global constant management for memory
US6460136B1 (en) * 1999-07-12 2002-10-01 Hewlett-Packard Co., Method and apparatus for loading an operating system kernel from a shared disk memory
US6874145B1 (en) 1999-07-13 2005-03-29 Sun Microsystems, Inc. Methods and apparatus for implementing an application lifecycle design for applications
US6701334B1 (en) * 1999-07-13 2004-03-02 Sun Microsystems, Inc. Methods and apparatus for implementing individual class loaders
US7257812B1 (en) 1999-12-16 2007-08-14 Sun Microsystems, Inc. Methods and apparatus for managing an application
US6584612B1 (en) * 1999-07-15 2003-06-24 International Business Machines Corporation Transparent loading of resources from read-only memory for an application program
GB9921720D0 (en) * 1999-09-14 1999-11-17 Tao Group Ltd Loading object-oriented computer programs
US7076788B1 (en) * 1999-11-01 2006-07-11 Nokia Networks Oy Method for describing software architecture
US20010042241A1 (en) * 2000-01-21 2001-11-15 Fujitsu Limited Apparatus and method for executing program using just-in time-compiler system
US7240341B2 (en) * 2000-02-07 2007-07-03 Esmertec Ag Global constant pool to allow deletion of constant pool entries
DE60142136D1 (en) * 2000-02-21 2010-07-01 Panasonic Corp Linking Java class files for embedded devices
US6813762B1 (en) * 2000-02-22 2004-11-02 Freescale Semiconductor, Inc. Method for processing program files in a programming language capable of dynamic loading
US7389284B1 (en) 2000-02-29 2008-06-17 Oracle International Corporation Method and mechanism for efficient processing of remote-mapped queries
US6865730B1 (en) * 2000-03-08 2005-03-08 International Business Machines Corporation Interprocedural analysis and optimization of an object oriented program in the presence of dynamic class loading
US6745386B1 (en) * 2000-03-09 2004-06-01 Sun Microsystems, Inc. System and method for preloading classes in a data processing device that does not have a virtual memory manager
JP2001256058A (en) * 2000-03-13 2001-09-21 Omron Corp Executing method of program by interpreter language and information processor using the same method
JP2003528390A (en) * 2000-03-20 2003-09-24 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ Method of executing a computer program by an interpreter, computer system and computer program product
US20020087958A1 (en) * 2000-04-20 2002-07-04 International Business Machines Corporation Method and apparatus of transforming a class
US6675375B1 (en) * 2000-04-28 2004-01-06 Sun Microsystems, Inc. Method and apparatus for optimized multiprocessing in a safe language
AU2001267653A1 (en) * 2000-06-15 2001-12-24 Canal + Technologies Method for managing classes for an object-oriented programming language with dynamic resolution and tool for generating native structures from java binaries implementing said method
US6918106B1 (en) * 2000-07-31 2005-07-12 Sun Microsystems, Inc. Method and apparatus for collocating dynamically loaded program files
WO2002017553A2 (en) * 2000-08-18 2002-02-28 United States Postal Service Apparatus and methods for the secure transfer of electronic data
WO2002017262A2 (en) 2000-08-21 2002-02-28 United States Postal Services Delivery point validation system
JP2002091762A (en) * 2000-09-14 2002-03-29 Denso Corp Program generator
US8692695B2 (en) 2000-10-03 2014-04-08 Realtime Data, Llc Methods for encoding and decoding data
US9143546B2 (en) 2000-10-03 2015-09-22 Realtime Data Llc System and method for data feed acceleration and encryption
US6968540B2 (en) * 2000-10-25 2005-11-22 Opnet Technologies Inc. Software instrumentation method and apparatus
US6996813B1 (en) 2000-10-31 2006-02-07 Sun Microsystems, Inc. Frameworks for loading and execution of object-based programs
US6901591B1 (en) * 2000-10-31 2005-05-31 Sun Microsystems, Inc. Frameworks for invoking methods in virtual machines
US6978456B1 (en) * 2000-10-31 2005-12-20 Sun Microsystems, Inc. Methods and apparatus for numeric constant value inlining in virtual machines
EP1207454A1 (en) * 2000-11-15 2002-05-22 International Business Machines Corporation Java run-time system with modified linking identifiers
AU2002241507A1 (en) * 2000-11-20 2002-06-24 Zucotto Wireless, Inc. System registers for an object-oriented processor
US7107537B2 (en) * 2001-01-16 2006-09-12 Hewlett-Packard Development Company, L.P. Apparatus and method for updating applications to embedded devices and peripherals within a network environment
US7386046B2 (en) 2001-02-13 2008-06-10 Realtime Data Llc Bandwidth sensitive data compression and decompression
US20020170047A1 (en) * 2001-02-23 2002-11-14 Brian Swetland System and method for transforming object code
WO2002069138A2 (en) * 2001-02-23 2002-09-06 Danger, Inc. System and method for transforming object code
US7080373B2 (en) * 2001-03-07 2006-07-18 Freescale Semiconductor, Inc. Method and device for creating and using pre-internalized program files
US7096466B2 (en) * 2001-03-26 2006-08-22 Sun Microsystems, Inc. Loading attribute for partial loading of class files into virtual machines
US7020874B2 (en) * 2001-03-26 2006-03-28 Sun Microsystems, Inc. Techniques for loading class files into virtual machines
US7543288B2 (en) * 2001-03-27 2009-06-02 Sun Microsystems, Inc. Reduced instruction set for Java virtual machines
US6957428B2 (en) * 2001-03-27 2005-10-18 Sun Microsystems, Inc. Enhanced virtual machine instructions
MXPA03010975A (en) * 2001-05-30 2004-03-26 Research In Motion Ltd A mobile communications device application processing system.
US6748396B2 (en) 2001-06-01 2004-06-08 International Business Machines Corporation Independent class loader for dynamic class loading
US6901589B2 (en) * 2001-06-25 2005-05-31 Wind River Systems, Inc. System and method for determining a root cause of a failure
US7076695B2 (en) * 2001-07-20 2006-07-11 Opnet Technologies, Inc. System and methods for adaptive threshold determination for performance metrics
US7103590B1 (en) * 2001-08-24 2006-09-05 Oracle International Corporation Method and system for pipelined database table functions
US6988261B2 (en) 2001-08-24 2006-01-17 Sun Microsystems, Inc. Frameworks for generation of Java macro instructions in Java computing environments
US7058934B2 (en) * 2001-08-24 2006-06-06 Sun Microsystems, Inc. Frameworks for generation of Java macro instructions for instantiating Java objects
US7039904B2 (en) 2001-08-24 2006-05-02 Sun Microsystems, Inc. Frameworks for generation of Java macro instructions for storing values into local variables
US7228533B2 (en) * 2001-08-24 2007-06-05 Sun Microsystems, Inc. Frameworks for generation of Java macro instructions for performing programming loops
US7219034B2 (en) 2001-09-13 2007-05-15 Opnet Technologies, Inc. System and methods for display of time-series data distribution
US7213240B2 (en) * 2001-10-05 2007-05-01 Sun Microsystems, Inc. Platform-independent selective ahead-of-time compilation
US6976254B2 (en) 2001-11-28 2005-12-13 Esmertec Ag Inter-method control transfer for execution engines with memory constraints
EP1324221A3 (en) * 2001-12-21 2003-12-03 Sap Ag Storing data objects either in database or in archive
US7114152B2 (en) * 2002-01-08 2006-09-26 International Business Machines Corporation Method, apparatus, and program to determine the mutability of an object at loading time
US7664731B2 (en) * 2002-03-21 2010-02-16 United States Postal Service Method and system for storing and retrieving data using hash-accessed multiple data stores
US7587408B2 (en) * 2002-03-21 2009-09-08 United States Postal Service Method and system for storing and retrieving data using hash-accessed multiple data stores
US7272827B2 (en) * 2002-04-03 2007-09-18 International Business Machines Corporation Statically detecting externally referenced interfaces of a program
US6973457B1 (en) 2002-05-10 2005-12-06 Oracle International Corporation Method and system for scrollable cursors
US7610351B1 (en) 2002-05-10 2009-10-27 Oracle International Corporation Method and mechanism for pipelined prefetching
US7246347B1 (en) * 2002-06-26 2007-07-17 Sun Microsystems, Inc Method and apparatus for loading class files into non-volatile memory
US7159119B2 (en) * 2002-09-06 2007-01-02 United States Postal Service Method and system for efficiently retrieving secured data by securely pre-processing provided access information
AU2003245447B2 (en) * 2002-09-06 2009-08-27 United States Postal Service Method and system for efficiently retrieving secured data by securely pre-processing provided access information
US7051323B2 (en) * 2002-10-08 2006-05-23 Sun Microsystems, Inc. Method and apparatus for initializing romized system classes at virtual machine build time
US7093243B2 (en) * 2002-10-09 2006-08-15 International Business Machines Corporation Software mechanism for efficient compiling and loading of java server pages (JSPs)
US7055145B2 (en) * 2002-10-30 2006-05-30 Intel Corporation Dynamic management of execute in place applications
US20040123270A1 (en) * 2002-12-23 2004-06-24 Motorola, Inc. Method and apparatus for shared libraries on mobile devices
KR100493893B1 (en) * 2003-02-07 2005-06-10 삼성전자주식회사 System and method of shortening class loading process in java program
US7073171B2 (en) * 2003-02-28 2006-07-04 Bea Systems, Inc. EJB implementation class loading with removed dependencies with ability to replace EJB implementation class without full redeployment
DE10310290A1 (en) * 2003-03-10 2004-09-23 Robert Bosch Gmbh computing device
US7143398B2 (en) * 2003-03-13 2006-11-28 Che-An Chang Application infa operating system
US7328432B2 (en) * 2003-06-02 2008-02-05 Sun Microsystems, Inc. Proximity-based addressing for supporting in-place execution in virtual machines
US7411956B2 (en) * 2003-06-05 2008-08-12 International Business Machines Corporation Methods and apparatus for routing packets
US7248895B2 (en) 2003-06-12 2007-07-24 Nokia Corporation Controlling settings for mobile telecommunications apparatus
FR2862395B1 (en) * 2003-11-14 2006-12-15 Trusted Logic METHOD FOR IMPROVING THE EFFICIENCY AND MEMORY CONSUMPTION OF A COMPUTER SYSTEM
US20050261857A1 (en) * 2004-05-21 2005-11-24 Clark Jones System and method for linking and loading compiled pattern data
US8489551B2 (en) * 2004-05-21 2013-07-16 Ca, Inc. Method for selecting a processor for query execution
US7574705B2 (en) * 2004-06-29 2009-08-11 Sun Microsystems, Inc. Method and apparatus for efficiently resolving symbolic references in a virtual machine
KR100597413B1 (en) * 2004-09-24 2006-07-05 삼성전자주식회사 Method for translating Java bytecode and Java interpreter using the same
US20060075394A1 (en) * 2004-10-01 2006-04-06 Tatsuya Iwamoto Dynamic loading and unloading for processing unit
US7444629B2 (en) * 2004-11-12 2008-10-28 International Business Machines Corporation Autonomic self-healing of java resources
US20060123397A1 (en) * 2004-12-08 2006-06-08 Mcguire James B Apparatus and method for optimization of virtual machine operation
US7801925B2 (en) 2004-12-22 2010-09-21 United States Postal Service System and method for electronically processing address information
FR2883390A1 (en) * 2005-03-15 2006-09-22 Gemplus Sa MANAGING MEMORY DATA STRUCTURE PLACEMENT BASED ON DEDICATED PROGRAMMING LANGUAGE
US8165909B2 (en) 2005-05-17 2012-04-24 The United States Postal Service System and method for automated management of an address database
US20060288336A1 (en) * 2005-06-21 2006-12-21 Microsoft Corporation Module initialization
US7698685B2 (en) * 2005-10-12 2010-04-13 Microsoft Corporation Discovery, qualification, and activation of software add-in components
US8042103B2 (en) * 2005-11-29 2011-10-18 International Business Machines Corporation Pre-translated files used in a virtual machine
US20070169028A1 (en) * 2005-12-15 2007-07-19 Glenn Kasten Partitioning of non-volatile memories for vectorization
US7873952B2 (en) * 2006-03-09 2011-01-18 Oracle America, Inc. Code transformation to optimize fragments that implement constant loading
US8250559B2 (en) * 2006-04-12 2012-08-21 Oracle America, Inc. Supporting per-program classpaths with class sharing in a multi-tasking virtual machine
US7882198B2 (en) 2007-07-02 2011-02-01 Oracle America, Inc. Shared JAVA JAR files
US20090070752A1 (en) * 2007-09-06 2009-03-12 International Business Machines Corporation Method and system for optimization of an application
US8600915B2 (en) 2011-12-19 2013-12-03 Go Daddy Operating Company, LLC Systems for monitoring computer resources
US8719196B2 (en) 2011-12-19 2014-05-06 Go Daddy Operating Company, LLC Methods for monitoring computer resources using a first and second matrix, and a feature relationship tree
US9507613B2 (en) * 2012-03-30 2016-11-29 Oracle International Corporation Methods and apparatus for dynamically preloading classes
US8910138B2 (en) * 2012-05-23 2014-12-09 Oracle International Corporation Hot pluggable extensions for access management system
US9383448B2 (en) 2012-07-05 2016-07-05 Deca System Co., Ltd. Golf GPS device with automatic hole recognition and playing hole selection
US8938796B2 (en) 2012-09-20 2015-01-20 Paul Case, SR. Case secure computer architecture
CN103473089A (en) * 2013-09-02 2013-12-25 深圳市华傲数据技术有限公司 Distributed JAVA program running method, device and system
US10127136B2 (en) 2015-09-24 2018-11-13 Oracle International Corporation Identifying and visualizing suboptimal memory layouts in software programs
US10489130B2 (en) * 2015-09-24 2019-11-26 Oracle International Corporation Configurable memory layouts for software programs
US10217254B2 (en) 2015-09-24 2019-02-26 Oracle International Corporation Graphical editing of memory layout rules for software programs
KR102484262B1 (en) 2016-03-14 2023-01-04 삼성전자주식회사 Computing system, driving method and compiling method thereof
US10394528B2 (en) * 2016-03-30 2019-08-27 Oracle International Corporation Returning a runtime type loaded from an archive in a module system
US10191753B2 (en) 2016-03-30 2019-01-29 Oracle International Corporation Generating verification metadata and verifying a runtime type based on verification metadata
CN112559073A (en) * 2020-12-16 2021-03-26 北京百度网讯科技有限公司 Program starting method, inter-class relation construction method and device and mobile terminal
US11809839B2 (en) 2022-01-18 2023-11-07 Robert Lyden Computer language and code for application development and electronic and optical communication
CN117234590B (en) * 2023-08-02 2024-03-29 北京握奇数据股份有限公司 Instruction set generation method, device, medium and equipment

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5051893A (en) * 1988-07-11 1991-09-24 Digital Equipment Corporation System for processing data to facilitate the creation of executable images
US5355489A (en) * 1989-08-25 1994-10-11 International Business Machines Corp. Bios load for a personal computer system having a removable processor card
DE69031936T2 (en) * 1989-11-17 1998-06-10 Digital Equipment Corp System and method for storing firmware in an address-independent format
GB2242293A (en) * 1990-01-05 1991-09-25 Apple Computer Apparatus and method for dynamic linking of computer software components
US5594903A (en) * 1991-02-26 1997-01-14 Lynx Real-Time Systems, Inc. Operating System architecture with reserved memory space resident program code identified in file system name space
FR2675602B1 (en) * 1991-04-16 1995-04-14 Hewlett Packard Co METHOD AND DEVICE FOR PROTECTING A COMPUTER SYSTEM.
US5369766A (en) * 1993-03-25 1994-11-29 Taligent, Inc. Object-oriented loader system with support for different load formats
US5450489A (en) * 1993-10-29 1995-09-12 Time Warner Entertainment Co., L.P. System and method for authenticating software carriers
US5574915A (en) * 1993-12-21 1996-11-12 Taligent Object-oriented booting framework
JPH07311752A (en) * 1994-05-11 1995-11-28 Internatl Business Mach Corp <Ibm> Decentralized data processing system and initial program loading method
US5613120A (en) * 1994-10-20 1997-03-18 Silicon Graphics, Inc. System and method for enabling, without recompilation, modification of class definitions and implementations in an object-oriented computer program
US5671413A (en) * 1994-10-31 1997-09-23 Intel Corporation Method and apparatus for providing basic input/output services in a computer
US5664128A (en) * 1995-02-23 1997-09-02 Apple Computer, Inc. Object storage apparatus for use with data sets in computer applications
JP3234850B2 (en) * 1995-03-20 2001-12-04 アルプス電気株式会社 Startup method of recording / reproducing device
US5815718A (en) * 1996-05-30 1998-09-29 Sun Microsystems, Inc. Method and system for loading classes in read-only memory

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104583948A (en) * 2012-08-30 2015-04-29 微软公司 Layout and execution of operating systems using BPRAM
US9740500B2 (en) 2012-08-30 2017-08-22 Microsoft Technology Licensing, Llc Layout system for operating systems using BPRAM
CN104583948B (en) * 2012-08-30 2017-12-22 微软技术许可有限责任公司 Operating system is laid out and performs using BPRAM
US9952879B2 (en) 2012-08-30 2018-04-24 Microsoft Technology Licensing, Llc Application pre-layout in byte-addressable persistent random access memory

Also Published As

Publication number Publication date
EP0810522A3 (en) 1998-04-15
EP1098247B1 (en) 2008-02-06
EP0810522A2 (en) 1997-12-03
EP0810522B1 (en) 2001-10-31
KR100450312B1 (en) 2004-12-09
DE69707752D1 (en) 2001-12-06
US5815718A (en) 1998-09-29
SG76513A1 (en) 2000-11-21
EP1098247A2 (en) 2001-05-09
JPH10198570A (en) 1998-07-31
CN1172303A (en) 1998-02-04
JP4021520B2 (en) 2007-12-12
KR970076313A (en) 1997-12-12
TW363167B (en) 1999-07-01
US5966542A (en) 1999-10-12
US7159213B2 (en) 2007-01-02
US6223346B1 (en) 2001-04-24
EP1098247A3 (en) 2004-11-03
DE69707752T2 (en) 2002-08-01
US20010047513A1 (en) 2001-11-29
DE69738504D1 (en) 2008-03-20

Similar Documents

Publication Publication Date Title
CN1114155C (en) Method and system for loading classes in read-only memory
CN1134731C (en) Technology of reducing cost of primary examination to dynamic kinds in compiled codes
CN101697131B (en) Method and device for dynamically loading relocatable file
EP3084596B1 (en) Executable code for constrained computing environments
US7543309B2 (en) Efficient linking and loading for late binding and platform retargeting
CN106663019B (en) Processing value types
US7565665B2 (en) Efficient linking and loading for late binding and platform retargeting
US7225439B2 (en) Combining write-barriers within an inner loop with fixed step
US8010953B2 (en) Method for compiling scalar code for a single instruction multiple data (SIMD) execution engine
US7316010B1 (en) Methods for sharing conditionally across class loaders dynamically compiled code
US7404182B1 (en) Deferring and combining write barriers for a garbage-collected heap
US8434099B2 (en) Efficient linking and loading for late binding and platform retargeting
US7143421B2 (en) Highly componentized system architecture with a demand-loading namespace and programming model
CN1159651C (en) Balanced access for data roll with dundant copies in data storage base
US8244775B1 (en) Using map objects to access object properties in a dynamic object-oriented programming language
US8341609B2 (en) Code generation in the presence of paged memory
CN1955922A (en) Method and system for dynamic providing local base and relativity thereof
US20050015758A1 (en) Shared code caching method and apparatus for program code conversion
CN1581069A (en) Renaming for register with multiple bit fields
CN1577268A (en) Shared library system and method of building the system
JP2010170585A (en) Method and apparatus for dispatch table construction
US7665075B1 (en) Methods for sharing of dynamically compiled code across class loaders by making the compiled code loader reentrant
US20090133042A1 (en) Efficient linking and loading for late binding and platform retargeting
Kistler Continuous program optimization
US20100241808A1 (en) Cache-line aware collection for runtime environments

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1033381

Country of ref document: HK

CX01 Expiry of patent term

Granted publication date: 20030709

CX01 Expiry of patent term