3 4
tion and appended claims when taken in conjunction with object of the appropriate object class be generated. The class
the drawings, in which: loader 116 loads in the appropriate object class and calls the
FIGS. 1A and IB are block diagrams of a distributed bytecode program verifier 112 to verify the integrity of all
computer system incorporating the present invention. the bytecode programs in the loaded object class. If all the
Uiij- fu**. i Ij 5 methods are successfully verified an object instance of the
FIG. 2 is a block diagram of a bootstrap class loader object class is generated; and the bytecode intexpreter 114 is
according to one embodiment of the present invention. in£ked tQ exe*ute the usef reques£d memod ^ ...
PIG. 3 is a block diagram of an application specific class requested by the user is not a bytecode program and if
loader according to one embodiment of the present inven- execution of the non-bytecode program is allowed (which is
tion. outside the scope of the present document), the program is
FIG. 4 is a block diagram of an object loaded by the executed by a compiled program executer (not shown),
application specific class loader of FIG. 3. The bootstrap class loader 116 is also invoked whenever
FIG. 5 is a flow chart of a method for loading the object a°. executing bytecode program encounters a call to an
class associated with an application program from a server meth^ for an <J»ect A* haS y5 ^
computer according to the present invention. 15 \oa**TM*. address .sfceK.°fe agam the class
, » . r - loader 116 loads in me appropriate object class and calls the
FIG. 6 is a flow chart of a method for translating an bytecode program verifier 112 to verify the integrity of all
unresolved symbolic reference by an interpreter according to the bytecode programs in the loaded object class. If all the
the present invention. methods in the loaded object class are successfully verified,
npsrRnmrw Hf Top Pptjfbprpti an ob->ect instance of the object class is generated, and the
DESCRIPTION OF TOE PREFERRED 20 b tecode interpreter U4 is invoked to execute the called
EMBODIMENTS object method.
Referring to FIG. 1, there is shown a distributed computer As will be explained in more detail below, the bootstrap
system 100 having many client computers 102 and at least class loader 116 is not used in the present invention to load
one remotely located information server computer 104. In object classes from remotely located computers, such as one
the preferred embodiment, each client computer 102 is 25 °f the sewers 104 shown in FIG. 1. Rather, an application
connected to the information servers 104 via the Internet specific class loader is generated by the bootstrap class
103. although other types of communication connections loader, and then that application specific class loader is used
could be used. While most client computers are desktop t0 load me remotely located object class,
computers, such as Sun workstations. IBM compatible com- The term "method" is used in this document synony
puters and Macintosh computers, virtually any type of 30 mously with the terms "program" and "application program"
computer can be a client computer. In the preferred to refer to a program that is in an object class,
embodiment, each client computer includes a CPU 105. a As shown "» mGS- 1A and 1B< *e bytecode program
communications interface 106. a user interface 107. and interpreter 114 includes a work array 130 in which a working
memory 108 Memory 108 stores- representation of all currently loaded and executing methods
an operating system 109;' 35 are temporarily stored.
T . The information server 104 includes a central processing
an Internet communications manager program 110: ,,- ,. , .
"5 1 *~ » unit ISO. primary memory 152 (i.e.. fast random access
a bytecode program verifier 112 for verifying whether or memory) and secondary memory 154 (typically disk
not a specified program satisfies certain predefined storage), a user interface 156. a communications interface
integrity criteria; ^ jgg for communication with the client computers 102 via
a bytecode program interpreter 114 for executing byte- the communications network 106. For the purposes of the
code programs (i.e„ methods); present discussion, it will be assumed that the information
a bootstrap class loader 116, which loads object classes server's secondary memory 154 stores:
into a user's address space and utilizes the bytecode an operating system 160, and
program verifier to verify the integrity of the methods 45 program source files 162,164, 166, 168.
associated with each loaded object class; A second server computer 104 includes the same basic
at least one class repository 120, for locally storing object elements (not shown) and a memory for storing a program
classes 122 in use and/or available for use by user's of 170.
the computer 102; As is often the case, a user operating a browser such as
at least one object repository 124 for storing objects 126, 50 HoUava on the Internet may desire to load from a remote
which are instances of objects of the object classes location on the Internet an application program for execution
stored in the object repository 120. locally on the user's client computer. In order to do so, the
In the preferred embodiment the operating system 109 is user will invoke the class loader associated with the browser
a object oriented multitasking operating system that supports application, often referred to as the bootstrap class loader
multiple threads of execution within each defined address 55 116. The bootstrap class loader 116 creates a local copy of
space. Furthermore, in the preferred embodiment the byte- the object class associated with the user selected application
code program verifier 112 and interpreter 114 are a Java program and prepares the method or methods in that object
bytecode program verifier and interpreter for working with class for local execution.
Java bytecode programs. Java is a platform independent Referring now to FIG. 2, a bootstrap class loader 116
language and technology marketed by Sun Microsystems, 60 according to one embodiment of the present invention is
Inc. In addition, the Internet access procedure 110 in the shown. The bootstrap class loader 116 includes both a class
preferred embodiment is the Hot Java browser, and is reference 202 that points to a set of methods in the assori
embodied as a method in an associated object class that is ated object class, and a data reference 204 that points to a
stored in a local class repository 120 in the client computer's data array 205. The methods in the bootstrap class loader
memory 108. 65 object class include a fetch method 206. a linking method
The bootstrap class loader 116 is typically invoked when 208. a load method 210. and an application specific class
a user first initiates execution of a memod, requiring that an loader generator method 212.