The recent explosion of the popularity of the World Wide Web (“Web” for short, and hereinafter referred to in the lower case as “web” in the context of an adjective or adverb, e.g., web pages) has made the Internet one of the most important media for mass communication. The Web is used for many applications such as information retrieval, personal communication, and electronic commerce and has been rapidly adopted by a fast growing number of Internet users in a large part of the world.
Using the Web, users can access remote information by receiving web pages through the Hypertext Transfer Protocol (HTTP). The information in a web page is described using the Hypertext Markup Language (HTML) and eXtensive Markup Language (XML), and is displayed by software called web browser. Web pages of earlier design are considered static because they do not include any logic that can dynamically change their appearances or provide computations based on user input. Subsequently, the Java™ (Sun Microsystems) programming language was incorporated in web pages in the form of applets. An applet is a small Java™ program that can be sent along with a web page to a user. Java™ applets can perform interactive animation, immediate calculations, or other simple tasks without having to send a user request back to the server, thereby providing the dynamic logic in web pages.
Java™ is an object-oriented programming language which can be used for creating stand-alone applications. Writing Java™ programs typically requires different and more extensive skills and training than composing web pages. The learning curve for writing Java™ programs is typically longer than that for writing web pages. Not all web page authors therefore are expert Java™ programmers.
Recently, to make it easier to embed logic in web pages, an easy-to-write script language called JavaScript™ (Sun Microsystems) has been supported by popular web browsers to be incorporated into web pages. JavaScript™, capable of embedding logic for computation based on user input, brings dynamic and powerful capabilities to web pages. JavaScript™, unlike Java™ which is a full-fledged programming language, has a simpler syntax and is much easier to learn. Because of this easy-to-write feature, JavaScript™ has currently become a popular way to embed logic in web pages by many web page authors.
Although JavaScript™ brings easy-to-write logic to web pages, it is limited to browser functions and works with HTML elements only. It can only be used to create simple applications under the contexts of the browser, such as changing the web page's visual presentation dynamically and computing user input quickly without sending a user request back to the server (for such computation). Thus, web pages with JavaScript™ logic cannot be used to create stand-alone applications that require access to a full range of resources on the user's computer such as the file system management and the display area beyond the browser's window. In general, web pages cannot be processed in non-browser contexts.
At the present, stand-alone applications are typically written in traditional programming languages (also called 3GL for 3rd Generation Languages) such as C, C++, and Java™, or Fourth Generation Languages (4GL) such as Visual Basic™. Through these languages, stand-alone applications interact directly with operating systems through operating system APIs (application programming interfaces) or indirectly with library functions which may in turn call these operating system APIs. The capability of accessing the operating system APIs gives an application the control of computing resources in a computer.
If web pages had embedded logic that could access a whole range of computing resources enabled by these operating system APIs, they could then be used to develop stand-alone applications just like any of the aforementioned 3GL and 4GL languages. Using web pages to develop stand-alone applications would have many advantages. First, web page authors who do not possess the skill and experience in writing 3GL/4GL applications could develop stand-alone applications using the web page technology they profess.
Secondly, the web technology components that can process the visual presentation language (e.g., HTML), the data modeling language (e.g., XML), and the communication protocol (e.g., HTTP) are available in most computers, which can connect to the Internet through the Web. This would provide an advantage in that using web pages to develop applications, a developer could very efficiently integrate these components. This is because, whereas 3GL/4GL applications can integrate these components programmatically, web pages could integrate them declaratively through languages such as HTML and XML. In general, the shorter learning curve and development time of web pages, as compared with 3GL/4GL programs, would result in a shorter time and lower cost in the development of software applications. The present invention addresses this issue by providing methods and apparatus in a software system that manage the life-cycle of software applications, which are composed of web pages that are not limited to the browser contexts and that have access to the full range of operating system resources.
Another issue of the processing of computer software addressed by the present invention is the software installation process. Typically, the installation of a software application is achieved by a special-purpose program which comes with this software and is written only for the purpose of installing this software. This is evident in the existence of a “setup.exe” or “install.exe” program in almost all software packages for PCs (personal computers). This method of software installation means that developers for each software application have to write a specific install program just to install their software.
In general, an install program for an application needs to configure a list of settings that are used to establish a proper environment or context for this application before it can be properly installed. These settings may include, for example, the basic operating system setup such as the registry entries, location setup such as the directory or folder in which the application is to be stored, link setup such as the short-cut link to this application, the graphic setup such as the icon of this application, and the dependency setup such as other applications that this application depends on for execution.
To properly setup each setting, e.g., one of the aforementioned settings, the install program typically takes the determined value of this setting and processes an action specific to this setting. For example, the registry entry setup action may be to add the determined registry entry values to the proper registry files, whereas the dependency setup action may be to investigate if all applications that the application to be installed depends on are already installed and, if not, to display an error message. Typically, the value of a setting is either determined by user input during the installation process, such as the directory where the application is to be stored, or predetermined by the install program, such as the list of applications that its application depends on.
In general, an install program first configures each setting by determining its value (by user input or pre-configuration) and then invokes the setup action for this setting. Because applications may have a different set of pre-configured setting values, each application requires a unique install program. Furthermore, if a new version of an application changes the value of one of its install settings, such as a new icon, the install program for this application has to be rewritten to incorporate this new value.
It would be advantageous to the application developers if they did not need to write a new install program for each new version of an application they develop. Instead, it would be desirable, for each version of an application, to construct a list of install settings with pre-configured values for this application using a data modeling language such as XML, which could be provided together with this application for installation. This way, a standardized install program would then be deployed by the user's computer to decode the install settings and values and conduct proper installation for this application based on these values. This standardized install program could then be used to install all applications whose install settings and values are modeled by a language understood by this install program. With many applications installed using a standardized install program, the users would also have a consistent experience in the installation process for all these applications.
The present invention addresses this issue by providing methods and apparatus of software installation in which a standardized install manager exists in a computer system to perform the installation process for all software applications whose install settings and values are modeled by a language understood by this install program.
Yet another issue of today's computer software addressed by the present invention is the security management of software applications. Traditional stand-alone applications based on programming languages such as C and C++ typically have access to all the operating system resources through the calling of operating system APIs. In this case, the security context, i.e., the limit of system resource access, for these applications is the entire system. Based on this security context, it is possible that an application can, inadvertently or maliciously, damage not only its own data but those of other applications that share the same computer system.
In a virtual machine environment, such as the Java™ Virtual Machine, the security context of an application (such a Java™ program) is defined by the virtual machine. A misbehaving application thus can only create external damage allowable by the virtual machine. However, there can be many different types of applications running on the same virtual machine and while each one of them may have a different security need, they are forced to run under the same security context (that defined by the virtual machine).
It would be advantageous if each application had its own security context that is predetermined by the system management policy. Thus, based on its level of security risk, an application could be associated with a security context which regulates the system resources to which this application can or cannot access. This way, a misbehaving program in an application with a restrictive security context would cause minimum damage to the system as a whole. The present invention addresses this issue by providing methods and apparatus of a computer system in which each application has its own security context.
Yet another issue of today's computer software addressed by the present invention is the web cache system for software applications. Web caching is traditionally performed by the web browsers and web proxies whose primary tasks include transmitting web objects over the network. Web pages in the context of a web browser contain hyperlinks to web objects through textual or graphic anchors. The user requests a web object from a web page when this page is displayed by the web browser and the user selects, through the mouse or other pointing mechanism, the anchor of this object.
When a web object is requested through a web browser with the web caching feature, the web browser first checks to see if the object exists in its cache. If so, this object in the browser's cache is returned to the request web page. If the object does not exist in the browser's cache, the browser uses the Uniform Resource Locator (URL) of this object to locate its location in the Internet and retrieves it through a data transfer protocol such as HTTP. When the browser receives this object, it typically displays this object while storing a copy in its cache.
Applications accessing web objects could be composed using web pages. However, if web pages are processed in the context of the browser, the web objects requested by them in a client computer can only be cached by the browser in the computer. In other word, in a client computer, web page based applications under the browser contexts use only the browser's cache for web caching.
Different web applications however may access web objects with different characteristics. For example, one web application may access web objects that rarely change over time whereas another may access web objects that change highly frequently. It would be advantageous to deploy a sizable space to cache static web objects for the first application while little or no space for the second because any cached objects will be outdated immediately. In general, it would be advantageous that each application has its own web cache.
Furthermore, traditional web caching by browsers only cache web objects of certain types that are defined in HTTP. Some applications may need to retrieve objects from the Web with types not defined in HTTP. Examples of object types not defined by HTTP may include executable files, spreadsheet files, and documents with proprietary structures. Caching these non-HTTP-defined objects could provide a performance advantage to applications that retrieve objects of these types through the Web.
The present invention addresses the issue of web caching for applications by providing methods and apparatus to provide each web application a separate cache for both the HTTP-defined and non-HTTP-defined objects from the Web.