US20010044790A1 - Method and apparatus for managing classfiles on devices without a file system - Google Patents
Method and apparatus for managing classfiles on devices without a file system Download PDFInfo
- Publication number
- US20010044790A1 US20010044790A1 US09/158,121 US15812198A US2001044790A1 US 20010044790 A1 US20010044790 A1 US 20010044790A1 US 15812198 A US15812198 A US 15812198A US 2001044790 A1 US2001044790 A1 US 2001044790A1
- Authority
- US
- United States
- Prior art keywords
- classfile
- embedded device
- source
- database
- virtual machine
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99934—Query formulation, input preparation, or translation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99937—Sorting
Definitions
- This invention relates to the field of computer file systems.
- platform independent programming languages such as the JavaTM programming language
- JavaTM platform independent programming languages
- environments include limited resource devices, referred to as “embedded” devices and include cell phones, “personal digital assistants” (PDAs), smart cards, appliances, and other environments that may lack the number and size of traditional computer system resources.
- PDAs personal digital assistants
- Such limited resource devices may have limited memory, reduced processing power, and simple or no operating systems.
- Such limited resources can prevent the use of some programming languages on the limited resource device.
- One disadvantage, for example, of embedded devices is the absence of a traditional file system. This creates an obstacle to the ability to access files required by a programming language and makes it difficult to upgrade or change software versions, applications, classfiles and/or features of an embedded device.
- FIG. 13 illustrates a PDA, such as the PalmPilot produced by 3Com Corporation.
- PDA device 1300 is equipped with touch screen display 1305 , mechanical buttons ( 1306 and 1307 ), a stylus (not shown), and serial port 1302 .
- a universal asynchronous receiver transmitter (UART) 1301 is used to convert information from the PDA for transmission through serial port 1302 , and to convert serial information received through serial port 1302 .
- Mechanical buttons 1306 are provided for user input, such as for the selection of predefined applications.
- Mechanical buttons 1307 are provided for scrolling graphics on touch screen display 1305 .
- Touch screen display 1305 is separated into application display area 1308 and user input area 1309 .
- Application display area 1308 displays the graphical output of the current application being executed by PDA device 1300 .
- User input area 1309 contains software buttons 1310 , alphabet script input area 1311 , and numeric script input area 1312 .
- Software buttons 1310 are for performing system or application-based selection operations.
- Alphabet script input area 1311 is used to enter alphabetical characters with the electronic stylus.
- numeric script input area 1312 is used to enter numeric characters with the electronic stylus.
- Character recognition software within the PDA converts user input in areas 1311 and 1312 into data characters.
- An advantage of platform independent programming languages such as the Java programming language is the ability to load components of a program, such as an applet, at runtime. (This behavior is specified in the Java Language Specification (JLS) in section 12.2 (pages 218-9) and in the Java Virtual Machine Specification (JVMS) in section 2.16.2 (page 43) and is accomplished with a class loader, a part of the Java virtual machine.
- JLS Java Language Specification
- JVMS Java Virtual Machine Specification
- the invention provides a method of creating and periodically loading a database of classfiles on a non traditional computer device, such as a PDA (personal digital assistant), cellular telephone, pager, smartcard, Java Ring, or other embedded device.
- a resident Java virtual machine loads classes from this database instead of loading them from a file system.
- the embedded device is periodically updated by connecting it to a network or computer that includes a classfile source. At this time, records can be added to, or deleted from, the database (where the records are classfiles).
- the management of the classfile database on the embedded device is independent of the virtual machine on the embedded device.
- One embodiment of the invention comprises an embedded device with a virtual machine, a classfile database, a database manager, and a remote database loader. The embedded device and virtual machine can function even when not connected to the classfile source.
- FIGS. 1 A- 1 C illustrate a graphical representation of the applications executing on an embedded device 170 (such as a PDA) and a classfile source 100 .
- FIG. 2 is a flow diagram illustrating the operation of conduit 120 on the synching computer.
- FIG. 3 is a flow diagram illustrating the synching operation of an embodiment of the invention.
- FIG. 4 is a flow diagram illustrating the operation of the copying step 270 of FIGS. 2 and 3.
- FIG. 5 is a flow diagram illustrating the operation of the copying step 430 of FIG. 4.
- FIG. 6 illustrates an embodiment of a PDA that includes the embedded virtual machine application.
- FIG. 7 illustrates the list of available classfiles on the PDA when the application is invoked.
- FIG. 8 illustrates the information provided by selecting details in FIG. 7.
- FIG. 9 illustrates the display when the run button is selected in FIG. 6.
- FIG. 10 is a flow diagram illustrating the operation of the embedded virtual machine application when invoked from the applications menu.
- FIG. 11 is a flow diagram illustrating an event loop operation.
- FIG. 12 is a flow diagram illustrating the operation of the class manager.
- FIG. 13 is a block diagram of a personal digital assistant coupled to a peripheral device.
- FIG. 14 is a block diagram of a computer system for use with the present invention.
- the invention is a method and apparatus for managing classfiles on a device without a file system.
- numerous specific details are set forth to provide a more thorough description of embodiments of the invention. It will be apparent, however, to one skilled in the art, that the invention may be practiced without these specific details. In other instances, well known features have not been described in detail so as not to obscure the invention.
- embodiments of the invention are described herein with reference to personal digital assistants. Embodiments of the invention can be similarly applied to any form of processor driven device, such as digital wallets, desktop computers, laptop computers, beepers, telephones, smart cards, Java Rings and others.
- An embodiment of the invention uses the Java programming language. Background on the Java programming language and object oriented programming is described below.
- Java programming language is an object-oriented programming language with each program comprising one or more object classes and interfaces.
- Java classes are compiled into machine independent bytecode classfiles.
- Each classfile contains code and data in a platform-independent format called the classfile format.
- the computer system acting as the execution vehicle supports the Java runtime environment.
- the runtime environment contains a program called a virtual machine, which is responsible for executing the code in Java classes.
- Applications may be designed as standalone Java applications, or as Java “applets” which are identified by an applet tag in an HTML (hypertext markup language) document, and loaded by a browser application.
- the classfiles associated with an application or applet may be stored on the local computing system, or on a server accessible over a network. Each class is loaded into the runtime environment, as needed, by the “class loader.”
- the classes of an applet are loaded on demand from the network (stored on a server), or from a local file system, when first referenced during the applet's execution.
- the runtime environment locates and loads each classfile, parses the classfile format, allocates memory for the class's various components, and links the class with other already loaded classes. This process makes the code in the class executable by the virtual machine.
- Java classfiles may be identified in applet tags within an HTML (hypertext markup language) document.
- HTML hypertext markup language
- a web server application is executed on the server to respond to HTTP (hypertext transport protocol) requests containing URLs (universal resource locators) to HTML documents, also referred to as “web pages.”
- HTTP hypertext transport protocol
- URLs universal resource locators
- a browser application executing on a client platform receives an HTML document (e.g., as a result of requesting an HTML document by forwarding a URL to the web server)
- the browser application parses the HTML and automatically initiates the download of the bytecode classfiles when it encounters the applet tag in the HTML document.
- Memory is allocated to store and execute the downloaded applet.
- the allocation of memory to new applets may lead to a low memory condition as the number of applets in the Java runtime environment grows.
- older, invisible applets i.e., applets that are not currently visible on a display
- destroyed i.e., shutdown and deallocated
- the Java language developed by Sun Microsystems has provided a way to write platform independent applications to run on the World Wide Web and provide the desired compatibility.
- Some platforms may have unique and/or proprietary interfaces, limited memory and display sizes, constrained power consumption, and limited physical space. These platform are referred to here as restrictive environments and represent the environment found on many embedded devices.
- a version of the Java programming language has been developed by JavaSoft to be used with, among other things, restrictive environments.
- a description of the Java programming language and the platform for restrictive environments can be found at web site “http://www.java.sun.com”.
- Object-oriented programming is a method of creating computer programs by combining certain fundamental building blocks, and creating relationships among and between the building blocks.
- An object is a programming unit that groups together a data structure (one or more instance variables) and the operations (methods) that can use or affect that data.
- an object consists of data and one or more operations or procedures that can be performed on that data.
- the joining of data and operations into a unitary building block is called “encapsulation.”
- An object can be instructed to perform one of its methods when it receives a “message.”
- a message is a command or instruction sent to the object to execute a certain method.
- a message consists of a method selection (e.g., method name) and a plurality of arguments.
- a message tells the receiving object what operations to perform.
- Object-oriented programming languages are predominantly based on a “class” scheme.
- the class-based object-oriented programming scheme is generally described in Lieberman, “Using Prototypical Objects to Implement Shared Behavior in Object-Oriented Systems,” OOPSLA 86 Proceedings, September 1986, pp. 214-223.
- a class defines the components of an object that typically including the variables and methods for the class.
- a class is used to create a particular instance of itself.
- An instance of an object class includes a unique set of the variables defined for the class. Multiple instances of the same class can be created from a class. Each instance that is created from the class is said to be of the same class.
- an employee class can include “name” and “salary” instance variables and a “set_salary” method. Instances of the employee class can be created, or instantiated for each employee in an organization. Each instance is said to be of type “employee.” Each employee instance includes “name” and “salary” instance variables and the “set_salary” method. The values associated with the “name” and “salary” variables in each employee instance contain the name and salary of an employee in the organization. A message can be sent to an employee's employee instance to invoke the “set_salary” method to modify the employee's salary (i.e., the value associated with the “salary” variable in the employee's employee object).
- a hierarchy of classes can be defined such that a class definition has one or more subclasses.
- a subclass inherits its parent's (and grandparent's etc.) definition.
- Each subclass in the hierarchy may add to or modify the behavior specified by its parent class.
- Some object-oriented programming languages support multiple inheritance where a subclass may inherit a class definition from more than one parent class.
- Other programming languages support only single inheritance, where a subclass is limited to inheriting the class definition of only one parent class.
- the Java programming language also provides a mechanism known as an “interface” which comprises a set of constant and abstract method declarations.
- a class can implement the abstract methods defined in an interface. Both single and multiple inheritance are available to an interface. That is, an interface can inherit an interface definition from more than one parent interface.
- a problem to be solved in providing a programming language on a limited resource device is to provide a virtual machine that can execute on the device, and provide a system for serving needed classfiles to the virtual machine.
- One embodiment of the invention uses a small virtual machine referred to as the embedded virtual machine (EVM).
- EVM embedded virtual machine
- One version of the EVM takes only a few tens of kilobytes (on the order of 30 to 50 kilobytes of static memory depending on compilation and debugging options).
- the invention contemplates the use of EVMs of any size.
- the EVM supports platform-independent multithreading, copying garbage collection, optional quick byte codes, most of the non-graphical libraries in JDK 1.1. (or any other JDK version or any other developer kit) and other typical features of Java programming language.
- An embodiment of the invention uses a version of EVM modified to run on the PalmPilot organizer.
- the invention is described herein in connection with its operation on the PalmPilot organizer.
- the present invention applies to any embedded device or restrictive computing environment because it has the ability to be disconnected from a classfile source and can operate without a persistent connection to a classfile source.
- the embedded virtual machine implementation for the PalmPilot supports the complete Java byte code set (currently excluding long support), full Java class loading, and various PalmPilot native functions.
- Java classfiles can be loaded onto the PalmPilot from a desktop PC via an extension to the PalmPilot synching software (referred to as HotSync in the PalmPilot environment).
- HotSync in the PalmPilot environment.
- the PalmPilot is a limited resource device, the available RAM for runtime classes is limited to between 30 and 40 kilobytes on the PalmPilot.
- the PalmPilot version of the EVM is built around an application known as the class manager.
- the class manager serves as the primary interface to classes on the PalmPilot, allowing the user to see which classes are available, launch Java applications, see details of classes, and delete them as necessary.
- Compiled classfiles are moved to the PalmPilot using a special class conduit that communicates with the class manager during a Synching operation.
- the number of classes on the PalmPilot is limited only by the available RAM on the PalmPilot.
- FIGS. 1 A- 1 C illustrate a graphical representation of the applications executing on an embedded device 170 and a classfile source 100 .
- the classfile source 100 includes a directory with files 110 , and a conduit 120 cooperatively coupled to a synching application 125 (such as HotSync).
- the embedded device 170 includes a virtual machine 150 (such as an embedded virtual machine), a class manager 160 , and classfile database 165 .
- the conduit 120 performs the functions of creating a connection or path between the embedded device and the classfile source so that classfiles can be transferred as necessary between the classfile source and the embedded device.
- the embedded device is capable of executing classfiles found in its local classfile database without connection to the classfile source. Periodically, classfiles can be added, modified, deleted, or replaced by synching the embedded device to a classfile source. During operation, the class manager provides appropriate classfiles to the virtual machine, even in the absence of a file system on the embedded device.
- the classfile source 100 may be a network, the world wide web, a single host computer, or any other system or environment for providing a source of classfiles.
- the classfile source 100 may communicate periodically with the embedded device.
- a network link can typically provides data communication through one or more networks to other data devices, such as an embedded device.
- a network link may provide a connection through a local network to a local server computer or to data equipment operated by an Internet Service Provider (ISP).
- ISP in turn can provide data communication services through the world wide packet data communication network now commonly referred to as the “Internet”.
- a local network and the Internet both use electrical, electromagnetic or optical signals which carry digital data streams.
- the signals through the various networks and the signals on a network link and through a communication interface, which carry the digital data to and from the embedded device are exemplary forms of carrier waves transporting the information.
- the embedded device 170 is assumed to be in temporary connection with the classfile source 100 (e.g. via a synching cradle, connection to a network, cable, carrier wave, or other communication environment) and initiates a synching operation by communication from the class manager 160 to the synching application 125 .
- the conduit 120 is invoked and sends a copy of files 110 (possibly including classfiles) to class manager 160 .
- the copy of files is stored on the embedded device in the classfile database 165 .
- the remote database loader resides on a network, computer, or other classfile source that can be connected to the embedded device.
- the classfile source is a personal computer with a connector that can be coupled to the PalmPilot and software that can communicate with the PalmPilot.
- the connection software is a conduit of the PalmPilot Hot Sync application and it sends selected classfiles from the computer to the database on the PalmPilot during a Hot Sync operation. Compiled classfiles are moved from the computer system to the PalmPilot using a class conduit that runs on the computer system and communicates with the class manager during synching.
- Java programming language must verify a class before executing it (see Java Language Specification [JLS] section 12.3 and the JVMS section 2.16.3).
- the specification is flexible as to when the verification must be performed. Since the verifier is a relatively large program and separate from the virtual machine, it is impractical to use the verifier on a embedded device. Instead, the verifier can be run on the synching computer system that provides the classfiles, as the classfiles are being loaded into the database on the embedded device.
- FIG. 2 is a flow diagram illustrating the operation of conduit 120 on the synching computer.
- the argument “Is Conduit Requested?” is made. If the argument is false, the system loops back to block 200 . If the argument is true, the system proceeds to decision block 210 .
- the argument “Is Conduit Uninstall Requested?” is made. If the argument is true, the system cleans up the conduit at step 220 . If the argument is false, the system initializes the conduit at step 230 .
- the conduit name and version number are provided to the requesting application.
- the conduit is opened.
- the files to be moved are copied to the embedded device.
- the conduit is closed.
- FIG. 3 is a flow diagram illustrating the synching operation of an embodiment of the invention.
- decision block 300 the argument “Are Files 110 already loaded on Embedded Device?” is made. If the argument is true, the system stops. If the argument is false, the system registers conduit 120 with synching application 125 at step 310 .
- step 315 the log files of the embedded device and the synching computer are synchronized.
- the argument “Did an Error Occur?” is made. If the argument is true, the conduit is unregistered at step 325 and the system returns to step 300 . If the argument is false, the system sends an OpenDatabase command from the synching application 125 to the embedded device 170 at step 330 . At step 325 the logging operations are performed. At step 340 the classfile database 165 on embedded device 170 is opened. At step 270 the files 110 are copied to the classfile database 165 . At step 350 all log files are closed. At step 355 the classfile database is closed, and at step 360 the conduit is unregistered.
- FIG. 4 is a flow diagram illustrating the operation of the copying step 270 of FIGS. 2 and 3.
- the system obtains directory information.
- the directory is scanned for unprocessed files.
- the argument “Are there Subdirectories?” is made. If the argument is true, all subdirectories are scanned for files at step 415 . If the argument is false, the system proceeds to decision block 420 and the argument “Did Scan Find Any Unprocessed Files?” If the argument is false, the system exits at step 440 . If the argument is true, the file is obtained at step 425 .
- each file is copied to the embedded device and the file is marked as processed at step 435 . The system then returns to step 405 .
- FIG. 5 is a flow diagram illustrating the operation of the copying step 430 of FIG. 4.
- the file name is copied into a data buffer.
- the end of the file name is indicated in the data buffer.
- the data from the file is copied into the data buffer.contents is sent.
- the file is closed.
- the data buffer is sent to the classfile database on the embedded device.
- the argument “Did an Error Occur?” is made. If the argument is true, the system exits at step 535 . If the argument is false, file information is written to a log file at step 530 .
- files may be used in connection with the local virtual machine.
- An application provides displays and menus for selection of classes and applications.
- the classes reside in a database on the embedded device.
- the class manager resides on the embedded device and is used to provide access for the virtual machine to the classfiles in the local database.
- An example of its operation is given here in connection with a PDA such as the PalmPilot.
- the class manager and virtual machine are bundled together into a single PalmPilot application, with the class manager as the user interface.
- the application is a “prc” file and is installed using the PalmPilot Install Tool on an associated computer system. When installed, the application appears on the PalmPilot's Application Menu.
- the class manager uses standard PalmPilot database system calls to read and delete database records (classes). PalmPilot database systems, “prc” files, PalmPilot HotSync operations, and the PalmPilot operating system and software developers kits may be found at www.palmpilot.com and are incorporated herein by reference.
- the invention has application not only to PDAs such as the PalmPilot, but to any embedded device as well.
- the embedded device will have one or more classfiles for execution on an embedded virtual machine.
- the embedded device may be physically linked to a classfile source, but can operate without a persistent electrical connection to the classfile source.
- the invention contemplates operation in the absence of any link whatsoever between the embedded device and the classfile source.
- the link (physical or electrical), may only be required to update one or more executable applications on the embedded device.
- the database manager displays a list of the loaded classes and their respective sizes. The user can select a class to run, at which point the database manager starts the resident virtual machine.
- An example of the resident virtual machine is described in section 2.16.1 of the Java Virtual Machine Specification (JVMS).
- the classfile database is named “database” in one embodiment and is implemented in the PalmPilot format for databases in the example shown.
- the format for PalmPilot databases is described www.palmpilot.com.
- the PalmPilot includes an application referred to as “Memory”. This application illustrates the number of records that are contained in an application that can store multiple records. In the case of the database of the present invention, each record represents a classfile, so that the number of records displayed by the Memory application represents the number of classfiles in the database.
- FIG. 6 illustrates an embodiment of a PDA that includes the embedded virtual machine application.
- the embedded virtual machine application 610 appears in the applications menu screen 600 of the PDA.
- the application is invoked by selecting it via activation of the touch screen of the PDA.
- FIG. 7 illustrates the list of available classfiles on the PDA when the application is invoked.
- the class files are presented in main form 700 .
- Main form 700 displays the number of available classes 710 , a list of the available classes 715 , a “Run” button 720 , a “details” button 725 , and an “exit” button 730 .
- the exit button 730 returns the user to the main applications menu 600 of FIG. 6.
- it can be run by selecting the run button 720 , or more information about the file can be obtained by selecting the details button 725 .
- FIG. 8 illustrates the information provided by selecting details in FIG. 7.
- the example illustrates the detail information for the file Dragon10.
- the class form 800 provides the name field 805 , information field 810 (with, for example, class size), a done button 815 and delete button 820 . Selecting the done button 815 returns to the main form of FIG. 7. Selecting the delete button 820 deletes the selected class.
- FIG. 9 illustrates the display when the run button is selected in FIG. 6.
- the invoke form 900 of FIG. 9 includes a class name field 905 , parameters field 910 , options field 915 , and status field 920 .
- the invoke form also includes buttons “OK”, “Cancel”, and “Exit”.
- the class name field 905 includes the name of the selected class.
- the parameters field 910 permits, when available, the insertion or designation of parameters for the application to be run.
- the verify option is selected, the system verifies the classfiles being executed, if a verifier is present.
- a display of the methods being executed is provided in status field 920 .
- the OK button invokes the application, the cancel button returns to the main form 700 of FIG. 7, and the exit button returns to the applications screen 600 of FIG. 6.
- FIG. 10 is a flow diagram illustrating the operation of the embedded virtual machine application when invoked from the applications menu.
- the argument “Is PalmOS version number less than required?” is made. If the argument is true, the embedded virtual machine application cannot be invoked. If the argument is false, the application is launched at step 1005 .
- the classfile database is opened.
- the main form 700 is displayed and the event loop begins at step 1020 .
- the argument “Did an Event Occur?” is made. If no, the system continues in the event loop. If yes, the system runs the event at step 1030 . At decision block 1035 the argument “Is Application Stopping?” is made. If the argument is false, the system returns to step 1025 . If the argument is true, the system closes all open forms at step 1040 and closes the classfile database at step 1045 .
- FIG. 11 is a flow diagram illustrating an event loop operation.
- decision block 1100 the argument “Is Event Loop Started?” is made. If the argument is true, the event occurs at step 1105 .
- Decision block 1110 determines if a stop event was issued. If yes, the application is terminated at step 1111 . If no, the system checks to see if the system can handle the event at decision block 1115 . If yes, the system handles the event at step 1120 . If no, the system checks to see of the menu bar can handle the event at decision block 1125 . If yes, the menu bar handles the event at step 1130 . If no, the system checks to see if the application can handle the event at decision block 1135 . IF yes, the application handles the event at step 1140 . If no, the form object handles the event at step 1145 .
- FIG. 12 is a flow diagram illustrating the operation of the class manager.
- the argument “Was Application Button 610 Depressed?” is made. If the argument is false, the system loops back to block 1200 . If the argument is true, the system activates the main form 700 for display at step 1205 . The available files are displayed at step 1206 .
- the argument “Was Run Button 720 Depressed?” is made. If the argument is false, the system proceeds to decision block 1220 to see if the details button 725 was depressed. If yes, the system activates the class form 800 at step 1225 and displays the file information at step 1230 . If no, the system loops back to decision block 1200 .
- the invoke form 900 is activated at step 1215 .
- a test for the verify option is made. If yes, the verify flag is activated at step 1236 . If no, a test for the verbose option is made at decision block 1240 . If yes, the verbose flag is activated at step 1245 . If no, the virtual machine is invoked at step 1250 . After the execution of a selected program, the system returns to the class manager and main form 700 (step 1205 ).
- the invention is described above in connection with an embedded device that has a graphical interface.
- the invention has equal application to embedded devices that do not have graphical interfaces or any interface.
- These environments include household appliances, (toasters, microwaves) or other devices with no interface or limited interface (cell phone, smartcards).
- the class manager selects one or more appropriate classfiles for execution by the EVM.
- the class manager directs the loading of replacement and/or additional classfiles for execution by the EVM.
- the appliance could be upgraded by connecting the device to a classfile source.
- the class manager compares the resident version of the classfile or classfiles on the embedded device with the available classfile or classfiles on the classfile source and loads newer versions if available.
- the classfile source could be found on a network or on a computer system such as the one described in FIG. 14.
- a keyboard 1410 and mouse 1411 are coupled to a bidirectional system bus 1418 .
- the keyboard and mouse are for introducing user input to the computer system and communicating that user input to processor 1413 .
- Other suitable input devices may be used in addition to, or in place of, the mouse 1411 and keyboard 1410 .
- I/O (input/output) unit 1419 coupled to bi-directional system bus 1418 represents such I/O elements as a printer, A/V (audio/video) I/O, etc.
- Computer 1400 includes a video memory 1414 , main memory 1415 and mass storage 1412 , all coupled to bidirectional system bus 1418 along with keyboard 1410 , mouse 1411 and processor 1413 .
- the mass storage 1412 may include both fixed and removable media, such as magnetic, optical or magnetic optical storage systems or any other available mass storage technology.
- Bus 1418 may contain, for example, thirty-two address lines for addressing video memory 1414 or main memory 1415 .
- the system bus 1418 also includes, for example, a 32-bit data bus for transferring data between and among the components, such as processor 1413 , main memory 1415 , video memory 1414 and mass storage 1412 .
- multiplex data/address lines may be used instead of separate data and address lines.
- the processor 1413 is a microprocessor manufactured by Motorola, such as the 680X0 processor or a microprocessor manufactured by Intel, such as the 80X86, or Pentium processor, or a SPARC microprocessor from Sun Microsystems, Inc.
- Main memory 1415 is comprised of dynamic random access memory (DRAM).
- Video memory 1414 is a dual-ported video random access memory. One port of the video memory 1414 is coupled to video amplifier 1416 .
- the video amplifier 1416 is used to drive the cathode ray tube (CRT) raster monitor 1417 .
- Video amplifier 1416 is well known in the art and may be implemented by any suitable apparatus. This circuitry converts pixel data stored in video memory 1414 to a raster signal suitable for use by monitor 1417 .
- Monitor 1417 is a type of monitor suitable for displaying graphic images.
- Computer 1400 may also include a communication interface 1420 coupled to bus 1418 .
- Communication interface 1420 provides a two-way data communication coupling via a network link 1421 to a local network 1422 .
- ISDN integrated services digital network
- communication interface 1420 provides a data communication connection to the corresponding type of telephone line, which comprises part of network link 1421 .
- LAN local area network
- communication interface 1420 provides a data communication connection via network link 1421 to a compatible LAN.
- Wireless links are also possible.
- communication interface 1420 sends and receives electrical, electromagnetic or optical signals which carry digital data streams representing various types of information.
- Network link 1421 typically provides data communication through one or more networks to other data devices.
- network link 1421 may provide a connection through local network 1422 to local server computer 1423 or to data equipment operated by an Internet Service Provider (ISP) 1424 .
- ISP 1424 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet” 1425 .
- Internet 1425 uses electrical, electromagnetic or optical signals which carry digital data streams.
- the signals through the various networks and the signals on network link 1421 and through communication interface 1420 which carry the digital data to and from computer 1400 , are exemplary forms of carrier waves transporting the information.
- Computer 1400 can send messages and receive data, including program code, through the network(s), network link 1421 , and communication interface 1420 .
- remote server computer 1426 might transmit a requested code for an application program through Internet 1425 , ISP 1424 , local network 1422 and communication interface 1420 .
- the received code may be executed by processor 1413 as it is received, and/or stored in mass storage 1412 , or other non-volatile storage for later execution. In this manner, computer 1400 may obtain application code in the form of a carrier wave.
- Application code may be embodied in any form of computer program product.
- a computer program product comprises a medium configured to store or transport computer readable code, or in which computer readable code may be embedded.
- Some examples of computer program products are CD-ROM disks, ROM cards, floppy disks, magnetic tapes, computer hard drives, servers on a network, and carrier waves.
Abstract
Description
- 1. Field of the Invention
- This invention relates to the field of computer file systems.
- Portions of the disclosure of this patent document contain material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office file or records, but otherwise reserves all copyright rights whatsoever. Sun, Sun Microsystems, the Sun logo, Solaris, Java, JavaOS, JavaStation, HotJava Views and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries.
- 2. Background
- Embedded Devices
- The use of platform independent programming languages, such as the Java™ programming language, has been adapted for use in non traditional computing environments. These environments include limited resource devices, referred to as “embedded” devices and include cell phones, “personal digital assistants” (PDAs), smart cards, appliances, and other environments that may lack the number and size of traditional computer system resources. For example, such limited resource devices may have limited memory, reduced processing power, and simple or no operating systems. Such limited resources can prevent the use of some programming languages on the limited resource device. One disadvantage, for example, of embedded devices is the absence of a traditional file system. This creates an obstacle to the ability to access files required by a programming language and makes it difficult to upgrade or change software versions, applications, classfiles and/or features of an embedded device.
- Example Embedded Device (Personal Digital Assistant (PDA))
- One example of an embedded device is a PDA. FIG. 13 illustrates a PDA, such as the PalmPilot produced by 3Com Corporation.
PDA device 1300 is equipped withtouch screen display 1305, mechanical buttons (1306 and 1307), a stylus (not shown), andserial port 1302. A universal asynchronous receiver transmitter (UART) 1301 is used to convert information from the PDA for transmission throughserial port 1302, and to convert serial information received throughserial port 1302.Mechanical buttons 1306 are provided for user input, such as for the selection of predefined applications.Mechanical buttons 1307 are provided for scrolling graphics ontouch screen display 1305. -
Touch screen display 1305 is separated intoapplication display area 1308 anduser input area 1309.Application display area 1308 displays the graphical output of the current application being executed byPDA device 1300.User input area 1309 containssoftware buttons 1310, alphabetscript input area 1311, and numericscript input area 1312.Software buttons 1310 are for performing system or application-based selection operations. Alphabetscript input area 1311 is used to enter alphabetical characters with the electronic stylus. Similarly, numericscript input area 1312 is used to enter numeric characters with the electronic stylus. Character recognition software within the PDA converts user input inareas - An advantage of platform independent programming languages such as the Java programming language is the ability to load components of a program, such as an applet, at runtime. (This behavior is specified in the Java Language Specification (JLS) in section 12.2 (pages 218-9) and in the Java Virtual Machine Specification (JVMS) in section 2.16.2 (page 43) and is accomplished with a class loader, a part of the Java virtual machine.
- Because PDAs do not typically have access to a file system (e.g. through a network connection) from which classfiles can be loaded, standard class loading techniques cannot be used. One solution is to preload classfiles into a non-volatile memory, such as a ROM (read only memory). This lacks flexibility.
- The invention provides a method of creating and periodically loading a database of classfiles on a non traditional computer device, such as a PDA (personal digital assistant), cellular telephone, pager, smartcard, Java Ring, or other embedded device. A resident Java virtual machine loads classes from this database instead of loading them from a file system. The embedded device is periodically updated by connecting it to a network or computer that includes a classfile source. At this time, records can be added to, or deleted from, the database (where the records are classfiles). The management of the classfile database on the embedded device is independent of the virtual machine on the embedded device. One embodiment of the invention comprises an embedded device with a virtual machine, a classfile database, a database manager, and a remote database loader. The embedded device and virtual machine can function even when not connected to the classfile source.
- FIGS.1A-1C illustrate a graphical representation of the applications executing on an embedded device 170 (such as a PDA) and a
classfile source 100. - FIG. 2 is a flow diagram illustrating the operation of
conduit 120 on the synching computer. - FIG. 3 is a flow diagram illustrating the synching operation of an embodiment of the invention.
- FIG. 4 is a flow diagram illustrating the operation of the copying
step 270 of FIGS. 2 and 3. - FIG. 5 is a flow diagram illustrating the operation of the copying
step 430 of FIG. 4. - FIG. 6 illustrates an embodiment of a PDA that includes the embedded virtual machine application.
- FIG. 7 illustrates the list of available classfiles on the PDA when the application is invoked.
- FIG. 8 illustrates the information provided by selecting details in FIG. 7.
- FIG. 9 illustrates the display when the run button is selected in FIG. 6.
- FIG. 10 is a flow diagram illustrating the operation of the embedded virtual machine application when invoked from the applications menu.
- FIG. 11 is a flow diagram illustrating an event loop operation.
- FIG. 12 is a flow diagram illustrating the operation of the class manager.
- FIG. 13 is a block diagram of a personal digital assistant coupled to a peripheral device.
- FIG. 14 is a block diagram of a computer system for use with the present invention.
- The invention is a method and apparatus for managing classfiles on a device without a file system. In the following description, numerous specific details are set forth to provide a more thorough description of embodiments of the invention. It will be apparent, however, to one skilled in the art, that the invention may be practiced without these specific details. In other instances, well known features have not been described in detail so as not to obscure the invention.
- For purposes of illustration, embodiments of the invention are described herein with reference to personal digital assistants. Embodiments of the invention can be similarly applied to any form of processor driven device, such as digital wallets, desktop computers, laptop computers, beepers, telephones, smart cards, Java Rings and others. An embodiment of the invention uses the Java programming language. Background on the Java programming language and object oriented programming is described below.
- Java Programming and Execution
- An embodiment of the software apparatus of the invention is implemented in the Java programming language. The Java programming language is an object-oriented programming language with each program comprising one or more object classes and interfaces. Unlike many programming languages, in which a program is compiled into machine-dependent, executable program code, Java classes are compiled into machine independent bytecode classfiles. Each classfile contains code and data in a platform-independent format called the classfile format. The computer system acting as the execution vehicle supports the Java runtime environment. The runtime environment contains a program called a virtual machine, which is responsible for executing the code in Java classes.
- Applications may be designed as standalone Java applications, or as Java “applets” which are identified by an applet tag in an HTML (hypertext markup language) document, and loaded by a browser application. The classfiles associated with an application or applet may be stored on the local computing system, or on a server accessible over a network. Each class is loaded into the runtime environment, as needed, by the “class loader.”
- The classes of an applet are loaded on demand from the network (stored on a server), or from a local file system, when first referenced during the applet's execution. The runtime environment locates and loads each classfile, parses the classfile format, allocates memory for the class's various components, and links the class with other already loaded classes. This process makes the code in the class executable by the virtual machine.
- Java classfiles may be identified in applet tags within an HTML (hypertext markup language) document. To provide a client with access to classfiles from a server on a network, a web server application is executed on the server to respond to HTTP (hypertext transport protocol) requests containing URLs (universal resource locators) to HTML documents, also referred to as “web pages.” When a browser application executing on a client platform receives an HTML document (e.g., as a result of requesting an HTML document by forwarding a URL to the web server), the browser application parses the HTML and automatically initiates the download of the bytecode classfiles when it encounters the applet tag in the HTML document.
- Memory is allocated to store and execute the downloaded applet. The allocation of memory to new applets may lead to a low memory condition as the number of applets in the Java runtime environment grows. To resolve the low memory condition, older, invisible applets (i.e., applets that are not currently visible on a display) may be unloaded, or “destroyed” (i.e., shutdown and deallocated), to release memory. An applet thus destroyed can no longer enact user notification functions when events occur that are relevant to the destroyed applet.
- The Java language developed by Sun Microsystems has provided a way to write platform independent applications to run on the World Wide Web and provide the desired compatibility. Some platforms may have unique and/or proprietary interfaces, limited memory and display sizes, constrained power consumption, and limited physical space. These platform are referred to here as restrictive environments and represent the environment found on many embedded devices. A version of the Java programming language has been developed by JavaSoft to be used with, among other things, restrictive environments. A description of the Java programming language and the platform for restrictive environments can be found at web site “http://www.java.sun.com”.
- Object-Oriented Programming
- Object-oriented programming is a method of creating computer programs by combining certain fundamental building blocks, and creating relationships among and between the building blocks.
- The building blocks in object-oriented programming systems are called “objects.” An object is a programming unit that groups together a data structure (one or more instance variables) and the operations (methods) that can use or affect that data. Thus, an object consists of data and one or more operations or procedures that can be performed on that data. The joining of data and operations into a unitary building block is called “encapsulation.”
- An object can be instructed to perform one of its methods when it receives a “message.” A message is a command or instruction sent to the object to execute a certain method. A message consists of a method selection (e.g., method name) and a plurality of arguments. A message tells the receiving object what operations to perform.
- Object-oriented programming languages are predominantly based on a “class” scheme. The class-based object-oriented programming scheme is generally described in Lieberman, “Using Prototypical Objects to Implement Shared Behavior in Object-Oriented Systems,” OOPSLA 86 Proceedings, September 1986, pp. 214-223.
- A class defines the components of an object that typically including the variables and methods for the class. A class is used to create a particular instance of itself. An instance of an object class includes a unique set of the variables defined for the class. Multiple instances of the same class can be created from a class. Each instance that is created from the class is said to be of the same class.
- To illustrate, an employee class can include “name” and “salary” instance variables and a “set_salary” method. Instances of the employee class can be created, or instantiated for each employee in an organization. Each instance is said to be of type “employee.” Each employee instance includes “name” and “salary” instance variables and the “set_salary” method. The values associated with the “name” and “salary” variables in each employee instance contain the name and salary of an employee in the organization. A message can be sent to an employee's employee instance to invoke the “set_salary” method to modify the employee's salary (i.e., the value associated with the “salary” variable in the employee's employee object).
- A hierarchy of classes can be defined such that a class definition has one or more subclasses. A subclass inherits its parent's (and grandparent's etc.) definition. Each subclass in the hierarchy may add to or modify the behavior specified by its parent class. Some object-oriented programming languages support multiple inheritance where a subclass may inherit a class definition from more than one parent class. Other programming languages support only single inheritance, where a subclass is limited to inheriting the class definition of only one parent class. The Java programming language also provides a mechanism known as an “interface” which comprises a set of constant and abstract method declarations. A class can implement the abstract methods defined in an interface. Both single and multiple inheritance are available to an interface. That is, an interface can inherit an interface definition from more than one parent interface.
- Limited Resource Device Virtual Machine
- A problem to be solved in providing a programming language on a limited resource device is to provide a virtual machine that can execute on the device, and provide a system for serving needed classfiles to the virtual machine. One embodiment of the invention uses a small virtual machine referred to as the embedded virtual machine (EVM). One version of the EVM takes only a few tens of kilobytes (on the order of 30 to 50 kilobytes of static memory depending on compilation and debugging options). However, the invention contemplates the use of EVMs of any size. The EVM supports platform-independent multithreading, copying garbage collection, optional quick byte codes, most of the non-graphical libraries in JDK 1.1. (or any other JDK version or any other developer kit) and other typical features of Java programming language.
- An embodiment of the invention uses a version of EVM modified to run on the PalmPilot organizer. The invention is described herein in connection with its operation on the PalmPilot organizer. However, the present invention applies to any embedded device or restrictive computing environment because it has the ability to be disconnected from a classfile source and can operate without a persistent connection to a classfile source.
- The embedded virtual machine implementation for the PalmPilot supports the complete Java byte code set (currently excluding long support), full Java class loading, and various PalmPilot native functions. Java classfiles can be loaded onto the PalmPilot from a desktop PC via an extension to the PalmPilot synching software (referred to as HotSync in the PalmPilot environment). As the PalmPilot is a limited resource device, the available RAM for runtime classes is limited to between 30 and 40 kilobytes on the PalmPilot.
- The PalmPilot version of the EVM is built around an application known as the class manager. The class manager serves as the primary interface to classes on the PalmPilot, allowing the user to see which classes are available, launch Java applications, see details of classes, and delete them as necessary. Compiled classfiles are moved to the PalmPilot using a special class conduit that communicates with the class manager during a Synching operation. The number of classes on the PalmPilot is limited only by the available RAM on the PalmPilot.
- Classfile Source/Embedded Device Operation
- FIGS.1A-1C illustrate a graphical representation of the applications executing on an embedded
device 170 and aclassfile source 100. Referring first to FIG. 1A, theclassfile source 100 includes a directory withfiles 110, and aconduit 120 cooperatively coupled to a synching application 125 (such as HotSync). The embeddeddevice 170 includes a virtual machine 150 (such as an embedded virtual machine), aclass manager 160, andclassfile database 165. Theconduit 120 performs the functions of creating a connection or path between the embedded device and the classfile source so that classfiles can be transferred as necessary between the classfile source and the embedded device. - The embedded device is capable of executing classfiles found in its local classfile database without connection to the classfile source. Periodically, classfiles can be added, modified, deleted, or replaced by synching the embedded device to a classfile source. During operation, the class manager provides appropriate classfiles to the virtual machine, even in the absence of a file system on the embedded device.
- The
classfile source 100 may be a network, the world wide web, a single host computer, or any other system or environment for providing a source of classfiles. Theclassfile source 100 may communicate periodically with the embedded device. A network link can typically provides data communication through one or more networks to other data devices, such as an embedded device. For example, a network link may provide a connection through a local network to a local server computer or to data equipment operated by an Internet Service Provider (ISP). ISP in turn can provide data communication services through the world wide packet data communication network now commonly referred to as the “Internet”. A local network and the Internet both use electrical, electromagnetic or optical signals which carry digital data streams. The signals through the various networks and the signals on a network link and through a communication interface, which carry the digital data to and from the embedded device, are exemplary forms of carrier waves transporting the information. - At FIG. 1A, the embedded
device 170 is assumed to be in temporary connection with the classfile source 100 (e.g. via a synching cradle, connection to a network, cable, carrier wave, or other communication environment) and initiates a synching operation by communication from theclass manager 160 to thesynching application 125. At FIG. 1B, theconduit 120 is invoked and sends a copy of files 110 (possibly including classfiles) toclass manager 160. At FIG. 1C, the copy of files is stored on the embedded device in theclassfile database 165. - Remote Database Loader
- The remote database loader resides on a network, computer, or other classfile source that can be connected to the embedded device. For the PalmPilot, the classfile source is a personal computer with a connector that can be coupled to the PalmPilot and software that can communicate with the PalmPilot. In one embodiment, the connection software is a conduit of the PalmPilot Hot Sync application and it sends selected classfiles from the computer to the database on the PalmPilot during a Hot Sync operation. Compiled classfiles are moved from the computer system to the PalmPilot using a class conduit that runs on the computer system and communicates with the class manager during synching.
- An implementation of the Java programming language must verify a class before executing it (see Java Language Specification [JLS] section 12.3 and the JVMS section 2.16.3). The specification is flexible as to when the verification must be performed. Since the verifier is a relatively large program and separate from the virtual machine, it is impractical to use the verifier on a embedded device. Instead, the verifier can be run on the synching computer system that provides the classfiles, as the classfiles are being loaded into the database on the embedded device.
- Conduit Operation
- FIG. 2 is a flow diagram illustrating the operation of
conduit 120 on the synching computer. Atdecision block 200, the argument “Is Conduit Requested?” is made. If the argument is false, the system loops back to block 200. If the argument is true, the system proceeds todecision block 210. At block 201 the argument “Is Conduit Uninstall Requested?” is made. If the argument is true, the system cleans up the conduit atstep 220. If the argument is false, the system initializes the conduit atstep 230. - At step240, the conduit name and version number are provided to the requesting application. At
step 260 the conduit is opened. Atstep 270 the files to be moved are copied to the embedded device. Atstep 280 the conduit is closed. - Synching Operation
- FIG. 3 is a flow diagram illustrating the synching operation of an embodiment of the invention. At
decision block 300 the argument “AreFiles 110 already loaded on Embedded Device?” is made. If the argument is true, the system stops. If the argument is false, the system registersconduit 120 withsynching application 125 atstep 310. Atstep 315 the log files of the embedded device and the synching computer are synchronized. - At
decision block 320 the argument “Did an Error Occur?” is made. If the argument is true, the conduit is unregistered atstep 325 and the system returns to step 300. If the argument is false, the system sends an OpenDatabase command from thesynching application 125 to the embeddeddevice 170 atstep 330. Atstep 325 the logging operations are performed. Atstep 340 theclassfile database 165 on embeddeddevice 170 is opened. Atstep 270 thefiles 110 are copied to theclassfile database 165. Atstep 350 all log files are closed. Atstep 355 the classfile database is closed, and atstep 360 the conduit is unregistered. - FIG. 4 is a flow diagram illustrating the operation of the copying
step 270 of FIGS. 2 and 3. Atstep 400 the system obtains directory information. Atstep 405 the directory is scanned for unprocessed files. Atdecision block 410 the argument “Are there Subdirectories?” is made. If the argument is true, all subdirectories are scanned for files atstep 415. If the argument is false, the system proceeds to decision block 420 and the argument “Did Scan Find Any Unprocessed Files?” If the argument is false, the system exits atstep 440. If the argument is true, the file is obtained atstep 425. Atstep 430, each file is copied to the embedded device and the file is marked as processed atstep 435. The system then returns to step 405. - FIG. 5 is a flow diagram illustrating the operation of the copying
step 430 of FIG. 4. Atstep 500 the file name is copied into a data buffer. Atstep 505 the end of the file name is indicated in the data buffer. Atstep 510 the data from the file is copied into the data buffer.contents is sent. Atstep 515 the file is closed. Atstep 520 the data buffer is sent to the classfile database on the embedded device. Atdecision block 525 the argument “Did an Error Occur?” is made. If the argument is true, the system exits atstep 535. If the argument is false, file information is written to a log file atstep 530. - Operation of Embedded Device
- Once the files have been transferred to the embedded device, they may be used in connection with the local virtual machine. An application provides displays and menus for selection of classes and applications. The classes reside in a database on the embedded device.
- Database Manager (Class Manager)
- The class manager resides on the embedded device and is used to provide access for the virtual machine to the classfiles in the local database. An example of its operation is given here in connection with a PDA such as the PalmPilot.
- The class manager and virtual machine are bundled together into a single PalmPilot application, with the class manager as the user interface. The application is a “prc” file and is installed using the PalmPilot Install Tool on an associated computer system. When installed, the application appears on the PalmPilot's Application Menu. The class manager uses standard PalmPilot database system calls to read and delete database records (classes). PalmPilot database systems, “prc” files, PalmPilot HotSync operations, and the PalmPilot operating system and software developers kits may be found at www.palmpilot.com and are incorporated herein by reference.
- The invention has application not only to PDAs such as the PalmPilot, but to any embedded device as well. In operation, the embedded device will have one or more classfiles for execution on an embedded virtual machine. The embedded device may be physically linked to a classfile source, but can operate without a persistent electrical connection to the classfile source. In addition, the invention contemplates operation in the absence of any link whatsoever between the embedded device and the classfile source. The link (physical or electrical), may only be required to update one or more executable applications on the embedded device.
- The database manager displays a list of the loaded classes and their respective sizes. The user can select a class to run, at which point the database manager starts the resident virtual machine. An example of the resident virtual machine is described in section 2.16.1 of the Java Virtual Machine Specification (JVMS).
- Classfile Database
- The classfile database is named “database” in one embodiment and is implemented in the PalmPilot format for databases in the example shown. The format for PalmPilot databases is described www.palmpilot.com. The PalmPilot includes an application referred to as “Memory”. This application illustrates the number of records that are contained in an application that can store multiple records. In the case of the database of the present invention, each record represents a classfile, so that the number of records displayed by the Memory application represents the number of classfiles in the database.
- The operation of the class manager and the embedded virtual machine on the embedded device is illustrated in FIGS. 6 through 12.
- FIG. 6 illustrates an embodiment of a PDA that includes the embedded virtual machine application. The embedded
virtual machine application 610 appears in theapplications menu screen 600 of the PDA. The application is invoked by selecting it via activation of the touch screen of the PDA. - FIG. 7 illustrates the list of available classfiles on the PDA when the application is invoked. The class files are presented in
main form 700.Main form 700 displays the number ofavailable classes 710, a list of theavailable classes 715, a “Run”button 720, a “details”button 725, and an “exit”button 730. Theexit button 730 returns the user to themain applications menu 600 of FIG. 6. When one of thefiles 715 has been selected, it can be run by selecting therun button 720, or more information about the file can be obtained by selecting thedetails button 725. - FIG. 8 illustrates the information provided by selecting details in FIG. 7. The example illustrates the detail information for the file Dragon10. The
class form 800 provides thename field 805, information field 810 (with, for example, class size), a donebutton 815 and deletebutton 820. Selecting the donebutton 815 returns to the main form of FIG. 7. Selecting thedelete button 820 deletes the selected class. - FIG. 9 illustrates the display when the run button is selected in FIG. 6. The invoke
form 900 of FIG. 9 includes aclass name field 905,parameters field 910,options field 915, andstatus field 920. The invoke form also includes buttons “OK”, “Cancel”, and “Exit”. Theclass name field 905 includes the name of the selected class. The parameters field 910 permits, when available, the insertion or designation of parameters for the application to be run. When the verify option is selected, the system verifies the classfiles being executed, if a verifier is present. When the verbose option is selected, a display of the methods being executed is provided instatus field 920. The OK button invokes the application, the cancel button returns to themain form 700 of FIG. 7, and the exit button returns to the applications screen 600 of FIG. 6. - Embedded Virtual Machine Operation
- FIG. 10 is a flow diagram illustrating the operation of the embedded virtual machine application when invoked from the applications menu. At
decision block 1000 the argument “Is PalmOS version number less than required?” is made. If the argument is true, the embedded virtual machine application cannot be invoked. If the argument is false, the application is launched atstep 1005. Atstep 1010 the classfile database is opened. Atstep 1015 themain form 700 is displayed and the event loop begins atstep 1020. - At
decision block 1025 the argument “Did an Event Occur?” is made. If no, the system continues in the event loop. If yes, the system runs the event atstep 1030. Atdecision block 1035 the argument “Is Application Stopping?” is made. If the argument is false, the system returns to step 1025. If the argument is true, the system closes all open forms atstep 1040 and closes the classfile database atstep 1045. - FIG. 11 is a flow diagram illustrating an event loop operation. At
decision block 1100 the argument “Is Event Loop Started?” is made. If the argument is true, the event occurs atstep 1105.Decision block 1110 determines if a stop event was issued. If yes, the application is terminated atstep 1111. If no, the system checks to see if the system can handle the event atdecision block 1115. If yes, the system handles the event atstep 1120. If no, the system checks to see of the menu bar can handle the event atdecision block 1125. If yes, the menu bar handles the event atstep 1130. If no, the system checks to see if the application can handle the event atdecision block 1135. IF yes, the application handles the event atstep 1140. If no, the form object handles the event atstep 1145. - Class Manager Operation
- FIG. 12 is a flow diagram illustrating the operation of the class manager. At
decision block 1200 the argument “WasApplication Button 610 Depressed?” is made. If the argument is false, the system loops back toblock 1200. If the argument is true, the system activates themain form 700 for display atstep 1205. The available files are displayed atstep 1206. Atdecision block 1210 the argument “WasRun Button 720 Depressed?” is made. If the argument is false, the system proceeds todecision block 1220 to see if thedetails button 725 was depressed. If yes, the system activates theclass form 800 atstep 1225 and displays the file information atstep 1230. If no, the system loops back todecision block 1200. - If the argument at
decision block 1210 is true, the invokeform 900 is activated atstep 1215. At decision block 1235 a test for the verify option is made. If yes, the verify flag is activated atstep 1236. If no, a test for the verbose option is made atdecision block 1240. If yes, the verbose flag is activated atstep 1245. If no, the virtual machine is invoked atstep 1250. After the execution of a selected program, the system returns to the class manager and main form 700 (step 1205). - Other Embodiments
- The invention is described above in connection with an embedded device that has a graphical interface. The invention has equal application to embedded devices that do not have graphical interfaces or any interface. These environments include household appliances, (toasters, microwaves) or other devices with no interface or limited interface (cell phone, smartcards). In those environments, the class manager selects one or more appropriate classfiles for execution by the EVM. When the embedded device is coupled to a classfile source, the class manager directs the loading of replacement and/or additional classfiles for execution by the EVM. For example, the appliance could be upgraded by connecting the device to a classfile source. The class manager compares the resident version of the classfile or classfiles on the embedded device with the available classfile or classfiles on the classfile source and loads newer versions if available.
- Classfile Source
- The classfile source could be found on a network or on a computer system such as the one described in FIG. 14. A
keyboard 1410 andmouse 1411 are coupled to abidirectional system bus 1418. The keyboard and mouse are for introducing user input to the computer system and communicating that user input toprocessor 1413. Other suitable input devices may be used in addition to, or in place of, themouse 1411 andkeyboard 1410. I/O (input/output)unit 1419 coupled tobi-directional system bus 1418 represents such I/O elements as a printer, A/V (audio/video) I/O, etc. -
Computer 1400 includes avideo memory 1414,main memory 1415 andmass storage 1412, all coupled tobidirectional system bus 1418 along withkeyboard 1410,mouse 1411 andprocessor 1413. Themass storage 1412 may include both fixed and removable media, such as magnetic, optical or magnetic optical storage systems or any other available mass storage technology.Bus 1418 may contain, for example, thirty-two address lines for addressingvideo memory 1414 ormain memory 1415. Thesystem bus 1418 also includes, for example, a 32-bit data bus for transferring data between and among the components, such asprocessor 1413,main memory 1415,video memory 1414 andmass storage 1412. Alternatively, multiplex data/address lines may be used instead of separate data and address lines. - In one embodiment of the invention, the
processor 1413 is a microprocessor manufactured by Motorola, such as the 680X0 processor or a microprocessor manufactured by Intel, such as the 80X86, or Pentium processor, or a SPARC microprocessor from Sun Microsystems, Inc. However, any other suitable microprocessor or microcomputer may be utilized.Main memory 1415 is comprised of dynamic random access memory (DRAM).Video memory 1414 is a dual-ported video random access memory. One port of thevideo memory 1414 is coupled tovideo amplifier 1416. Thevideo amplifier 1416 is used to drive the cathode ray tube (CRT)raster monitor 1417.Video amplifier 1416 is well known in the art and may be implemented by any suitable apparatus. This circuitry converts pixel data stored invideo memory 1414 to a raster signal suitable for use bymonitor 1417.Monitor 1417 is a type of monitor suitable for displaying graphic images. -
Computer 1400 may also include acommunication interface 1420 coupled tobus 1418.Communication interface 1420 provides a two-way data communication coupling via a network link 1421 to alocal network 1422. For example, ifcommunication interface 1420 is an integrated services digital network (ISDN) card or a modem,communication interface 1420 provides a data communication connection to the corresponding type of telephone line, which comprises part of network link 1421. Ifcommunication interface 1420 is a local area network (LAN) card,communication interface 1420 provides a data communication connection via network link 1421 to a compatible LAN. Wireless links are also possible. In any such implementation,communication interface 1420 sends and receives electrical, electromagnetic or optical signals which carry digital data streams representing various types of information. - Network link1421 typically provides data communication through one or more networks to other data devices. For example, network link 1421 may provide a connection through
local network 1422 tolocal server computer 1423 or to data equipment operated by an Internet Service Provider (ISP) 1424.ISP 1424 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet” 1425.Local network 1422 andInternet 1425 both use electrical, electromagnetic or optical signals which carry digital data streams. The signals through the various networks and the signals on network link 1421 and throughcommunication interface 1420, which carry the digital data to and fromcomputer 1400, are exemplary forms of carrier waves transporting the information. -
Computer 1400 can send messages and receive data, including program code, through the network(s), network link 1421, andcommunication interface 1420. In the Internet example,remote server computer 1426 might transmit a requested code for an application program throughInternet 1425,ISP 1424,local network 1422 andcommunication interface 1420. - The received code may be executed by
processor 1413 as it is received, and/or stored inmass storage 1412, or other non-volatile storage for later execution. In this manner,computer 1400 may obtain application code in the form of a carrier wave. - Application code may be embodied in any form of computer program product. A computer program product comprises a medium configured to store or transport computer readable code, or in which computer readable code may be embedded. Some examples of computer program products are CD-ROM disks, ROM cards, floppy disks, magnetic tapes, computer hard drives, servers on a network, and carrier waves.
- The computer systems described above are for purposes of example only. An embodiment of the invention may be implemented in any type of computer system or programming or processing environment.
- Thus, a method and apparatus for managing classfiles on a device without a file system has been described in conjunction with one or more specific embodiments. The invention is defined by the claims and their full scope of equivalents.
Claims (42)
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/158,121 US6366898B2 (en) | 1998-09-21 | 1998-09-21 | Method and apparatus for managing classfiles on devices without a file system |
PCT/US1999/020079 WO2000017783A2 (en) | 1998-09-21 | 1999-09-01 | Method and apparatus for managing classfiles on devices without a file system |
AU58007/99A AU5800799A (en) | 1998-09-21 | 1999-09-01 | Method and apparatus for managing classfiles on devices without a file system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/158,121 US6366898B2 (en) | 1998-09-21 | 1998-09-21 | Method and apparatus for managing classfiles on devices without a file system |
Publications (2)
Publication Number | Publication Date |
---|---|
US20010044790A1 true US20010044790A1 (en) | 2001-11-22 |
US6366898B2 US6366898B2 (en) | 2002-04-02 |
Family
ID=22566763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/158,121 Expired - Lifetime US6366898B2 (en) | 1998-09-21 | 1998-09-21 | Method and apparatus for managing classfiles on devices without a file system |
Country Status (3)
Country | Link |
---|---|
US (1) | US6366898B2 (en) |
AU (1) | AU5800799A (en) |
WO (1) | WO2000017783A2 (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020188935A1 (en) * | 2001-06-11 | 2002-12-12 | William Hertling | Runtime updating of virtual machine class files |
EP1367487A1 (en) * | 2002-05-30 | 2003-12-03 | Schlumberger Systèmes | Remote application correction |
US20110072049A1 (en) * | 2009-09-21 | 2011-03-24 | Java Information Technology Ltd. | Dynamic Process Management System for Processing Data in Various Environments |
US10095508B2 (en) | 2014-09-25 | 2018-10-09 | Oracle International Corporation | System and method for supporting dynamic deployment of executable code in a distributed computing environment |
US10129361B2 (en) * | 2015-07-01 | 2018-11-13 | Oracle International Corporation | System and method for multi-version remote function execution control in a distributed computing environment |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6658492B1 (en) * | 1998-03-20 | 2003-12-02 | Sun Microsystems, Inc. | System and method for reducing the footprint of preloaded classes |
US6466972B1 (en) * | 1999-03-31 | 2002-10-15 | International Business Machines Corporation | Server based configuration of network computers via machine classes |
US6446111B1 (en) * | 1999-06-18 | 2002-09-03 | Epicrealm Operating Inc. | Method and apparatus for client-server communication using a limited capability client over a low-speed communications link |
US6662212B1 (en) * | 1999-08-31 | 2003-12-09 | Qualcomm Incorporated | Synchronization of a virtual workspace using E-mail extensions |
US6633758B1 (en) * | 1999-11-16 | 2003-10-14 | Nokia Corporation | Methods and devices for operational modes in communication devices being modified with application specific parameters and operational modes automatically launching applications or commands |
CA2327222A1 (en) * | 1999-12-03 | 2001-06-03 | Research In Motion Limited | Virtual machine web browser |
US7085810B1 (en) * | 2000-05-31 | 2006-08-01 | International Business Machines Corporation | Dynamic command sets in a computer messaging system in a method, system and program |
AU2001284970A1 (en) * | 2000-08-14 | 2002-02-25 | Transvirtual Technologies, Inc. | Portable operating environment for information devices |
GB2367727B (en) * | 2000-10-07 | 2002-10-09 | Complementary Tech Ltd | Communications with remote embedded applications |
US7113963B1 (en) * | 2000-11-10 | 2006-09-26 | Palmsource, Inc. | Optimized database technique to enable faster data synchronization |
DE10105454A1 (en) * | 2001-02-07 | 2002-08-29 | Bosch Gmbh Robert | Procedure for the automatic addition of software |
KR100371189B1 (en) * | 2001-02-20 | 2003-02-06 | 엘지전자 주식회사 | Architecture and method for multi-download of mobile communication terminal |
US6862614B2 (en) * | 2001-02-20 | 2005-03-01 | Gemplus | Adaptation of service applications to heterogeneous execution context by means of smart cards |
US20020116396A1 (en) * | 2001-02-22 | 2002-08-22 | Christopher Somers | System for providing electronic contact information from a central source and method for updating contact information |
US6765596B2 (en) * | 2001-02-27 | 2004-07-20 | International Business Machines Corporation | Multi-functional application launcher with integrated status |
US20020169940A1 (en) * | 2001-04-12 | 2002-11-14 | Kyler Daniel B. | System and method for using memory mapping to scan a master file table |
JP2002318692A (en) * | 2001-04-19 | 2002-10-31 | Sony Corp | Installation support system, installation support device, installation support method, program for supporting installation and recording medium in which the same program is recorded |
US20020161828A1 (en) * | 2001-04-30 | 2002-10-31 | Michael Edison | System and method for communicating with a device |
US6760908B2 (en) | 2001-07-16 | 2004-07-06 | Namodigit Corporation | Embedded software update system |
US20030055911A1 (en) * | 2001-09-17 | 2003-03-20 | Peterson Erik Lawrence | System and method for retrieving data over a network |
US6993760B2 (en) * | 2001-12-05 | 2006-01-31 | Microsoft Corporation | Installing software on a mobile computing device using the rollback and security features of a configuration manager |
US7080093B2 (en) * | 2002-01-14 | 2006-07-18 | Sun Microsystems, Inc. | System and method for database design |
JP3932477B2 (en) * | 2002-01-29 | 2007-06-20 | ソニー株式会社 | Information processing system, information processing apparatus and method, and program |
US20040075679A1 (en) * | 2002-04-25 | 2004-04-22 | Carter Kris O. | Guest interface appliance |
US20060190984A1 (en) * | 2002-09-23 | 2006-08-24 | Credant Technologies, Inc. | Gatekeeper architecture/features to support security policy maintenance and distribution |
US7437752B2 (en) * | 2002-09-23 | 2008-10-14 | Credant Technologies, Inc. | Client architecture for portable device with security policies |
US7665118B2 (en) * | 2002-09-23 | 2010-02-16 | Credant Technologies, Inc. | Server, computer memory, and method to support security policy maintenance and distribution |
US7665125B2 (en) * | 2002-09-23 | 2010-02-16 | Heard Robert W | System and method for distribution of security policies for mobile devices |
US20100100437A1 (en) | 2002-09-24 | 2010-04-22 | Google, Inc. | Suggesting and/or providing ad serving constraint information |
DE102004041395A1 (en) * | 2004-08-26 | 2006-03-09 | Siemens Ag | Create dynamic web content |
US20070005579A1 (en) * | 2005-07-01 | 2007-01-04 | Microsoft Corporation | Query based synchronization |
US8528107B1 (en) * | 2005-09-19 | 2013-09-03 | Vmware, Inc. | Enforcing restrictions related to a virtualized computer environment |
US8037467B2 (en) * | 2007-10-26 | 2011-10-11 | International Business Machines Corporation | Single stream processing with multi-version support of application operating environments |
US8301756B2 (en) * | 2008-01-30 | 2012-10-30 | Oracle Financial Services Software Limited | Method and system for providing support for software applications |
US8813041B2 (en) * | 2008-02-14 | 2014-08-19 | Yahoo! Inc. | Efficient compression of applications |
US11809839B2 (en) | 2022-01-18 | 2023-11-07 | Robert Lyden | Computer language and code for application development and electronic and optical communication |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5848274A (en) * | 1996-02-29 | 1998-12-08 | Supercede, Inc. | Incremental byte code compilation system |
US5999972A (en) * | 1996-07-01 | 1999-12-07 | Sun Microsystems, Inc. | System, method and article of manufacture for a distributed computer system framework |
WO1998040805A2 (en) | 1997-02-27 | 1998-09-17 | Siebel Systems, Inc. | Method of synchronizing independently distributed software and database schema |
US6038572A (en) * | 1997-04-23 | 2000-03-14 | Sun Microsystems, Inc. | Method and apparatus for localizing nodes in a garbage collected carded heap |
US5983348A (en) * | 1997-09-10 | 1999-11-09 | Trend Micro Incorporated | Computer network malicious code scanner |
US5958013A (en) * | 1997-09-11 | 1999-09-28 | International Business Machines Corporation | Apparatus, methods and computer program products for conducting a persistent session with a host-based application |
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 |
US6182119B1 (en) * | 1997-12-02 | 2001-01-30 | Cisco Technology, Inc. | Dynamically configurable filtered dispatch notification system |
US6018628A (en) * | 1998-06-16 | 2000-01-25 | Sun Microsystems, Inc. | Method of implementing parameterized types to be compatible with existing unparameterized libraries |
US6092120A (en) * | 1998-06-26 | 2000-07-18 | Sun Microsystems, Inc. | Method and apparatus for timely delivery of a byte code and serialized objects stream |
-
1998
- 1998-09-21 US US09/158,121 patent/US6366898B2/en not_active Expired - Lifetime
-
1999
- 1999-09-01 AU AU58007/99A patent/AU5800799A/en not_active Abandoned
- 1999-09-01 WO PCT/US1999/020079 patent/WO2000017783A2/en active Application Filing
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020188935A1 (en) * | 2001-06-11 | 2002-12-12 | William Hertling | Runtime updating of virtual machine class files |
US8205193B2 (en) * | 2001-06-11 | 2012-06-19 | Hewlett-Packard Development Company, L.P. | Runtime updating of virtual machine class files |
WO2003103155A2 (en) * | 2002-05-03 | 2003-12-11 | Schlumberger Systemes | Remote application correction |
EP1367487A1 (en) * | 2002-05-30 | 2003-12-03 | Schlumberger Systèmes | Remote application correction |
WO2003103155A3 (en) * | 2002-05-30 | 2005-05-26 | Axalto Sa | Remote application correction |
US20110072049A1 (en) * | 2009-09-21 | 2011-03-24 | Java Information Technology Ltd. | Dynamic Process Management System for Processing Data in Various Environments |
US10095508B2 (en) | 2014-09-25 | 2018-10-09 | Oracle International Corporation | System and method for supporting dynamic deployment of executable code in a distributed computing environment |
US10129361B2 (en) * | 2015-07-01 | 2018-11-13 | Oracle International Corporation | System and method for multi-version remote function execution control in a distributed computing environment |
Also Published As
Publication number | Publication date |
---|---|
WO2000017783A9 (en) | 2000-08-24 |
WO2000017783A3 (en) | 2000-07-20 |
AU5800799A (en) | 2000-04-10 |
US6366898B2 (en) | 2002-04-02 |
WO2000017783A2 (en) | 2000-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6366898B2 (en) | Method and apparatus for managing classfiles on devices without a file system | |
US6412021B1 (en) | Method and apparatus for performing user notification | |
AU769976B2 (en) | Method and apparatus for automatically optimizing execution of a computer program | |
US6353926B1 (en) | Software update notification | |
US6513158B1 (en) | Method and apparatus for running multiple java applications simultaneously | |
US6859213B1 (en) | Method and apparatus for selecting attachments | |
US5805811A (en) | Dynamic electronic mail facility for applications executing in an integrated operating environment | |
US6429882B1 (en) | User interface component | |
US6954930B2 (en) | Remote validation of installation input data | |
US6880129B1 (en) | Method and apparatus for using name spaces in a graphical user interface | |
US6327701B2 (en) | Method and apparatus for finding bugs related to garbage collection in a virtual machine | |
US20020188941A1 (en) | Efficient installation of software packages | |
US20030037328A1 (en) | Extending installation suites to include topology of suite's run-time environment | |
US20030079052A1 (en) | Method and apparatus for a platform independent plug-in | |
US20060156315A1 (en) | Method, computer-readable medium and apparatus for providing a graphical user interface in a client-server environment | |
US20030018964A1 (en) | Object model and framework for installation of software packages using a distributed directory | |
US20030056029A1 (en) | Method and apparatus for customizing Java API implementations | |
WO2000052572A1 (en) | A computer implemented method | |
US20010005201A1 (en) | A computer system using a processor interfacing with multiple displays | |
EP1669866A2 (en) | Management method for managing software module and information processor | |
US7319948B2 (en) | Blocking access to selected APIs | |
KR100194703B1 (en) | Default Hierarchical Object Loader and Object Display Method | |
Helal | Pervasive java | |
US6637021B1 (en) | JavaBean activation framework-common desktop environment bridge | |
US7114153B2 (en) | Method and apparatus for continuation-passing in a virtual machine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: SUN MICROSYSTEMS, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:TAIVALSAARI, ANTERO;BUSH, WILLIAM;REEL/FRAME:009508/0405 Effective date: 19980921 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
FPAY | Fee payment |
Year of fee payment: 12 |
|
AS | Assignment |
Owner name: ORACLE AMERICA, INC., CALIFORNIA Free format text: MERGER AND CHANGE OF NAME;ASSIGNORS:ORACLE USA, INC.;SUN MICROSYSTEMS, INC.;ORACLE AMERICA, INC.;REEL/FRAME:037278/0625 Effective date: 20100212 |