US20060031833A1 - Methods and apparatus for a web application processing system - Google Patents

Methods and apparatus for a web application processing system Download PDF

Info

Publication number
US20060031833A1
US20060031833A1 US11/245,828 US24582805A US2006031833A1 US 20060031833 A1 US20060031833 A1 US 20060031833A1 US 24582805 A US24582805 A US 24582805A US 2006031833 A1 US2006031833 A1 US 2006031833A1
Authority
US
United States
Prior art keywords
web
application
install
applications
computer system
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.)
Abandoned
Application number
US11/245,828
Inventor
Yun-Wu Huang
Robert Johnson
Sean Martin
Simon Martin
Moshe Matsa
Roger Pollak
John Ponzo
Ronald Woan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to US11/245,828 priority Critical patent/US20060031833A1/en
Publication of US20060031833A1 publication Critical patent/US20060031833A1/en
Assigned to SAMSUNG ELECTRONICS CO., LTD. reassignment SAMSUNG ELECTRONICS CO., LTD. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: INTERNATIONAL BUSINESS MACHINES CORPORATION
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • G06F9/45512Command shells
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms

Definitions

  • the present invention relates generally to the field of software systems that manage the life-cycle of software applications, e.g., installation, configuration, resource management, security management, execution, and de-installation, and, more particularly, to methods and apparatus for processing of web applications that are written in the form of web pages which can be downloaded through the Internet using web communication protocols, installed in local computers, and executed utilizing web components, such as a web browser and JavaScriptTM interpreter, in the local computers.
  • software applications e.g., installation, configuration, resource management, security management, execution, and de-installation
  • web components such as a web browser and JavaScriptTM interpreter
  • Web World Wide Web
  • web in the lower case as “web” in the context of an adjective or adverb, e.g., web pages
  • 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.
  • HTML Hypertext Transfer Protocol
  • XML eXtensive Markup Language
  • 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.
  • JavaTM Sun Microsystems
  • An applet is a small JavaTM program that can be sent along with a web page to a user. JavaTM 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.
  • JavaTM is an object-oriented programming language which can be used for creating stand-alone applications. Writing JavaTM programs typically requires different and more extensive skills and training than composing web pages. The learning curve for writing JavaTM programs is typically longer than that for writing web pages. Not all web page authors therefore are expert JavaTM programmers.
  • JavaScriptTM Small Microsystems
  • JavaScriptTM capable of embedding logic for computation based on user input, brings dynamic and powerful capabilities to web pages.
  • JavaScriptTM unlike JavaTM which is a full-fledged programming language, has a simpler syntax and is much easier to learn. Because of this easy-to-write feature, JavaScriptTM has currently become a popular way to embed logic in web pages by many web page authors.
  • JavaScriptTM 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).
  • web pages with JavaScriptTM 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.
  • web pages cannot be processed in non-browser contexts.
  • stand-alone applications are typically written in traditional programming languages (also called 3GL for 3rd Generation Languages) such as C, C++, and JavaTM, or Fourth Generation Languages (4GL) such as Visual BasicTM.
  • 3GL 3rd Generation Languages
  • 4GL Fourth Generation 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.
  • operating system APIs application programming interfaces
  • 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.
  • 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.
  • the web technology components that can process the visual presentation language e.g., HTML
  • the data modeling language e.g., XML
  • the communication protocol e.g., HTTP
  • HTML visual presentation language
  • XML data modeling language
  • HTTP communication protocol
  • web pages could integrate them declaratively through languages such as HTML and XML.
  • 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.
  • 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.
  • 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.
  • the install program typically takes the determined value of this setting and processes an action specific to this setting.
  • the registry entry setup action may be to add the determined registry entry values to the proper registry files
  • 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.
  • 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.
  • 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.
  • 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.
  • the security context of an application (such a JavaTM program) is defined by the virtual machine.
  • a misbehaving application thus can only create external damage allowable by the virtual machine.
  • each application had its own security context that is predetermined by the system management policy.
  • 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.
  • 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.
  • the web browser 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.
  • URL Uniform Resource Locator
  • Different web applications 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.
  • 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.
  • the present invention is directed to a system in which applications are written as web pages that have access to the full range of operating system resources, including those not accessible through the web browser.
  • the applications described in the present invention are called web applications.
  • three types of languages used for constructing web pages are used for building web applications. They are: (1) a visual presentation language; (2) a data modeling language; and (3) a scripting language for embedding logic.
  • a visual presentation language used for building web applications. They are: (1) a visual presentation language; (2) a data modeling language; and (3) a scripting language for embedding logic.
  • HTML for visual presentation
  • XML for data modeling
  • JavaScriptTM for scripting.
  • a software system is provided to allow a computer to install and process web applications.
  • This system preferably comprises a web application manager, an operating system interface module, a scripting language interpreter, and optionally a web browser and/or a data modeling language processor.
  • the web application manager manages the life-cycle for applications, which may include the installation, execution, de-installation of these applications, as well as the security control and web caching for these applications.
  • the script language interpreter (such as the JavaScriptTM interpreter) parses and interprets the scripting language embedded in the web pages.
  • the operating system interface module is used to convert the scripting language calls that request access to system resources into appropriate native operating system APIs.
  • the web browser can be used to display the content of web applications and transfer data based on the data transfer protocol deployed by the browser (such as HTTP).
  • the data modeling language processor (such as the XML parser) decodes the contents in the web applications that are written in the data modeling language (such as XML).
  • the scripting language used in Web pages that are typically restricted to the web browser functions can be extended to include function calls that access system resources normally beyond the limit of browser functions.
  • function calls that access system resources normally beyond the limit of browser functions.
  • the operating system interface module can accept an extended scripting language function call that access operating system resources beyond the browser contexts and, based on the type of this function call, execute code that includes calls to the native operating system APIs.
  • the Web application manager can manage installation for all web applications by invoking its install manager module.
  • the install manager To install a web application, the install manager first obtains a copy of this application and the install document associated with this application.
  • the install manager can obtain the application and its install document by a network download process through the Web or other data transfer protocols.
  • the install document for a web application contains a set of install settings and their values, which are modeled in language understood by the install manager.
  • the install document for a web application can be written by the creator of this application.
  • the install manager decodes the settings and their values in the install document of this application, and configures each setting based on its value accordingly.
  • the web application manager can conduct security control for a web application based on the security context of this application.
  • the security context of a web application is the limits of access to the operating system resources this application is restricted to.
  • the security context of an application can be modeled with a list of security settings for this application. Each security setting regulates the behavior of its host application in terms of a specific security feature.
  • the security context of a web application can be pre-configured by the creator or supplier of this application, and obtained by the user together with its application when this application is downloaded for installation.
  • the security context of a web application can also be modified by the administrator of a software system in which this application is deployed.
  • the web application manager can check each setting in the security context of this application to ensure that no security rules, based on the settings configured in the security context of this application, are violated at any time while this application is running.
  • the web application manager can create a web cache for each application it installs.
  • the cacheable web objects include both the HTTP-defined objects and non-HTTP-defined ones.
  • the two types of web objects can be stored in two different pools of the same cache for an application.
  • the settings of the cache for an application can be pre-configured and obtained together with this application by a client computer. They can also be modified by the administrator of the system in which their application is installed.
  • the scripting language used in web pages that are typically restricted to the web browser functions can be extended to include function calls that manage the web cache for each application.
  • typical cache APIs may include the search, insertion, and deletion of an object, as well as the reset of the whole cache.
  • the web application manager when the web application manager executes an extended cache management API for a Web application, it checks the cache settings for this application and may take proper cache management action to ensure that these cache settings are not violated.
  • FIG. 1 is an example of an architecture of a server or a client of the present invention
  • FIG. 2 is an example of an architecture of a web application of the present invention
  • FIG. 3 is an example of an architecture of a web application process system of the present invention.
  • FIG. 4 is an example of a web application manager process of the present invention.
  • FIG. 5 is an example of a visual presentation process of the present invention.
  • FIG. 6 is an example of a data model process of the present invention.
  • FIG. 7 is an example of a script process of the present invention.
  • FIG. 8 is an example of an operating system interface process of the present invention.
  • FIG. 9 is an example of an install document of the present invention.
  • FIG. 10 is an example of an architecture of a system deploying the install manager of the present invention.
  • FIG. 11 is an example of a process of obtaining or updating an install document of the present invention.
  • FIG. 12 is an example of a dependency install process of the present invention.
  • FIG. 13 is an example of a security context for traditional applications
  • FIG. 14 is an example of a security context for virtual machine based applications
  • FIG. 15 is an example of a security context for applications managed by a system of the present invention.
  • FIG. 16 is an example of a security manager process of the present invention.
  • FIG. 17 is an example of an architecture of a web caching system of traditional web applications
  • FIG. 18 is an example of the architecture of a web caching system for web applications of the present invention.
  • FIG. 19 is an example of a web caching management process utilizing a web browser caching mechanism of the present invention.
  • FIG. 20 is an example of a web caching management process for web applications of the present invention to manage their own caches
  • This computing device can be, for example, a PC (personal computer), a workstation, or a mainframe, and may typically include elements such as: one or more processors, e.g., CPUs (central processing units) 101 ; input and output devices 103 such as a keyboard, a mouse and a screen monitor; main memory 104 such as RAM (random access memory); and storage memory 102 such as disks. These elements are interconnected through a bus 105 on which information can travel.
  • the main memory 104 stores code being executed by the CPU and the storage memory 102 serves as the permanent storage for the systems (such as the operating system), the applications (such as the software system of the present invention), as well as the data.
  • processor as used herein is intended to include any processing device such as, for example, one that includes a CPU (as illustrated in FIG. 1 ) and/or other processing circuitry.
  • memory as used herein is more generally intended to include memory associated with a processor or CPU, such as, for example, RAM (as illustrated in FIG. 1 ), ROM, a fixed memory device such as a hard disk (as illustrated in FIG. 1 ), a removable memory device (e.g., diskette), flash memory, etc.
  • input and output devices as used herein is more generally intended to include any computer-based input and output devices, for example, one or more input devices, e.g., keyboard and mouse (as illustrated in FIG. 1 ), for entering data to the processing unit, and/or one or more output devices, e.g., display monitor (as illustrated in FIG. 1 ) and/or printer, for presenting results associated with the processing unit.
  • input devices e.g., keyboard and mouse (as illustrated in FIG. 1 )
  • output devices e.g., display monitor (as illustrated in FIG. 1 ) and/or printer, for presenting results associated with the processing unit.
  • processor may refer to more than one processing device and that various elements associated with a processing device may be shared by other processing devices.
  • software components including instructions or code for performing the methodologies of the invention, as described herein, may be stored in one or more of the associated memory devices (e.g., ROM, fixed or removable memory) and, when ready to be utilized, loaded in part or in whole (e.g., into RAM) and executed by a CPU.
  • ROM read-only memory
  • RAM random access memory
  • a web application 201 comprises one or more web pages 202 .
  • each web page 202 of a web application 201 contains text composed in any combinations of three types of languages: a visual presentation language 203 , a script language 204 and a data modeling language 205 .
  • the visual presentation language is used to provide a graphic user interface (GUI) on the browser window. It can be used to visually present the text or linked objects (such as a voice or a graphic file), to receive user input, and transfer data to and from a remote host through web browser.
  • GUI graphic user interface
  • HTML HyperText Markup Language
  • HTTP HyperText Transfer Protocol
  • the script interpreter is used to parse and interpret the text of the web page that is written in a script language.
  • a script language Those skilled in the art will appreciate that currently the most commonly used script language in web pages is JavaScript. Script in a web page provides a way to embed logic that creates dynamic visual displays or conducts immediate computations when its web page is processed.
  • Traditional script language used in web pages is limited to the browser functions and HTML elements.
  • the script language used in a web application of the present invention can be extended to contain function calls that have access to a full range of operating system resources, including those beyond the browser contexts (details depicted in FIGS. 4 and 8 ).
  • the data modeling language is used to describe certain data in web applications such that their structures and definitions of data elements inside them can be easily applied by other applications that understand the same language and uses the same definitions for data elements. This way no specialized code is needed to decode data received from other applications.
  • XML the most common language used for data modeling on the Web is XML.
  • FIG. 3 depicts an overall software system architecture of a preferred embodiment of the present invention.
  • the software system having the features of the present invention comprises five software components. They are the web application manager 302 , the web browser 303 , the operating system interface module 304 , the script interpreter 305 and the data modeling language parser 306 .
  • the four modules 303 through 306 can directly access operating system 307 resources by calling the operating system APIs (depicted as the four links between block 307 and the four modules 303 through 306 , respectively).
  • the web application manager 302 is the top-level module that executes web applications by driving the other four modules. It does so by taking a web application 301 as input and executes the various language codes in this application's web pages and invokes the other four modules ( 303 through 306 ).
  • FIG. 4 provides a more detailed depiction of the process of the web application manager.
  • a driving class can create an instance of a driven class and calls the methods associated with this driven class to invoke the behavior of the former.
  • the driven modules can be invoked by the driving module through the API functions provided by the former.
  • the web application manager executes a web application by first reading the language code in the web pages of this application (step 401 ), and does not terminate (block 403 ) until all code has been processed (step 402 ). For each unit of code read, the web application manager determines the language type of this code (step 404 ).
  • the web application invokes the visual presentation process (step 405 ) that takes this code as input. If the language type of this code is the data modeling language, the web application manager invokes the data modeling process (step 406 ) that takes this code as the input. If the language type is the script language, the web application manager invokes the script process (step 407 ) that takes this code as input.
  • step 405 When the visual presentation process (step 405 ) and the data modeling process (step 406 ) terminate, they return control back to the web application manager and indicate to the latter if an exception has occurred (step 410 ). If so, the web application manager invokes the exception handling process (step 411 ) and then terminates this execution (block 403 ). If no exception occurs, the web application manager goes on to read the next code unit (step 401 ).
  • step 407 When the script process (step 407 ) terminates and returns control back to the web application manager, it returns information about the script code it just processed in terms of whether this script code belongs to the original script language under the browser contexts; or it is extended code based on the features of the present invention to have access to a full range of operating system APIs (step 408 ). If this script code is part of the original web page script language, it had already been parsed, decoded, and executed by the script interpreter (module 305 in FIG. 3 ) in the script process (step 407 ). In this case, in this embodiment exemplified in FIG. 4 , the web application goes on to check if an exception has occurred (step 410 ).
  • this script code is an extended call, then it has been parsed, decoded, but not executed by the script interpreter (module 305 in FIG. 3 ) in the script process (step 407 ). Instead, the decoded information of this script code is passed to the operating system interface process (step 409 ) for execution.
  • the operating system interface process step 409 ) completes the execution for this script, it returns control back to the web application manager which then checks for an exception (step 410 ) and processes the exception handling process (step 411 ) if an exception has occurred, or, if not, goes on to read the next code unit (step 401 ).
  • step 405 The details of the visual presentation process (step 405 ), the data modeling process (step 406 ), the script process (step 407 ) and the operating system interface process (step 408 ) are explained below in the context of FIGS. 5, 6 , 7 and 8 , respectively.
  • FIG. 5 is a detailed depiction of the visual presentation process (step 405 in FIG. 4 ).
  • the visual presentation process takes, as input, visual presentation code and checks to see if this code incurs any violations against the system policy as manifested by security and cache settings of the web application currently being executed (step 501 ).
  • security and cache settings of the web application currently being executed For example, one security setting for an application may regulate that it can only link to a fixed external URL (uniform resource locator). If in the visual presentation process of an HTML code of this application, a link different from that in the aforementioned setting exists, then this link causes a violation.
  • the visual presentation process If a violation occurs (step 502 ), the visual presentation process generates an exception (step 503 ) and then returns this exception to the web application management process (step 505 ) depicted in FIG. 4 .
  • exceptions can be implemented in various ways, including for example using error codes and using objects of the object-oriented model to represent exceptions. If the input visual presentation code causes no violations, the visual presentation process passes this code to the web browser module for execution (step 504 ).
  • the web browser module ( 303 in FIG. 3 ) can be the web browser software available in most computers in the world.
  • the most popular web browsers are NetscapeTM and Microsoft's Internet ExploreTM. These two web browsers serve as client programs that use the HTTP to make requests of web servers throughout the Internet on behalf of the browser user. They also provide a graphic user interface to display the retrieved web objects and to interact with the user by accepting user input.
  • these two browser software packages can be incorporated by a software system using various methods, including for example linking and invoking APIs calls they provide or incorporating their source code for compilation.
  • the web application manager incorporates web browser software and drives it based on the processes depicted in FIGS. 3 and 4 .
  • FIG. 6 is a detailed depiction of the data modeling process (step 406 in FIG. 4 ).
  • the data modeling process takes, as input, data modeling code (step 601 ) and runs the data modeling module ( 306 in FIG. 3 ) to decode the data types and values encoded in the input data modeling code (step 602 ). After the data modeling module is completed, the data modeling process returns control back to the web application manager (step 603 ).
  • the data modeling module processing (step 602 ) in this embodiment of FIG. 6 may therefore correspond to an XML parser. Similar to the web browser software, various versions of XML parser software are available to be incorporated by a software system using the aforementioned methods in incorporating the web browser software.
  • FIG. 7 is a detailed depiction of the script process (step 407 in FIG. 4 ).
  • the script process takes a script code as input, then parses and interprets this code ( 701 ). If the code is a function call, the script process checks to see if this function is a standard function that is under the web browser contexts or an extended function created based on the features of the present invention to access the operating system resources beyond the browser contexts (step 702 ). If the function being interpreted is a standard function, the script process executes it (step 703 ). If it is an extended function, without executing it, the script process checks to see if this function call would cause any violations against any management policies (step 704 ).
  • an extended function can cause a management policy violation by requesting operating system resources that are configured by the system management to be beyond the access of the underlying web application.
  • the administrator of a software system having the features of the present invention can set a limit of disk storage quota for a specific application.
  • an extended script function call requests to allocate disk space that exceeds the disk quota for this application, this call then causes a management policy violation.
  • step 705 if a violation occurs (step 705 ), the script process generates an exception for this violation (step 706 ). Next, the script process terminates and returns control back to the web application manager (step 707 ).
  • the parsing and interpreting process (step 701 ) and the executing step (step 703 ) in the script processing of this preferred embodiment of FIG. 7 may therefore correspond to the parsing, interpreting and executing processes of the JavaScript software.
  • the JavaScript software can be incorporated by a software system using the aforementioned methods in incorporating the web browser software, and modified such that when an extended function call is parsed and interpreted, instead of attempting to execute this call, it returns and gives the information about this call to the web application manager, which then uses the information about this call as input and calls the operating system interface process (step 409 in FIG. 4 ) to execute it.
  • the operating system interface process (step 409 in FIG. 4 ) that is called by the web application manager to execute an extended script call is shown.
  • the operating system interface process takes an input which is information of an extended script function call (step 801 ) and, for each extended script call, it executes a regular code that was written with the native operating system APIs to perform the task of its associated script call (step 802 ).
  • the operating system interface process returns control to the web application manager (step 803 ).
  • FIG. 9 depicts an example 901 of an install document of an application used in accordance with the present invention to properly install this application.
  • the install document of an application may include, but is not limited to, general information, various required components, dependency information, registry information, short cut information, storage quota, and security settings of this application.
  • the general information of an application may include, for example, the Global Unique ID, title, author, description, versions of this application.
  • the required components of an application may include, for example, the icon of this application, HTML pages, scripts, and other documents required to run this application.
  • the dependency information of an application may include, for example, all applications that this application depends on in order to execute.
  • the registry information of an application may include, for example, all registry entries required for this application to execute properly.
  • the short cuts for an application may include, for example, the directory or the location in the storage management system in which this application is to be stored, as well as all the links in the operating system graphic user interface from which the icon of this application is visible and can be used to directly invoke the running of this application.
  • the storage quota for an application may include, for example, information that limits the maximum disk space which this application may use.
  • the security information for an application may include, for example, the abilities of this application to access operating system resources, such as, for example, the abilities to spawn new processes, to connect to certain external hosts, to execute dynamic link library calls, to access file I/O (inputs/outputs), to create short-cuts and to access network and interface ports.
  • the install document may also include pre-install and post-install scripts which are logic in the form of scripting language that is required to execute before and after the installation, respectively.
  • FIG. 10 depicts an example of the tasks performed by an install manager of the present invention.
  • the install manager or program 1003 of the present invention takes two inputs: the application to be installed (block 1001 ) and the install document for this application (block 1002 ).
  • the install program 1003 sets up each setting in the install document of this application (e.g., general information, components, dependency, etc.) in order to establish an operating system environment or context 1004 under which this application can be properly executed.
  • FIG. 11 is an example depicting how the install manager 1103 having the features of the present invention can be deployed to create or update an install document 1104 for an application.
  • an install document 1104 for an application can be downloaded from a network such as the Internet 1101 . It can also be installed through storage media such as diskettes or CD-ROMs 1102 .
  • the install manager can also provide a graphic interface 1105 for the system administrator 1106 to configure an existing install document 1104 .
  • the install document for an application can be written in a data modeling language such as XML that is widely used for modeling electronic documents.
  • the install manager first checks the install document of the application to be installed (step 1201 ) to see if any applications this target application depends on are no yet installed (step 1202 ). If an application the target application depends on is not installed, the install manager may display a message about the “depended” application and ask for the user's confirmation to install this “depended” application first (step 1204 ). If the user confirms (step 1206 ), the install manager may go to the network to retrieve and install this “depended” application or asks the user to enter the proper portable storage media such as diskettes or CD-ROMs to install it (step 1207 ).
  • the install manager terminates the installation process (step 1205 ). If all applications that the target application depends on are installed (step 1202 ), the install manager installs the target application (step 1203 ) before it terminates the installation process (step 1205 ).
  • FIG. 13 depicts the security context of traditional applications, e.g., applications written in traditional 3GL/4GL programming languages.
  • the security context of a traditional application is the limits of access to the operating system resources this application is restricted to.
  • Traditional applications typically call operating system APIs to access operating system resources.
  • traditional applications 1301 can call file I/O APIs to access the file system 1302 . They can call network APIs to access the operating system's network services 1303 .
  • the applications may call process APIs to request operating system's process management services 1304 . They can also call other operating systems' APIs to access other services provided by the operating systems.
  • the security context for an application is the entire operating system 1305 .
  • FIG. 14 depicts the security context of virtual machine (VM) based applications. As depicted in FIG. 14 , direct calling of operating system 1406 APIs from the applications is eliminated. Instead, applications 1401 request system resources through calls made to the virtual machine 1402 . It is the virtual machine 1402 that makes the operating systems' APIs access operating system services such as the file system 1403 , network services 1404 , process services 1405 , and other operating system services on behalf of the applications.
  • VM virtual machine
  • the security context of an application (such as a JavaTM program) is therefore defined by the virtual machine.
  • a misbehaving application thus can only create external damage allowable by the virtual machine.
  • FIG. 15 an example of an architecture of a security management system of the present invention is shown.
  • applications each may have a unique list of security settings that define the security context for each application.
  • the security context for application 1 ( 1503 ) is defined by security settings 1 ( 1504 );
  • the security context for application 2 ( 1502 ) is defined by security settings 2 ( 1505 );
  • the security context for application 3 ( 1503 ) is defined by security settings 3 ( 1506 ).
  • applications calls that request operating system 1511 resources from the applications go through the application manager 1507 for security filtering.
  • the application manager 1507 checks the security settings of this application ( 1504 ) and makes sure that this call does not violate any of the security settings before it can be executed.
  • the security filtered calls may then be passed onto the APIs associated with the file system 1508 , the network services 1509 and the process services 1510 of the operating system 1511 .
  • FIG. 16 depicts a security filtering process of the application manager ( 1507 in FIG. 15 ) having the features of the present invention.
  • the application manager first receives a call from an application (step 1601 ). Next, it checks the security settings of this application for this call (step 1602 ).
  • step 1603 the application manager may initiate a security exception handling step (step 1604 ) before it terminates the process (step 1606 ) without executing this call.
  • a typical action to handle an exception may be to display an error message and then exit the processing for the application that caused this exception.
  • step 1605 the application manager processes this call by executing operating system APIs (step 1605 ) before it terminates the process (step 1606 ).
  • FIG. 17 an architecture is shown of a web caching system deployed by state-of-the-art browsers in processing applications which comprise web pages.
  • a user 1707 may use the browser 1704 to process applications ( 1701 , 1702 ), such as a web-based online purchasing application, or to simply display Web pages.
  • the web caching system in this model is based on one cache 1705 for all HTTP web objects displayed through this browser 1704 .
  • the browser when the user requests a HTTP web object through the web browser 1704 , the browser first checks its cache 1705 to see if the requested web object exists in the cache (as shown, the web browser and cache are associated with operating system 1706 ). If so, the browser retrieves this object from the cache. If not, the browser goes to the source host of this object on the Internet 1703 and retrieves it through the Internet. In this case, the browser may also insert this newly retrieved object in its cache.
  • certain strategies may be used to remove objects from the cache that are deemed out of date.
  • One strategy may be to retrieve the meta-data from the Internet source of the requested object and compare that with the meta-data of the same data in the cache to determine if the cached one is outdated.
  • Another strategy may be to set a time window and to re-retrieve or to process the meta-data comparison based on the above strategy for any objects that have been cached longer than this time window.
  • a third strategy may be to do nothing and only to retrieve an object through the Internet if it is not found in the cache or when the user requests so by pressing the Reload button on the browser screen.
  • cache coherency algorithms are not a feature of the present invention, hence any reasonable cache coherency algorithm can be deployed by a web caching system of the present invention, as explained below in the context of FIG. 18 .
  • FIG. 18 depicts an architecture of a web caching system of the present invention.
  • web objects 1801
  • the web application manager For each web application ( 1802 or 1803 ), the web application manager creates a separate web cache ( 1807 or 1808 ).
  • the web cache for an application contains two pools, one for HTTP objects and the other one for non-HTTP objects.
  • the web application manager runs a separate copy of the web browser software ( 1805 or 1806 ) for each web application, and uses the web browser's web caching system to cache HTTP objects for each application.
  • browser software can be incorporated by the present invention using various methods, including for example linking and invoking APIs calls they provide or incorporating their source code for compilation.
  • the web application manager can be developed with the capabilities to create and manage a cache for HTTP objects for each application without the incorporation of the browser's caching system.
  • the web application manager provides cache management APIs to web applications to let them manage their own caches for non-HTTP objects.
  • Each web application can manage a separate cache for non-HTTP web objects by issuing these cache management APIs.
  • the web application manager may then, on behalf of the application issuing these calls, conduct cache management tasks directly using the native operating system 1809 APIs.
  • FIG. 19 depicts an example of an HTTP web object retrieval process of a web application manager having the features of the present invention.
  • the web application manager first receives a request for an HTTP web object from an application (step 1901 ).
  • the web application manager invokes web browser software to retrieve this HTTP web object (step 1902 ).
  • the web browser will retrieve this HTTP web object by first checking its web cache 1907 . If the web browser returns an exception in retrieving this object (step 1903 ), the web application manager invokes the exception handling process (step 1904 ) before it terminates the process (step 1906 ). If no exception occurred (step 1903 ), the web application manager sends the object returned by the browser to the requesting application (step 1905 ) and then terminates the process (step 1906 ).
  • FIG. 20 depicts a process of the web application manager of the present invention that executes non-HTTP web object cache management APIs.
  • a web application manages its own non-HTTP web object cache by calling cache management APIs.
  • the web application manager upon receiving a cache management API call (step 2001 ), the web application manager first checks to see if this API call will result in any violations against the cache settings for the application that issues this call (step 2002 ). For example, a cache violation may be caused by a cache management API requesting space for its non-HTTP object cache that will result in the total storage space for the whole application exceeding that allowed for this application.
  • step 2003 the web application manager invokes the exception handling process (step 2004 ) to handle this violation.
  • a typical action may be to display an error message and then exit the processing for the application that caused this error.
  • step 2003 the web application manager processes this API by executing native operating system APIs (step 2005 ) that directly manage the non-HTTP object cache 2008 for this application.
  • step 2006 the exception handling process is invoked (step 2004 ). Otherwise, the API processing is complete and the process terminates (step 2007 ).

Abstract

A software system is provided to allow a computer to install and process web applications according to the invention. Such web applications are written as web pages that have access to the full range of operating system resources, including those not accessible through a web browser. Preferably, a web application is built using three types of languages used for constructing web pages, namely: (a) a visual presentation language; (2) a data modeling language; and (3) a scripting language for embedding logic. The software system preferably comprises a web application manager, an operating system interface module, a scripting language interpreter, and optionally a web browser and/or a data modeling language processor. Various other features such as data caching and security filtering are provided in accordance with such a system.

Description

    CROSS-REFERENCE TO RELATED APPLICATION(S)
  • This application is a continuation of U.S. application Ser. No. 09/633,037 filed on Aug. 4, 2000, which claims the benefit of U.S. Provisional Application Ser. No. 60/156,872 filed on Sep. 30, 1999, the disclosures of which are incorporated herein by reference.
  • FIELD OF THE INVENTION
  • The present invention relates generally to the field of software systems that manage the life-cycle of software applications, e.g., installation, configuration, resource management, security management, execution, and de-installation, and, more particularly, to methods and apparatus for processing of web applications that are written in the form of web pages which can be downloaded through the Internet using web communication protocols, installed in local computers, and executed utilizing web components, such as a web browser and JavaScript™ interpreter, in the local computers.
  • BACKGROUND OF THE INVENTION
  • 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.
  • SUMMARY OF THE INVENTION
  • In accordance with the aforementioned needs, the present invention is directed to a system in which applications are written as web pages that have access to the full range of operating system resources, including those not accessible through the web browser. The applications described in the present invention are called web applications. In a preferred embodiment of the present invention, three types of languages used for constructing web pages are used for building web applications. They are: (1) a visual presentation language; (2) a data modeling language; and (3) a scripting language for embedding logic. Those skilled in the art will appreciate that currently the three most commonly used languages in web pages are HTML for visual presentation, XML for data modeling, and JavaScript™ for scripting.
  • According to the present invention, a software system is provided to allow a computer to install and process web applications. This system preferably comprises a web application manager, an operating system interface module, a scripting language interpreter, and optionally a web browser and/or a data modeling language processor. The web application manager manages the life-cycle for applications, which may include the installation, execution, de-installation of these applications, as well as the security control and web caching for these applications. The script language interpreter (such as the JavaScript™ interpreter) parses and interprets the scripting language embedded in the web pages. The operating system interface module is used to convert the scripting language calls that request access to system resources into appropriate native operating system APIs. The web browser can be used to display the content of web applications and transfer data based on the data transfer protocol deployed by the browser (such as HTTP). The data modeling language processor (such as the XML parser) decodes the contents in the web applications that are written in the data modeling language (such as XML).
  • According to one feature of the present invention, the scripting language used in Web pages that are typically restricted to the web browser functions can be extended to include function calls that access system resources normally beyond the limit of browser functions. Those skilled in the art will appreciate that screen display outside of the browser window and general file system management are two examples of the types of system resources beyond browser's control.
  • According to yet another feature of the present invention, the operating system interface module can accept an extended scripting language function call that access operating system resources beyond the browser contexts and, based on the type of this function call, execute code that includes calls to the native operating system APIs.
  • According to yet another feature of the present invention, the Web application manager can manage installation for all web applications by invoking its install manager module. To install a web application, the install manager first obtains a copy of this application and the install document associated with this application. In a preferred embodiment of the present invention, the install manager can obtain the application and its install document by a network download process through the Web or other data transfer protocols. The install document for a web application contains a set of install settings and their values, which are modeled in language understood by the install manager. The install document for a web application can be written by the creator of this application. When installing this application, the install manager decodes the settings and their values in the install document of this application, and configures each setting based on its value accordingly.
  • According to yet another feature the present invention, the web application manager can conduct security control for a web application based on the security context of this application. According to the present invention, the security context of a web application is the limits of access to the operating system resources this application is restricted to. The security context of an application can be modeled with a list of security settings for this application. Each security setting regulates the behavior of its host application in terms of a specific security feature. In a preferred embodiment of the present invention, the security context of a web application can be pre-configured by the creator or supplier of this application, and obtained by the user together with its application when this application is downloaded for installation. In this preferred embodiment, the security context of a web application can also be modified by the administrator of a software system in which this application is deployed. According to the present invention, when a web application is being executed, the web application manager can check each setting in the security context of this application to ensure that no security rules, based on the settings configured in the security context of this application, are violated at any time while this application is running.
  • According to yet another feature of the present invention, the web application manager can create a web cache for each application it installs. The cacheable web objects include both the HTTP-defined objects and non-HTTP-defined ones. In a preferred embodiment of the present invention, the two types of web objects can be stored in two different pools of the same cache for an application. The settings of the cache for an application can be pre-configured and obtained together with this application by a client computer. They can also be modified by the administrator of the system in which their application is installed.
  • According to yet another feature of the present invention, the scripting language used in web pages that are typically restricted to the web browser functions can be extended to include function calls that manage the web cache for each application. Those skilled in the art will appreciate that typical cache APIs may include the search, insertion, and deletion of an object, as well as the reset of the whole cache.
  • According to yet another feature of the present invention, when the web application manager executes an extended cache management API for a Web application, it checks the cache settings for this application and may take proper cache management action to ensure that these cache settings are not violated.
  • These and other objects, features and advantages of the present invention will become apparent from the following detailed description of illustrative embodiments thereof, which is to be read in connection with the accompanying drawings.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is an example of an architecture of a server or a client of the present invention;
  • FIG. 2 is an example of an architecture of a web application of the present invention;
  • FIG. 3 is an example of an architecture of a web application process system of the present invention;
  • FIG. 4 is an example of a web application manager process of the present invention;
  • FIG. 5 is an example of a visual presentation process of the present invention;
  • FIG. 6 is an example of a data model process of the present invention;
  • FIG. 7 is an example of a script process of the present invention;
  • FIG. 8 is an example of an operating system interface process of the present invention;
  • FIG. 9 is an example of an install document of the present invention;
  • FIG. 10 is an example of an architecture of a system deploying the install manager of the present invention;
  • FIG. 11 is an example of a process of obtaining or updating an install document of the present invention;
  • FIG. 12 is an example of a dependency install process of the present invention;
  • FIG. 13 is an example of a security context for traditional applications;
  • FIG. 14 is an example of a security context for virtual machine based applications;
  • FIG. 15 is an example of a security context for applications managed by a system of the present invention;
  • FIG. 16 is an example of a security manager process of the present invention;
  • FIG. 17 is an example of an architecture of a web caching system of traditional web applications;
  • FIG. 18 is an example of the architecture of a web caching system for web applications of the present invention;
  • FIG. 19 is an example of a web caching management process utilizing a web browser caching mechanism of the present invention;
  • FIG. 20 is an example of a web caching management process for web applications of the present invention to manage their own caches;
  • DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS
  • Referring initially to FIG. 1, an example is shown of a computing device that is capable of implementing the features of the present invention. This computing device can be, for example, a PC (personal computer), a workstation, or a mainframe, and may typically include elements such as: one or more processors, e.g., CPUs (central processing units) 101; input and output devices 103 such as a keyboard, a mouse and a screen monitor; main memory 104 such as RAM (random access memory); and storage memory 102 such as disks. These elements are interconnected through a bus 105 on which information can travel. As is known, the main memory 104 stores code being executed by the CPU and the storage memory 102 serves as the permanent storage for the systems (such as the operating system), the applications (such as the software system of the present invention), as well as the data.
  • More generally, it is to be appreciated that the term “processor” as used herein is intended to include any processing device such as, for example, one that includes a CPU (as illustrated in FIG. 1) and/or other processing circuitry. The term “memory” as used herein is more generally intended to include memory associated with a processor or CPU, such as, for example, RAM (as illustrated in FIG. 1), ROM, a fixed memory device such as a hard disk (as illustrated in FIG. 1), a removable memory device (e.g., diskette), flash memory, etc. In addition, the term “input and output devices” as used herein is more generally intended to include any computer-based input and output devices, for example, one or more input devices, e.g., keyboard and mouse (as illustrated in FIG. 1), for entering data to the processing unit, and/or one or more output devices, e.g., display monitor (as illustrated in FIG. 1) and/or printer, for presenting results associated with the processing unit. It is also to be understood that the term “processor” may refer to more than one processing device and that various elements associated with a processing device may be shared by other processing devices. Accordingly, software components including instructions or code for performing the methodologies of the invention, as described herein, may be stored in one or more of the associated memory devices (e.g., ROM, fixed or removable memory) and, when ready to be utilized, loaded in part or in whole (e.g., into RAM) and executed by a CPU.
  • Referring now to FIG. 2, an example is shown of a web application of the present invention. As shown, a web application 201 comprises one or more web pages 202. In a preferred embodiment of the present invention, each web page 202 of a web application 201 contains text composed in any combinations of three types of languages: a visual presentation language 203, a script language 204 and a data modeling language 205.
  • The visual presentation language is used to provide a graphic user interface (GUI) on the browser window. It can be used to visually present the text or linked objects (such as a voice or a graphic file), to receive user input, and transfer data to and from a remote host through web browser. Those skilled in the art will appreciate that currently the most commonly used visual presentation language for browsers is HTML and the data transfer protocol used by browsers is HTTP.
  • The script interpreter is used to parse and interpret the text of the web page that is written in a script language. Those skilled in the art will appreciate that currently the most commonly used script language in web pages is JavaScript. Script in a web page provides a way to embed logic that creates dynamic visual displays or conducts immediate computations when its web page is processed. Traditional script language used in web pages is limited to the browser functions and HTML elements. According to a feature of the present invention, the script language used in a web application of the present invention can be extended to contain function calls that have access to a full range of operating system resources, including those beyond the browser contexts (details depicted in FIGS. 4 and 8).
  • The data modeling language is used to describe certain data in web applications such that their structures and definitions of data elements inside them can be easily applied by other applications that understand the same language and uses the same definitions for data elements. This way no specialized code is needed to decode data received from other applications. Those skilled in the art will appreciated that currently the most common language used for data modeling on the Web is XML.
  • FIG. 3 depicts an overall software system architecture of a preferred embodiment of the present invention. In this embodiment, the software system having the features of the present invention comprises five software components. They are the web application manager 302, the web browser 303, the operating system interface module 304, the script interpreter 305 and the data modeling language parser 306. As depicted in FIG. 3, the four modules 303 through 306 can directly access operating system 307 resources by calling the operating system APIs (depicted as the four links between block 307 and the four modules 303 through 306, respectively). The web application manager 302 is the top-level module that executes web applications by driving the other four modules. It does so by taking a web application 301 as input and executes the various language codes in this application's web pages and invokes the other four modules (303 through 306). FIG. 4 provides a more detailed depiction of the process of the web application manager.
  • Those skilled in the art will appreciate that there are a number of ways for one software module to drive other software modules. For example, in an object-oriented approach, with all modules modeled as classes, a driving class can create an instance of a driven class and calls the methods associated with this driven class to invoke the behavior of the former. In a non-object-oriented approach, the driven modules can be invoked by the driving module through the API functions provided by the former.
  • Referring now to FIG. 4, the process of the web application manager is shown. As depicted in FIG. 4, the web application manager executes a web application by first reading the language code in the web pages of this application (step 401), and does not terminate (block 403) until all code has been processed (step 402). For each unit of code read, the web application manager determines the language type of this code (step 404).
  • If the language type of this code is visual presentation language, the web application invokes the visual presentation process (step 405) that takes this code as input. If the language type of this code is the data modeling language, the web application manager invokes the data modeling process (step 406) that takes this code as the input. If the language type is the script language, the web application manager invokes the script process (step 407) that takes this code as input.
  • When the visual presentation process (step 405) and the data modeling process (step 406) terminate, they return control back to the web application manager and indicate to the latter if an exception has occurred (step 410). If so, the web application manager invokes the exception handling process (step 411) and then terminates this execution (block 403). If no exception occurs, the web application manager goes on to read the next code unit (step 401).
  • When the script process (step 407) terminates and returns control back to the web application manager, it returns information about the script code it just processed in terms of whether this script code belongs to the original script language under the browser contexts; or it is extended code based on the features of the present invention to have access to a full range of operating system APIs (step 408). If this script code is part of the original web page script language, it had already been parsed, decoded, and executed by the script interpreter (module 305 in FIG. 3) in the script process (step 407). In this case, in this embodiment exemplified in FIG. 4, the web application goes on to check if an exception has occurred (step 410). If this script code is an extended call, then it has been parsed, decoded, but not executed by the script interpreter (module 305 in FIG. 3) in the script process (step 407). Instead, the decoded information of this script code is passed to the operating system interface process (step 409) for execution. When the operating system interface process (step 409) completes the execution for this script, it returns control back to the web application manager which then checks for an exception (step 410) and processes the exception handling process (step 411) if an exception has occurred, or, if not, goes on to read the next code unit (step 401). The details of the visual presentation process (step 405), the data modeling process (step 406), the script process (step 407) and the operating system interface process (step 408) are explained below in the context of FIGS. 5, 6, 7 and 8, respectively.
  • FIG. 5 is a detailed depiction of the visual presentation process (step 405 in FIG. 4). As depicted in FIG. 5, the visual presentation process takes, as input, visual presentation code and checks to see if this code incurs any violations against the system policy as manifested by security and cache settings of the web application currently being executed (step 501). For example, one security setting for an application may regulate that it can only link to a fixed external URL (uniform resource locator). If in the visual presentation process of an HTML code of this application, a link different from that in the aforementioned setting exists, then this link causes a violation.
  • If a violation occurs (step 502), the visual presentation process generates an exception (step 503) and then returns this exception to the web application management process (step 505) depicted in FIG. 4. Those skilled in the art can appreciate that exceptions can be implemented in various ways, including for example using error codes and using objects of the object-oriented model to represent exceptions. If the input visual presentation code causes no violations, the visual presentation process passes this code to the web browser module for execution (step 504).
  • The web browser module (303 in FIG. 3) can be the web browser software available in most computers in the world. The most popular web browsers are Netscape™ and Microsoft's Internet Explore™. These two web browsers serve as client programs that use the HTTP to make requests of web servers throughout the Internet on behalf of the browser user. They also provide a graphic user interface to display the retrieved web objects and to interact with the user by accepting user input. Those skilled in the art can appreciated that these two browser software packages can be incorporated by a software system using various methods, including for example linking and invoking APIs calls they provide or incorporating their source code for compilation. In a preferred embodiment of the present invention, the web application manager incorporates web browser software and drives it based on the processes depicted in FIGS. 3 and 4.
  • FIG. 6 is a detailed depiction of the data modeling process (step 406 in FIG. 4). As depicted in FIG. 6, the data modeling process takes, as input, data modeling code (step 601) and runs the data modeling module (306 in FIG. 3) to decode the data types and values encoded in the input data modeling code (step 602). After the data modeling module is completed, the data modeling process returns control back to the web application manager (step 603). Those skilled in the art will appreciate that currently the most commonly used data modeling language for web data is XML. The data modeling module processing (step 602) in this embodiment of FIG. 6 may therefore correspond to an XML parser. Similar to the web browser software, various versions of XML parser software are available to be incorporated by a software system using the aforementioned methods in incorporating the web browser software.
  • FIG. 7 is a detailed depiction of the script process (step 407 in FIG. 4). As depicted in FIG. 7, the script process takes a script code as input, then parses and interprets this code (701). If the code is a function call, the script process checks to see if this function is a standard function that is under the web browser contexts or an extended function created based on the features of the present invention to access the operating system resources beyond the browser contexts (step 702). If the function being interpreted is a standard function, the script process executes it (step 703). If it is an extended function, without executing it, the script process checks to see if this function call would cause any violations against any management policies (step 704).
  • In a preferred embodiment of the present invention, an extended function can cause a management policy violation by requesting operating system resources that are configured by the system management to be beyond the access of the underlying web application. For example, the administrator of a software system having the features of the present invention can set a limit of disk storage quota for a specific application. During an execution of this application, if an extended script function call requests to allocate disk space that exceeds the disk quota for this application, this call then causes a management policy violation.
  • As depicted in FIG. 7, if a violation occurs (step 705), the script process generates an exception for this violation (step 706). Next, the script process terminates and returns control back to the web application manager (step 707).
  • Those skilled in the art will appreciated that currently the most commonly used scripting language for web pages is JavaScript. The parsing and interpreting process (step 701) and the executing step (step 703) in the script processing of this preferred embodiment of FIG. 7 may therefore correspond to the parsing, interpreting and executing processes of the JavaScript software. Similar to the web browser software, the JavaScript software can be incorporated by a software system using the aforementioned methods in incorporating the web browser software, and modified such that when an extended function call is parsed and interpreted, instead of attempting to execute this call, it returns and gives the information about this call to the web application manager, which then uses the information about this call as input and calls the operating system interface process (step 409 in FIG. 4) to execute it.
  • Referring now to FIG. 8, the operating system interface process (step 409 in FIG. 4) that is called by the web application manager to execute an extended script call is shown. As depicted in FIG. 8, the operating system interface process takes an input which is information of an extended script function call (step 801) and, for each extended script call, it executes a regular code that was written with the native operating system APIs to perform the task of its associated script call (step 802). After the processing of the native operating system APIs for executing the script function call, the operating system interface process returns control to the web application manager (step 803).
  • FIG. 9 depicts an example 901 of an install document of an application used in accordance with the present invention to properly install this application. As depicted by FIG. 9, the install document of an application may include, but is not limited to, general information, various required components, dependency information, registry information, short cut information, storage quota, and security settings of this application.
  • Those skilled in the art will appreciate that the general information of an application may include, for example, the Global Unique ID, title, author, description, versions of this application. The required components of an application may include, for example, the icon of this application, HTML pages, scripts, and other documents required to run this application. The dependency information of an application may include, for example, all applications that this application depends on in order to execute. The registry information of an application may include, for example, all registry entries required for this application to execute properly. The short cuts for an application may include, for example, the directory or the location in the storage management system in which this application is to be stored, as well as all the links in the operating system graphic user interface from which the icon of this application is visible and can be used to directly invoke the running of this application. The storage quota for an application may include, for example, information that limits the maximum disk space which this application may use. The security information for an application may include, for example, the abilities of this application to access operating system resources, such as, for example, the abilities to spawn new processes, to connect to certain external hosts, to execute dynamic link library calls, to access file I/O (inputs/outputs), to create short-cuts and to access network and interface ports. The install document may also include pre-install and post-install scripts which are logic in the form of scripting language that is required to execute before and after the installation, respectively.
  • FIG. 10 depicts an example of the tasks performed by an install manager of the present invention. As depicted by FIG. 10, to install an application, the install manager or program 1003 of the present invention takes two inputs: the application to be installed (block 1001) and the install document for this application (block 1002). Next, the install program 1003 sets up each setting in the install document of this application (e.g., general information, components, dependency, etc.) in order to establish an operating system environment or context 1004 under which this application can be properly executed.
  • FIG. 11 is an example depicting how the install manager 1103 having the features of the present invention can be deployed to create or update an install document 1104 for an application. As depicted by FIG. 11, an install document 1104 for an application can be downloaded from a network such as the Internet 1101. It can also be installed through storage media such as diskettes or CD-ROMs 1102. The install manager can also provide a graphic interface 1105 for the system administrator 1106 to configure an existing install document 1104. Those skilled in the art will appreciate that the install document for an application can be written in a data modeling language such as XML that is widely used for modeling electronic documents.
  • Referring now to FIG. 12, the dependency installation feature of an install manager of the present invention is shown. As depicted in FIG. 12, the install manager first checks the install document of the application to be installed (step 1201) to see if any applications this target application depends on are no yet installed (step 1202). If an application the target application depends on is not installed, the install manager may display a message about the “depended” application and ask for the user's confirmation to install this “depended” application first (step 1204). If the user confirms (step 1206), the install manager may go to the network to retrieve and install this “depended” application or asks the user to enter the proper portable storage media such as diskettes or CD-ROMs to install it (step 1207). If the user declines to install this “depended” application, the install manager terminates the installation process (step 1205). If all applications that the target application depends on are installed (step 1202), the install manager installs the target application (step 1203) before it terminates the installation process (step 1205).
  • FIG. 13 depicts the security context of traditional applications, e.g., applications written in traditional 3GL/4GL programming languages. The security context of a traditional application is the limits of access to the operating system resources this application is restricted to. Traditional applications typically call operating system APIs to access operating system resources. As depicted by FIG. 13, traditional applications 1301 can call file I/O APIs to access the file system 1302. They can call network APIs to access the operating system's network services 1303. For process management, the applications may call process APIs to request operating system's process management services 1304. They can also call other operating systems' APIs to access other services provided by the operating systems. In general, in this type of system, the security context for an application is the entire operating system 1305.
  • In this security model, it is possible that a traditional application can, inadvertently or maliciously, damage not only its own data but those of other applications that share the same computer system through the call of operating system APIs.
  • FIG. 14 depicts the security context of virtual machine (VM) based applications. As depicted in FIG. 14, direct calling of operating system 1406 APIs from the applications is eliminated. Instead, applications 1401 request system resources through calls made to the virtual machine 1402. It is the virtual machine 1402 that makes the operating systems' APIs access operating system services such as the file system 1403, network services 1404, process services 1405, and other operating system services on behalf of the applications.
  • In a virtual machine environment, such as the Java™ Virtual Machine, the security context of an application (such as a Java™ program) is therefore 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).
  • Referring now to FIG. 15, an example of an architecture of a security management system of the present invention is shown. As depicted by the example in FIG. 15, instead of sharing one security context, applications each may have a unique list of security settings that define the security context for each application. In FIG. 15, the security context for application 1 (1503) is defined by security settings 1 (1504); the security context for application 2 (1502) is defined by security settings 2 (1505); and the security context for application 3 (1503) is defined by security settings 3 (1506).
  • Based on this preferred embodiment of the present invention, applications calls that request operating system 1511 resources from the applications go through the application manager 1507 for security filtering. For example, upon receiving a call from application 1 (1501), the application manager 1507 checks the security settings of this application (1504) and makes sure that this call does not violate any of the security settings before it can be executed. The security filtered calls may then be passed onto the APIs associated with the file system 1508, the network services 1509 and the process services 1510 of the operating system 1511.
  • FIG. 16 depicts a security filtering process of the application manager (1507 in FIG. 15) having the features of the present invention. As depicted by FIG. 16, the application manager first receives a call from an application (step 1601). Next, it checks the security settings of this application for this call (step 1602).
  • If a violation against the security settings exists for this call (step 1603), the application manager may initiate a security exception handling step (step 1604) before it terminates the process (step 1606) without executing this call. A typical action to handle an exception may be to display an error message and then exit the processing for the application that caused this exception. If no violations exist (step 1603), the application manager processes this call by executing operating system APIs (step 1605) before it terminates the process (step 1606).
  • Referring to FIG. 17, an architecture is shown of a web caching system deployed by state-of-the-art browsers in processing applications which comprise web pages. As depicted in FIG. 17, a user 1707 may use the browser 1704 to process applications (1701, 1702), such as a web-based online purchasing application, or to simply display Web pages. The web caching system in this model is based on one cache 1705 for all HTTP web objects displayed through this browser 1704.
  • Based on this model, when the user requests a HTTP web object through the web browser 1704, the browser first checks its cache 1705 to see if the requested web object exists in the cache (as shown, the web browser and cache are associated with operating system 1706). If so, the browser retrieves this object from the cache. If not, the browser goes to the source host of this object on the Internet 1703 and retrieves it through the Internet. In this case, the browser may also insert this newly retrieved object in its cache.
  • For web browsers and web proxies that deploy a conventional web caching system, such as the one depicted in FIG. 17, certain strategies may be used to remove objects from the cache that are deemed out of date. One strategy may be to retrieve the meta-data from the Internet source of the requested object and compare that with the meta-data of the same data in the cache to determine if the cached one is outdated. Another strategy may be to set a time window and to re-retrieve or to process the meta-data comparison based on the above strategy for any objects that have been cached longer than this time window. A third strategy may be to do nothing and only to retrieve an object through the Internet if it is not found in the cache or when the user requests so by pressing the Reload button on the browser screen.
  • It is to be appreciated that cache coherency algorithms are not a feature of the present invention, hence any reasonable cache coherency algorithm can be deployed by a web caching system of the present invention, as explained below in the context of FIG. 18.
  • FIG. 18 depicts an architecture of a web caching system of the present invention. As depicted in FIG. 18, web objects (1801) are retrieved via the Internet by the web application manager (1804). For each web application (1802 or 1803), the web application manager creates a separate web cache (1807 or 1808). In a preferred embodiment of the present invention, the web cache for an application contains two pools, one for HTTP objects and the other one for non-HTTP objects. In this preferred embodiment, the web application manager runs a separate copy of the web browser software (1805 or 1806) for each web application, and uses the web browser's web caching system to cache HTTP objects for each application. Those skilled in the art can appreciate that browser software can be incorporated by the present invention using various methods, including for example linking and invoking APIs calls they provide or incorporating their source code for compilation. Alternatively, the web application manager can be developed with the capabilities to create and manage a cache for HTTP objects for each application without the incorporation of the browser's caching system.
  • In a preferred implementation of the present invention, the web application manager provides cache management APIs to web applications to let them manage their own caches for non-HTTP objects. Each web application can manage a separate cache for non-HTTP web objects by issuing these cache management APIs. Upon receiving these API calls, the web application manager may then, on behalf of the application issuing these calls, conduct cache management tasks directly using the native operating system 1809 APIs.
  • FIG. 19 depicts an example of an HTTP web object retrieval process of a web application manager having the features of the present invention. As depicted by FIG. 19, the web application manager first receives a request for an HTTP web object from an application (step 1901). Next, the web application manager invokes web browser software to retrieve this HTTP web object (step 1902). The web browser will retrieve this HTTP web object by first checking its web cache 1907. If the web browser returns an exception in retrieving this object (step 1903), the web application manager invokes the exception handling process (step 1904) before it terminates the process (step 1906). If no exception occurred (step 1903), the web application manager sends the object returned by the browser to the requesting application (step 1905) and then terminates the process (step 1906).
  • FIG. 20 depicts a process of the web application manager of the present invention that executes non-HTTP web object cache management APIs. According to the present invention, a web application manages its own non-HTTP web object cache by calling cache management APIs. As depicted in FIG. 20, upon receiving a cache management API call (step 2001), the web application manager first checks to see if this API call will result in any violations against the cache settings for the application that issues this call (step 2002). For example, a cache violation may be caused by a cache management API requesting space for its non-HTTP object cache that will result in the total storage space for the whole application exceeding that allowed for this application.
  • If a violation occurs (step 2003), the web application manager invokes the exception handling process (step 2004) to handle this violation. A typical action may be to display an error message and then exit the processing for the application that caused this error. Next, if no violations occur (step 2003), the web application manager processes this API by executing native operating system APIs (step 2005) that directly manage the non-HTTP object cache 2008 for this application. Next, if any exceptions exist during the cache management (step 2006), the exception handling process is invoked (step 2004). Otherwise, the API processing is complete and the process terminates (step 2007).
  • Although illustrative embodiments of the present invention have been described herein with reference to the accompanying drawings, it is to be understood that the invention is not limited to those precise embodiments, and that various other changes and modifications may be made by one skilled in the art without departing from the scope or spirit of the invention.

Claims (34)

1. A method of installing web-based applications in a computer system, the method comprising the steps of:
obtaining a web-based application and an install document associated with the application, the install document including one or more installation settings and associated values specific to the application and the install document written in a particular data modeling language;
decoding the one or more installation settings and associated values of the install document;
establishing an operating system environment using the one or more decoded installation settings and associated values in which the application can be properly executed in accordance with the computer system; and
installing the application in the computer system.
2. The method of claim 1, wherein the install document includes at least one of general information, component information, dependency information, registry information, short cut information, storage quota information, security information, a pre-installation script and a post-installation script.
3. The method of claim 1, wherein the particular data modeling language in which the install document is modeled in is XML.
4. The method of claim 1, wherein the obtaining step comprises downloading the install document from a network.
5. The method of claim 1, wherein the obtaining step comprises retrieving the install document from the Internet.
6. The method of claim 1, wherein the obtaining step comprises obtaining the install document from a portable storage medium.
7. The method of claim 1, wherein at least one of the settings in the install document relates to dependency information indicating whether the application being installed depends on one or more other applications.
8. The method of claim 7, further comprising the step of configuring the dependency setting in the install document by: (i) determining whether the one or more other applications upon which the application depends have been previously installed; (ii) when the one or more other applications upon which the application depends have not been previously installed, installing the one or more applications before installing the application.
9. The method of claim 8, wherein the dependency setting configuration step further includes prompting a user to confirm or decline installation of the one or more other applications upon which the application depends, prior to installing the one or more other applications.
10. The method of claim 1, further comprising the step of permitting modification of the install document.
11. Apparatus for installing web-based applications in a computer system, the apparatus comprising:
at least one processor operative to: (i) obtain a web-based application and an install document associated with the application, the install document including one or more installation settings and associated values specific to the application and the install document written in a particular data modeling language; (ii) decode the one or more installation settings and associated values of the install document; (iii) establish an operating system environment using the one or more decoded installation settings and associated values in which the application can be properly executed in accordance with the computer system; and (iv) install the application in the computer system.
12. A software system for installing web-based applications in a computer system, the software system comprising:
an application installation manager operative to: (i) obtain a web-based application and an install document associated with the application, the install document including one or more installation settings and associated values specific to the application and the install document written in a particular data modeling language; (ii) decode the one or more installation settings and associated values of the install document; (iii) establish an operating system environment using the one or more decoded installation settings and associated values in which the application can be properly executed in accordance with the computer system; and (iv) install the application in the computer system.
13. Apparatus for providing security management with respect to web-based applications running on a computer system, the apparatus comprising:
at least one processor operative to: (i) obtain a set of security settings for each web-based application to be accessed on the computer system; and (ii) monitor whether the execution of each web-based application violates the security settings associated therewith.
14. The apparatus of claim 13, wherein each set of security settings is unique.
15. The apparatus of claim 13, wherein at least one of the web-based applications is composed of one or more web pages and has access to one or more non-web browser-based operating system resources associated with the computer system.
16. A software system for providing security management with respect to web-based applications running on a computer system, the software system comprising:
a set of security settings for each web-based application installed on the computer system; and
an application manager to: (i) obtain the set of security settings for each web-based application; and (ii) monitor whether the execution of each web-based application violates the security settings of the application.
17. The software system of claim 16, wherein each set of security settings is unique.
18. The software system of claim 16, wherein at least one of the web-based applications is composed of one or more web pages and has access to one or more non-web browser-based operating system resources associated with the computer system.
19. The software system of claim 16, wherein the security settings of an application may relate to one or more of: (i) a disk quota for the application; (ii) an ability to spawn processes; (iii) an ability to access certain external hosts; (iv) an ability to access certain operating system resources; (v) an ability to call dynamic link library calls; and (vi) an ability to create short-cuts.
20. The software system of claim 16, wherein the monitoring operation performed by the application manager comprises: (i) retrieving the security settings for the application to be processed; (ii) calling a script interpreter to parse each call in the application; (iii) for each call, checking the security settings of the application to determine whether a violation occurs; (iv) if a violation occurs, executing an exception handling process; (v) if no violation occurs, executing the call by one of calling the script interpreter or by calling one or more operating system application programming interfaces associated with the computer system.
21. The software system of claim 20, wherein a script associated with the application is JavaScript and the script interpreter is a JavaScript interpreter.
22. The software system of claim 16, further comprising a data modeling language parser such that the security settings can be encoded using a corresponding data modeling language.
23. The software system of claim 22, wherein the data modeling language is XML.
24. The software system of claim 16, wherein the application manager is further operative to permit modification of the sets of security settings.
25. Apparatus for providing cache management with respect to web-based applications running on a computer system, the apparatus comprising:
at least one processor operative to: (i) retrieve a web-based object from one of a network and a cache in response to a request from a web-based application running on the computer system; and (ii) provide a cache management application programming interface for managing a cache of non-web-based objects in response to a request from a web-based application running on the computer system.
26. The apparatus of claim 25, wherein the at least one processor is further operative to utilize a web browser to retrieve the requested web-based object from one of the network and the cache.
27. The apparatus of claim 25, wherein, in accordance with the at least one processor, the web-based application has a cache portion for maintaining web-based objects and a cache portion for maintaining non-web-based objects associated therewith.
28. The apparatus of claim 25, wherein the cache management application programming interface is implemented in accordance with a scripting language associated with a web-based application.
29. The apparatus of claim 28, wherein the scripting language is JavaScript.
30. A software system for providing cache management with respect to web-based applications running on a computer system, the software system comprising:
an application manager operative to: (i) retrieve a web-based object from one of a network and a cache in response to a request from a web-based application running on the computer system; and (ii) provide a cache management application programming interface for managing a cache of non-web-based objects in response to a request from a web-based application running on the computer system.
31. The software system of claim 30, wherein the application manager is further operative to utilize a web browser to retrieve the requested web-based object from one of the network and the cache.
32. The software system of claim 30, wherein, in accordance with the application manager, the web-based application has a cache portion for maintaining web-based objects and a cache portion for maintaining non-web-based objects associated therewith.
33. The software system of claim 30, wherein the cache management application programming interface is implemented in accordance with a scripting language associated with a web-based application.
34. The software system of claim 33, wherein the scripting language is JavaScript.
US11/245,828 1999-09-30 2005-10-07 Methods and apparatus for a web application processing system Abandoned US20060031833A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/245,828 US20060031833A1 (en) 1999-09-30 2005-10-07 Methods and apparatus for a web application processing system

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15687299P 1999-09-30 1999-09-30
US09/633,037 US6968539B1 (en) 1999-09-30 2000-08-04 Methods and apparatus for a web application processing system
US11/245,828 US20060031833A1 (en) 1999-09-30 2005-10-07 Methods and apparatus for a web application processing system

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US09/633,037 Continuation US6968539B1 (en) 1999-09-30 2000-08-04 Methods and apparatus for a web application processing system

Publications (1)

Publication Number Publication Date
US20060031833A1 true US20060031833A1 (en) 2006-02-09

Family

ID=35345105

Family Applications (2)

Application Number Title Priority Date Filing Date
US09/633,037 Expired - Lifetime US6968539B1 (en) 1999-09-30 2000-08-04 Methods and apparatus for a web application processing system
US11/245,828 Abandoned US20060031833A1 (en) 1999-09-30 2005-10-07 Methods and apparatus for a web application processing system

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US09/633,037 Expired - Lifetime US6968539B1 (en) 1999-09-30 2000-08-04 Methods and apparatus for a web application processing system

Country Status (1)

Country Link
US (2) US6968539B1 (en)

Cited By (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030212956A1 (en) * 2002-05-10 2003-11-13 Fujitsu Limited Program generating apparatus, program generating method and program generator
US20060026264A1 (en) * 2000-10-30 2006-02-02 Microsoft Corporation Shared object stores for a networked computer system
US20070198664A1 (en) * 2006-02-22 2007-08-23 Microsoft Corporation Multi-server automated redundant service configuration
WO2007097842A1 (en) * 2006-02-22 2007-08-30 Microsoft Corporation Integrated multi-server installation
WO2007097849A1 (en) * 2006-02-22 2007-08-30 Microsoft Corporation Integrated computer server imaging
US20080127175A1 (en) * 2006-11-01 2008-05-29 Microsoft Corporation Packaging software products as single-file executables containing scripting logic
US20080235352A1 (en) * 2007-03-22 2008-09-25 Microsoft Corporation Architecture for installation and hosting of server-based single purpose applications on clients
US20080301701A1 (en) * 2007-05-31 2008-12-04 Microsoft Corporation Detecting and modifying security settings for deploying web applications
US20080317042A1 (en) * 2007-06-22 2008-12-25 Palo Alto Research Center Incorporated Extensible framework for compatibility testing
US20090031346A1 (en) * 2007-07-26 2009-01-29 The Directv Group, Inc. Method and system for populating a menu structure on a user device
US20090099858A1 (en) * 2007-10-13 2009-04-16 Jeffs Alistair E Method and system for ordering content from a first device for a selected user device through an interactive interface
US20090100065A1 (en) * 2007-10-13 2009-04-16 Jeffs Alistair E Method and system for quickly recording linear content from an interactive interface
US20090099912A1 (en) * 2007-10-13 2009-04-16 Jeffs Alistair E Method and system for confirming the download of content at a user device
US20090099859A1 (en) * 2007-10-13 2009-04-16 Jeffs Alistair E Method and system for ordering and prioritizing the downloading of content from an interactive interface
US20090100477A1 (en) * 2007-10-13 2009-04-16 Jeffs Alistair E Method and system for ordering video content from a mobile device
US20090172702A1 (en) * 2007-09-28 2009-07-02 Xcerion Ab Network operating system
US20090178019A1 (en) * 2008-01-08 2009-07-09 Bahrs Paul J System and Method for Multi-Level Security Filtering of Model Representations
US20090199172A1 (en) * 2008-01-31 2009-08-06 Business Objects, S.A. Apparatus and method for importing language extension resources to support application execution
US20090232349A1 (en) * 2008-01-08 2009-09-17 Robert Moses High Volume Earth Observation Image Processing
US20100023953A1 (en) * 2008-07-25 2010-01-28 Samsung Electronic Co., Ltd. Method and apparatus for executing application
US20100057583A1 (en) * 2008-08-28 2010-03-04 The Directv Group, Inc. Method and system for ordering video content using a link
US20100057469A1 (en) * 2008-08-28 2010-03-04 The Directv Group, Inc. Method and system for ordering content using a voice menu system
KR100975163B1 (en) * 2002-04-08 2010-08-10 에어마그네트, 인코포레이티드 Monitoring a local area network
US20100242034A1 (en) * 2006-11-01 2010-09-23 Microsoft Corporation Distributing software products as an executable containing script logic with external resources
US20100319010A1 (en) * 2009-06-12 2010-12-16 International Business Machines Corporation Systems and Methods for Operating System Identification and Web Application Execution
KR101018907B1 (en) 2009-01-05 2011-03-02 주식회사 엘지유플러스 Apparatus and method of improving website access speed for mobile browser
US20110145786A1 (en) * 2009-12-15 2011-06-16 Microsoft Corporation Remote commands in a shell environment
CN102270129A (en) * 2010-06-07 2011-12-07 微软公司 Distributing software products as an executable containing script logic with external resources
US20120002243A1 (en) * 2010-06-30 2012-01-05 Canon Kabushiki Kaisha Delivery of scan services over a device service port
US20120166956A1 (en) * 2010-12-23 2012-06-28 Microsoft Corporation Private pinning including task bar pinning and jump list task and item launching
US20120206757A1 (en) * 2011-02-15 2012-08-16 Konica Minolta Business Technologies, Inc. Image forming apparatus for being able to utilize application in which web browser is used
US8364778B2 (en) 2007-04-11 2013-01-29 The Directv Group, Inc. Method and system for using a website to perform a remote action on a set top box with a secure authorization
US20130124667A1 (en) * 2011-11-11 2013-05-16 Mobophiles, Inc. dba Mobolize System and method for managing dedicated caches
US20130191722A1 (en) * 2012-01-24 2013-07-25 Samsung Electronics Co., Ltd. Hardware acceleration of web applications
WO2013122965A1 (en) * 2012-02-16 2013-08-22 Microsoft Corporation Using an application cache to update resources of installed applications
WO2014052015A1 (en) * 2012-09-27 2014-04-03 Intel Corporation Detecting, enforcing and controlling access privileges based on sandbox usage
US20140235351A1 (en) * 2013-02-19 2014-08-21 DeNA Co., Ltd. Data processing system, information terminal, data processing method, and non-transitory computer-readable storage medium storing data processing program
US8849957B1 (en) * 2010-05-18 2014-09-30 Google Inc. Installable web applications
US8856835B2 (en) 2007-07-26 2014-10-07 The Directv Group, Inc. Method and system for associating content and content information in a menu structure
US9015353B2 (en) * 2013-03-14 2015-04-21 DSSD, Inc. Method and system for hybrid direct input/output (I/O) with a storage device
US20150317143A1 (en) * 2012-12-27 2015-11-05 Tencent Technology (Shenzhen) Company Limited Method and apparatus for installing webpage application
US9456247B1 (en) 2010-05-19 2016-09-27 The Directv Group, Inc. Method and system for changing communication parameters of a content delivery system based on feedback from user devices
US9693106B2 (en) 2007-07-26 2017-06-27 The Directv Group, Inc. Method and system for preordering content in a user device associated with a content processing system
US10021208B2 (en) 2014-03-04 2018-07-10 Mobophiles, Inc. Dynamic cache allocation and network management
US10140107B2 (en) 2010-06-11 2018-11-27 Microsoft Technology Licensing, Llc Dynamic web application notifications including task bar overlays
US20190141404A1 (en) * 2010-05-19 2019-05-09 Google Llc Television related searching
US10552603B2 (en) 2000-05-17 2020-02-04 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US10667008B1 (en) 2014-12-18 2020-05-26 The Directv Group, Inc. Method and system for setting and receiving user notifications for content available far in the future

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8079086B1 (en) 1997-11-06 2011-12-13 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
GB0027685D0 (en) * 2000-11-13 2000-12-27 Canon Kk Filter based authoring tool
US7458074B2 (en) * 2001-03-30 2008-11-25 International Business Machiens Corporation Method and apparatus for installing and upgrading an application in a computer system
US20020184612A1 (en) * 2001-06-01 2002-12-05 Hunt Joseph R. Runtime configurable caching for component factories
CA2704294C (en) 2001-07-26 2012-11-20 Irise System and process for automatically configuring a behavior for an instruction for a requirements validation computer program
US7536688B2 (en) * 2003-02-28 2009-05-19 Azul Systems Segmented virtual machine
US7523395B1 (en) 2003-05-30 2009-04-21 Oracle International Corporation Web application generator for spreadsheet calculators
US7685570B2 (en) * 2003-06-09 2010-03-23 Microsoft Corporation Error/exception helper
US20050049790A1 (en) * 2003-09-03 2005-03-03 Microsoft Corporation System and method for validating whether a software application is properly installed
US20050102666A1 (en) * 2003-11-10 2005-05-12 International Business Machines (Ibm) Corporation Pre-deployment component hosting environment analyzer
US8108902B2 (en) * 2004-04-30 2012-01-31 Microsoft Corporation System and method for local machine zone lockdown with relation to a network browser
US7797673B2 (en) * 2004-12-16 2010-09-14 The Mathworks, Inc. Applying coding standards in graphical programming environments
US7594225B2 (en) * 2004-12-20 2009-09-22 Microsoft Corporation Integrated setup for generating customization XML
US7685591B2 (en) 2004-12-20 2010-03-23 Microsoft Corporation Customizing a software application through a patch file
US7480908B1 (en) * 2005-06-24 2009-01-20 Azul Systems, Inc. Segmented virtual machine transport mechanism
US7627854B2 (en) * 2006-01-12 2009-12-01 International Business Machines Corporation Graphical aid for generating object setup scripts
US8291377B2 (en) * 2006-01-25 2012-10-16 Microsoft Corporation External configuration of processing content for script
US10078538B2 (en) * 2006-04-27 2018-09-18 International Business Machines Corporation Web application integration with dialogue based scripts
US8006226B2 (en) * 2006-06-09 2011-08-23 Sorriso Technologies Inc. Methods and apparatus for generating a web site from a use case
JP4935413B2 (en) * 2006-09-04 2012-05-23 ソニー株式会社 Upload add-in program, upload auxiliary program, and upload method
US20080155502A1 (en) * 2006-12-22 2008-06-26 International Business Machines Corporation Method and process for handling partially translated scripts
US8959647B2 (en) * 2007-02-27 2015-02-17 Microsoft Corporation Runtime security and exception handler protection
US8356297B1 (en) 2007-03-21 2013-01-15 Azul Systems, Inc. External data source redirection in segmented virtual machine
US8307358B1 (en) * 2007-07-10 2012-11-06 Parallels IP Holdings GmbH Method and system for unattended installation of guest operating system
US9798524B1 (en) * 2007-12-04 2017-10-24 Axway, Inc. System and method for exposing the dynamic web server-side
US8635701B2 (en) * 2008-03-02 2014-01-21 Yahoo! Inc. Secure browser-based applications
US9390172B2 (en) * 2009-12-03 2016-07-12 Microsoft Technology Licensing, Llc Communication channel between web application and process outside browser
US8561038B1 (en) * 2009-12-31 2013-10-15 Google Inc. High performance execution environment
KR20120001336A (en) * 2010-06-29 2012-01-04 삼성전자주식회사 Method and apparatus of converting content
US8954870B2 (en) 2010-10-08 2015-02-10 Irise System and method for extending a visualization platform
US8689181B2 (en) * 2010-11-23 2014-04-01 Axeda Corporation Scripting web services
US20120192155A1 (en) * 2011-01-20 2012-07-26 Microsoft Corporation Code advisor for web compatibility and interoperability
US9009239B1 (en) * 2011-01-27 2015-04-14 Amdocs Software Systems Limited System, method, and computer program for providing access to a plurality of services through a unified application
WO2013175267A1 (en) * 2012-05-21 2013-11-28 Nokia Corporation Method and apparatus for application behavior policies
CN103581145B (en) * 2012-08-06 2017-02-08 联想(北京)有限公司 Electronic equipment and safety protection method applied to same
US9736130B1 (en) * 2013-07-05 2017-08-15 Sonus Networks, Inc. Communications methods and apparatus related to web initiated sessions
US10191986B2 (en) 2014-08-11 2019-01-29 Microsoft Technology Licensing, Llc Web resource compatibility with web applications
US9397723B2 (en) 2014-08-26 2016-07-19 Microsoft Technology Licensing, Llc Spread spectrum wireless over non-contiguous channels
CN104317573B (en) * 2014-10-03 2017-06-16 李宏伟 Android installation kit conversion method and device and the method and apparatus of operation application
US9116768B1 (en) * 2014-11-20 2015-08-25 Symantec Corporation Systems and methods for deploying applications included in application containers
US20160179803A1 (en) * 2014-12-22 2016-06-23 Rovi Guides, Inc. Augmenting metadata using commonly available visual elements associated with media content
US10447720B1 (en) 2015-03-12 2019-10-15 Symantec Corporation Systems and methods for performing application container introspection
CN105242960B (en) * 2015-09-21 2020-02-18 青岛海信电器股份有限公司 Method for processing system function call request and browser
US10951588B2 (en) * 2018-07-26 2021-03-16 Palo Alto Networks, Inc. Object property getter and setter for clientless VPN

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5367686A (en) * 1990-08-20 1994-11-22 International Business Machines Corporation Method for automated complex multilevel softward installation in a data processing system
US5481714A (en) * 1993-10-18 1996-01-02 International Business Machines Corporation Method and system for installing an operating system on a data processing system with abort capability and voice input feature
US5717930A (en) * 1994-09-19 1998-02-10 Seiko Epson Corporation Installation system
US5835777A (en) * 1996-03-20 1998-11-10 Hewlett-Packard Company Method of automatically generating a software installation package
US6006035A (en) * 1997-12-31 1999-12-21 Network Associates Method and system for custom computer software installation
US6381742B2 (en) * 1998-06-19 2002-04-30 Microsoft Corporation Software package management
US6477703B1 (en) * 1999-06-29 2002-11-05 Hewlett-Packard Company Software patch selection tool
US6959415B1 (en) * 1999-07-26 2005-10-25 Microsoft Corporation Methods and apparatus for parsing Extensible Markup Language (XML) data streams

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6275938B1 (en) * 1997-08-28 2001-08-14 Microsoft Corporation Security enhancement for untrusted executable code
US6144991A (en) * 1998-02-19 2000-11-07 Telcordia Technologies, Inc. System and method for managing interactions between users in a browser-based telecommunications network
US6101539A (en) * 1998-10-02 2000-08-08 Kennelly; Richard J. Dynamic presentation of management objectives based on administrator privileges
US7103647B2 (en) * 1999-08-23 2006-09-05 Terraspring, Inc. Symbolic definition of a computer system
US7191397B2 (en) * 1999-09-20 2007-03-13 Dell Products L.P. XML server pages language

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5367686A (en) * 1990-08-20 1994-11-22 International Business Machines Corporation Method for automated complex multilevel softward installation in a data processing system
US5481714A (en) * 1993-10-18 1996-01-02 International Business Machines Corporation Method and system for installing an operating system on a data processing system with abort capability and voice input feature
US5717930A (en) * 1994-09-19 1998-02-10 Seiko Epson Corporation Installation system
US5835777A (en) * 1996-03-20 1998-11-10 Hewlett-Packard Company Method of automatically generating a software installation package
US6006035A (en) * 1997-12-31 1999-12-21 Network Associates Method and system for custom computer software installation
US6381742B2 (en) * 1998-06-19 2002-04-30 Microsoft Corporation Software package management
US6477703B1 (en) * 1999-06-29 2002-11-05 Hewlett-Packard Company Software patch selection tool
US6959415B1 (en) * 1999-07-26 2005-10-25 Microsoft Corporation Methods and apparatus for parsing Extensible Markup Language (XML) data streams

Cited By (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10552603B2 (en) 2000-05-17 2020-02-04 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US8112492B2 (en) 2000-10-30 2012-02-07 Microsoft Corporation Shared object stores for a networked computer system
US20060026264A1 (en) * 2000-10-30 2006-02-02 Microsoft Corporation Shared object stores for a networked computer system
US7809798B2 (en) * 2000-10-30 2010-10-05 Microsoft Corporation Shared object stores for a networked computer system
US20110004658A1 (en) * 2000-10-30 2011-01-06 Microsoft Corporation Shared Object Stores For A Networked Computer System
KR100975163B1 (en) * 2002-04-08 2010-08-10 에어마그네트, 인코포레이티드 Monitoring a local area network
US20030212956A1 (en) * 2002-05-10 2003-11-13 Fujitsu Limited Program generating apparatus, program generating method and program generator
US7308677B2 (en) * 2002-05-10 2007-12-11 Fujitsu Limited Program generating apparatus, program generating method and program generator
US20070234346A1 (en) * 2006-02-22 2007-10-04 Microsoft Corporation Integrated computer server imaging
US20070234345A1 (en) * 2006-02-22 2007-10-04 Microsoft Corporation Integrated multi-server installation
US7853945B2 (en) 2006-02-22 2010-12-14 Michael Kramer Integrated computer server imaging
WO2007097849A1 (en) * 2006-02-22 2007-08-30 Microsoft Corporation Integrated computer server imaging
WO2007097842A1 (en) * 2006-02-22 2007-08-30 Microsoft Corporation Integrated multi-server installation
US7596615B2 (en) 2006-02-22 2009-09-29 Microsoft Corporation Multi-server automated redundant service configuration
US20070198664A1 (en) * 2006-02-22 2007-08-23 Microsoft Corporation Multi-server automated redundant service configuration
US20080127175A1 (en) * 2006-11-01 2008-05-29 Microsoft Corporation Packaging software products as single-file executables containing scripting logic
US20100242034A1 (en) * 2006-11-01 2010-09-23 Microsoft Corporation Distributing software products as an executable containing script logic with external resources
US20080235352A1 (en) * 2007-03-22 2008-09-25 Microsoft Corporation Architecture for installation and hosting of server-based single purpose applications on clients
US8316105B2 (en) 2007-03-22 2012-11-20 Microsoft Corporation Architecture for installation and hosting of server-based single purpose applications on clients
US8364778B2 (en) 2007-04-11 2013-01-29 The Directv Group, Inc. Method and system for using a website to perform a remote action on a set top box with a secure authorization
US9843604B2 (en) 2007-05-31 2017-12-12 Microsoft Technology Licensing, Llc Detecting and modifying security settings for deploying web applications
US9118652B2 (en) 2007-05-31 2015-08-25 Microsoft Technology Licensing, Llc Detecting and modifying security settings for deploying web applications
US20080301701A1 (en) * 2007-05-31 2008-12-04 Microsoft Corporation Detecting and modifying security settings for deploying web applications
US8621456B2 (en) * 2007-05-31 2013-12-31 Microsoft Corporation Detecting and modifying security settings for deploying web applications
US20080317042A1 (en) * 2007-06-22 2008-12-25 Palo Alto Research Center Incorporated Extensible framework for compatibility testing
US20110219358A1 (en) * 2007-06-22 2011-09-08 Palo Alto Research Center Incorporated Extensible framework for compatibility testing
US9693106B2 (en) 2007-07-26 2017-06-27 The Directv Group, Inc. Method and system for preordering content in a user device associated with a content processing system
US8856835B2 (en) 2007-07-26 2014-10-07 The Directv Group, Inc. Method and system for associating content and content information in a menu structure
US20090031346A1 (en) * 2007-07-26 2009-01-29 The Directv Group, Inc. Method and system for populating a menu structure on a user device
US20090172702A1 (en) * 2007-09-28 2009-07-02 Xcerion Ab Network operating system
US20090099858A1 (en) * 2007-10-13 2009-04-16 Jeffs Alistair E Method and system for ordering content from a first device for a selected user device through an interactive interface
US8707361B2 (en) * 2007-10-13 2014-04-22 The Directv Group, Inc. Method and system for quickly recording linear content from an interactive interface
US8701146B2 (en) * 2007-10-13 2014-04-15 The Directv Group, Inc. Method and system for ordering video content from a mobile device
US20090100065A1 (en) * 2007-10-13 2009-04-16 Jeffs Alistair E Method and system for quickly recording linear content from an interactive interface
US20090099912A1 (en) * 2007-10-13 2009-04-16 Jeffs Alistair E Method and system for confirming the download of content at a user device
US8046802B2 (en) * 2007-10-13 2011-10-25 The Directv Group, Inc. Method and system for ordering and prioritizing the downloading of content from an interactive interface
US8561114B2 (en) 2007-10-13 2013-10-15 The Directv Group, Inc. Method and system for ordering video content from a mobile device
US20090099859A1 (en) * 2007-10-13 2009-04-16 Jeffs Alistair E Method and system for ordering and prioritizing the downloading of content from an interactive interface
US9824389B2 (en) 2007-10-13 2017-11-21 The Directv Group, Inc. Method and system for confirming the download of content at a user device
US20090100477A1 (en) * 2007-10-13 2009-04-16 Jeffs Alistair E Method and system for ordering video content from a mobile device
US8813139B2 (en) * 2007-10-13 2014-08-19 The Directv Group, Inc. Method and system for ordering video content from a first device
US8099711B2 (en) 2008-01-08 2012-01-17 International Business Machines Corporation System and method for multi-level security filtering of model representations
US20090178019A1 (en) * 2008-01-08 2009-07-09 Bahrs Paul J System and Method for Multi-Level Security Filtering of Model Representations
US20090232349A1 (en) * 2008-01-08 2009-09-17 Robert Moses High Volume Earth Observation Image Processing
US8768104B2 (en) * 2008-01-08 2014-07-01 Pci Geomatics Enterprises Inc. High volume earth observation image processing
US20090199172A1 (en) * 2008-01-31 2009-08-06 Business Objects, S.A. Apparatus and method for importing language extension resources to support application execution
US8375379B2 (en) * 2008-01-31 2013-02-12 SAP France S.A. Importing language extension resources to support application execution
KR101496327B1 (en) * 2008-07-25 2015-02-26 삼성전자주식회사 Method and apparatur for performing application
US20100023953A1 (en) * 2008-07-25 2010-01-28 Samsung Electronic Co., Ltd. Method and apparatus for executing application
US20100057583A1 (en) * 2008-08-28 2010-03-04 The Directv Group, Inc. Method and system for ordering video content using a link
US10827066B2 (en) 2008-08-28 2020-11-03 The Directv Group, Inc. Method and system for ordering content using a voice menu system
US20100057469A1 (en) * 2008-08-28 2010-03-04 The Directv Group, Inc. Method and system for ordering content using a voice menu system
KR101018907B1 (en) 2009-01-05 2011-03-02 주식회사 엘지유플러스 Apparatus and method of improving website access speed for mobile browser
US20120216218A1 (en) * 2009-06-12 2012-08-23 International Business Machines Corporation Methods for operating system identification and web application execution
US8776096B2 (en) * 2009-06-12 2014-07-08 International Business Machines Corporation Methods for operating system identification and web application execution
US20100319010A1 (en) * 2009-06-12 2010-12-16 International Business Machines Corporation Systems and Methods for Operating System Identification and Web Application Execution
US20110145786A1 (en) * 2009-12-15 2011-06-16 Microsoft Corporation Remote commands in a shell environment
US10567543B1 (en) 2010-05-18 2020-02-18 Google Llc Installable web applications
US8849957B1 (en) * 2010-05-18 2014-09-30 Google Inc. Installable web applications
US11799984B2 (en) 2010-05-18 2023-10-24 Google Llc Installable web applications
US11252252B2 (en) 2010-05-18 2022-02-15 Google Llc Installable web applications
US20190141404A1 (en) * 2010-05-19 2019-05-09 Google Llc Television related searching
US11425468B2 (en) 2010-05-19 2022-08-23 Google Llc Television related searching
US10992996B2 (en) 2010-05-19 2021-04-27 Google Llc Television related searching
US11758237B2 (en) 2010-05-19 2023-09-12 Google Llc Television related searching
US10616658B2 (en) * 2010-05-19 2020-04-07 Google Llc Television related searching
US9456247B1 (en) 2010-05-19 2016-09-27 The Directv Group, Inc. Method and system for changing communication parameters of a content delivery system based on feedback from user devices
CN102270129A (en) * 2010-06-07 2011-12-07 微软公司 Distributing software products as an executable containing script logic with external resources
US10140107B2 (en) 2010-06-11 2018-11-27 Microsoft Technology Licensing, Llc Dynamic web application notifications including task bar overlays
US8970870B2 (en) * 2010-06-30 2015-03-03 Canon Kabushiki Kaisha Delivery of scan services over a device service port
US20120002243A1 (en) * 2010-06-30 2012-01-05 Canon Kabushiki Kaisha Delivery of scan services over a device service port
KR20130131383A (en) * 2010-12-23 2013-12-03 마이크로소프트 코포레이션 Private pinning including task bar pinning and jump list task and item launching
US20120166956A1 (en) * 2010-12-23 2012-06-28 Microsoft Corporation Private pinning including task bar pinning and jump list task and item launching
US9003291B2 (en) * 2010-12-23 2015-04-07 Microsoft Technology Licensing, Llc Private pinning including task bar pinning and jump list task and item launching
WO2012088486A3 (en) * 2010-12-23 2012-10-26 Microsoft Corporation Private pinning including task bar pinning and jump list task and item launching
CN102736914A (en) * 2010-12-23 2012-10-17 微软公司 Private pinning including task bar pinning and jump list task and item launching
US9191455B2 (en) * 2011-02-15 2015-11-17 Konica Minolta Business Technologies, Inc. Image forming apparatus for being able to utilize application in which Web browser is used
US20120206757A1 (en) * 2011-02-15 2012-08-16 Konica Minolta Business Technologies, Inc. Image forming apparatus for being able to utilize application in which web browser is used
US20130124667A1 (en) * 2011-11-11 2013-05-16 Mobophiles, Inc. dba Mobolize System and method for managing dedicated caches
US9940403B2 (en) * 2011-11-11 2018-04-10 Mobophiles, Inc. System and method for managing dedicated caches
US9424089B2 (en) * 2012-01-24 2016-08-23 Samsung Electronics Co., Ltd. Hardware acceleration of web applications
US20130191722A1 (en) * 2012-01-24 2013-07-25 Samsung Electronics Co., Ltd. Hardware acceleration of web applications
US20160328271A1 (en) * 2012-01-24 2016-11-10 Samsung Electronics Co., Ltd. Hardware acceleration of web applications
US10191774B2 (en) * 2012-01-24 2019-01-29 Samsung Electronics Co., Ltd. Hardware acceleration of web applications
WO2013122965A1 (en) * 2012-02-16 2013-08-22 Microsoft Corporation Using an application cache to update resources of installed applications
US8856864B2 (en) 2012-09-27 2014-10-07 Intel Corporation Detecting, enforcing and controlling access privileges based on sandbox usage
CN104160404A (en) * 2012-09-27 2014-11-19 英特尔公司 Detecting, enforcing and controlling access privileges based on sandbox usage
US9836614B2 (en) 2012-09-27 2017-12-05 Intel Corporation Detecting, enforcing and controlling access privileges based on sandbox usage
WO2014052015A1 (en) * 2012-09-27 2014-04-03 Intel Corporation Detecting, enforcing and controlling access privileges based on sandbox usage
US20150317143A1 (en) * 2012-12-27 2015-11-05 Tencent Technology (Shenzhen) Company Limited Method and apparatus for installing webpage application
US8903948B2 (en) * 2013-02-19 2014-12-02 DeNA Co., Ltd. Data processing system, information terminal, data processing method, and non-transitory computer-readable storage medium storing data processing program
US20140235351A1 (en) * 2013-02-19 2014-08-21 DeNA Co., Ltd. Data processing system, information terminal, data processing method, and non-transitory computer-readable storage medium storing data processing program
US9015353B2 (en) * 2013-03-14 2015-04-21 DSSD, Inc. Method and system for hybrid direct input/output (I/O) with a storage device
US9507531B1 (en) 2013-03-14 2016-11-29 Emc Corporation Method and system for hybrid direct input/output (I/O) with a storage device
US10021208B2 (en) 2014-03-04 2018-07-10 Mobophiles, Inc. Dynamic cache allocation and network management
US10667008B1 (en) 2014-12-18 2020-05-26 The Directv Group, Inc. Method and system for setting and receiving user notifications for content available far in the future

Also Published As

Publication number Publication date
US6968539B1 (en) 2005-11-22

Similar Documents

Publication Publication Date Title
US6968539B1 (en) Methods and apparatus for a web application processing system
US11256491B2 (en) System and methods for integration of an application runtime environment into a user computing environment
US7849437B2 (en) Object oriented web application framework
EP1156415B1 (en) Server-side control objects for processing client-side user interface elements
US8447832B2 (en) System and method for providing a web-based operating system
US7117504B2 (en) Application program interface that enables communication for a network software platform
US7707563B2 (en) System and method for network-based computing
JP3762687B2 (en) System and method for dynamically displaying HTML form elements
US7415524B2 (en) Postback input handling by server-side control objects
US6996599B1 (en) System and method providing multi-tier applications architecture
US6757716B1 (en) Method and system for modifying host application functionality based upon downloaded content
US7093243B2 (en) Software mechanism for efficient compiling and loading of java server pages (JSPs)
EP1310868A2 (en) Method and apparatus for a platform independent plug-in
US10061575B2 (en) Managed execution environment for software application interfacing
CA2585619A1 (en) Customizable user interface wrappers for web applications
WO2013091556A1 (en) Browser based application program extension method and device
US7591021B2 (en) Object model document for obfuscating object model therein
US7681202B2 (en) Portal runtime framework
Linwood et al. Building Portals with the Java Portlet API
Duthie et al. ASP. NET in a Nutshell
Betancourt et al. Why Python?
Frawley MASTER OF ENGINEERING

Legal Events

Date Code Title Description
AS Assignment

Owner name: SAMSUNG ELECTRONICS CO., LTD., KOREA, REPUBLIC OF

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:INTERNATIONAL BUSINESS MACHINES CORPORATION;REEL/FRAME:027371/0467

Effective date: 20111205

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION