US20070271283A1 - Systems and methods for rendering and increasing portability of document-based user interface software objects - Google Patents

Systems and methods for rendering and increasing portability of document-based user interface software objects Download PDF

Info

Publication number
US20070271283A1
US20070271283A1 US11/830,624 US83062407A US2007271283A1 US 20070271283 A1 US20070271283 A1 US 20070271283A1 US 83062407 A US83062407 A US 83062407A US 2007271283 A1 US2007271283 A1 US 2007271283A1
Authority
US
United States
Prior art keywords
document
computer
user interface
client
user
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/830,624
Inventor
Stephen Maryka
Ted Goddard
Michael Beauregard
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to US11/830,624 priority Critical patent/US20070271283A1/en
Publication of US20070271283A1 publication Critical patent/US20070271283A1/en
Priority to US12/895,712 priority patent/US20110083070A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9577Optimising the visualization of content, e.g. distillation of HTML documents

Definitions

  • This disclosure relates to computer programming in a World Wide Web environment and, more specifically, to systems and methods relating to a component oriented software design approach in a document oriented user interface environment.
  • Web The World Wide Web
  • HTML HyperText Mark-up language
  • XML Extensible Mark-up Language
  • a “mark-up language” is a computer language that describes how a page should be formatted by using specialized “tags.”
  • An HTML tag is a code element that tells a Web browser what to do with text. Mark-up languages also enable a person accessing content on the Web to jump from one document to another simply by clicking on links that are embedded within Web pages.
  • Browsers allow users to access the Web, and to retrieve and interact with documents on it.
  • Browsers are typically capable of parsing HTML and retrieving Web pages using Hypertext Transfer Protocol (“HTTP”), File Transfer Protocol (“FTP”), and other protocols used to transfer information over networks.
  • HTTP Hypertext Transfer Protocol
  • FTP File Transfer Protocol
  • Two popular browsers are NETSCAPE NAVIGATOR and MICROSOFT INTERNET EXPLORER. Both are graphical browsers, meaning they can display graphics as well as text. To display graphics, such as images, software objects, and the like, the browser must be able to “render” the graphic.
  • a Web browser is able to interpret the set of mark-up language tags within a page in order to display the page on your screen as the page's creator intended it to be viewed.
  • HTML Hypertext Transfer Protocol
  • FTP File Transfer Protocol
  • NETSCAPE NAVIGATOR MICROSOFT INTERNET EXPLORER
  • a “component” is typically a small binary object or program that performs a specific function. It is often designed in such a way as to easily operate with other components and applications.
  • a set of interacting components may constitute a software application.
  • the user interface for a software application may be implemented with UI components that include a visual representation and control element that handles interactions between the component's representation and the user.
  • Certain classes of UI components may also be represented in documents that are available via the Internet. Thus, when a user accesses a Web page or other document with his browser, the browser renders the visual representation of each component contained in the document so that the components can be displayed to the user.
  • Components may include controls that a user can interact with, such as tables, text boxes, and other user-interactive items.
  • a control is typically a software-based item that can be individually selected and manipulated by a user.
  • Web pages are stored on large server machines. These machines may be accessed by individuals operating smaller client machines such as personal computers.
  • the browser When a user accesses a server Web page through a browser installed on his client machine, the browser typically retrieves the page from the server, and renders the page on the user's own client machine, so that the page can be viewed by the user.
  • the Web page comprises component representations, each component must be rendered by the browser.
  • a Web page may include a table component.
  • DHTML refers generally to Web content that is capable of being changed while it is being viewed.
  • JavaScript is a programming language technology, called a scripting language, for manipulating DHTML.
  • JavaScript enables Web authors to design interactive Web sites that include controls with which users interact.
  • JavaScript can interact with HTML source code, enabling Web authors to enhance Web pages with dynamic interactive state.
  • JavaScript is not inherently portable.
  • incompatibilities between different machines in communication with one another can manifest when components within a document or application break down.
  • different software vendors often employ incompatible standards for JavaScript execution, and a single vendor may often support different JavaScript versions.
  • JavaScript code relies on customized code for each combination of supported browser vendor and software version, and often cannot be easily maintained on a client machine.
  • a Web application may be rendered completely unusable when a single component fails to operate due to an incompatibility.
  • programmers can currently face significant challenges when designing user interfaces for component-based applications created for a networked Web-like environment.
  • the ability to efficiently render updated versions of component-based applications and documents following user input to a user interface to those applications and documents is often significantly limited.
  • computer-readable media embodies instructions executable by a first computer system that cause the first computer system to perform a method of rendering a document-based user interface software object.
  • the method includes representing the document-based user interface software object in a document object model that comprises a data structure for representing documents in the first computer system, translating the document object model, including the representation of the document-based user interface software object, into computer-readable characters, and transmitting the computer-readable characters to a second computer system.
  • a method of rendering a document-based user interface object includes storing a document-based user interface object in a computer system, storing a document object model, that comprises a data structure for representing documents, in the computer system, and representing the document-based user interface object in the document object model in the computer system.
  • a computer server system includes a memory system configured to include a document object model that comprises a data structure for representing documents on the computer server system, and a processing system configured to communicate with the memory system and with a client computing system.
  • the processing system is also configured to (a) receive information, from the client computing system or from the server system, that causes a change to the document object model, (b) identify the change to the document object model, and (c) communicate the identified change to the client computing system.
  • a computer system in still another aspect of the invention, includes a first computing system configured to communicate with a second computing system, a memory device connected to the first computing system and configured to store a first document object model that comprises a data structure for representing documents on the first computing system, wherein the first document object model comprises a replication of a second document object model that is resident on the second computing system, and a processor connected to the first computing system and configured to receive input from either the first or the second computing system, wherein the input represents a change in the first document object model detected by the second computing system.
  • the processor is additionally configured to represent the received input in the first document object model.
  • a method of developing and deploying a location-neutral document object model-based user interface software object that is capable of being supported separately by each one of a client and a server, and that is capable of being represented in a document object model, includes developing software code to implement the location-neutral document object model-based user interface software object, wherein the development occurs in a manner that is not a function of whether the code will be deployed on a client computer system or a server computer system, deciding whether the software object code will be deployed on a client computer system or a server computer system, and deploying the software object code on a type of computing system on which the software object code was decided to be deployed.
  • the location-neutral document object model-based user interface software object is capable of being supported separately by each one of a client computer system and server computer system and is capable of being represented in a document object model on the computing system on which the software object code was deployed.
  • a method of programming a Web application having a location-neutral document object model-based user interface software object includes assembling a plurality of software objects to create a software application, wherein one of the plurality of software objects comprises the location-neutral document object-based user interface software object that is capable of being deployed on both a client computing system and a server computing system and is capable of being represented in a document object model.
  • FIG. 1 is a conceptual block diagram of a prior art system for updating server components displayed in a web page on a client within a client-server architecture;
  • FIG. 2 is a conceptual block diagram illustrating a system for rendering a document-based user interface software object in a document object model
  • FIG. 3A is a flowchart illustrating a method of rendering a document-based user interface software object in a document object model
  • FIG. 3B is a flowchart illustrating one aspect of rendering a document-based user interface software object in a document object model
  • FIG. 4 is a conceptual block diagram illustrating a system for updating a document object model to reflect changes caused by the rendering of a document-based user interface software object therein;
  • FIG. 5 is a flowchart illustrating a method of updating a document object model to reflect changes caused by the rendering of a document-based user interface software object therein;
  • FIG. 6 is a conceptual block diagram illustrating implementation of a location-neutral software user interface object
  • FIG. 7 is a flowchart illustrating a method of developing and implementing a location-neutral software user interface object.
  • FIG. 8 illustrates an exemplary distributed computer system in which the various methods, systems and computer-readable media disclosed herein may be practiced.
  • FIG. 1 is a conceptual block diagram of a prior art system for updating component representations in a web page that is stored on a server and rendered on a client within a client-server architecture.
  • a server 100 is communicatively connected to a client 102 via a communications network 104 , such as the Internet.
  • a Web page stored on the server 100 may include one or more components 106 , 108 , 110 .
  • Each component may be operatively connected to a rendering engine 112 , 114 , 116 , respectively, each of which generates instructions for causing the components 106 , 108 , 110 to ultimately be rendered on the user's client machine 102 as a component representation 118 .
  • There may be a one-to-one mapping between a component on the server and its component representation on the client.
  • component representations 120 , 122 and 124 may correspond to components 106 , 108 and 110 , respectively.
  • the type of instructions that the rendering engines 112 , 114 , 116 produce will depend on the type of computer language that the client machine 102 converses in.
  • a rendering engine may cause information from a component to be represented as a string of special characters 119 , such as markup text language characters. Markup text includes but is not limited to HTML and XML.
  • These character strings 119 are then transmitted via the network 104 to the client 102 , where they are read by a browser 120 .
  • the browser 120 then reads the strings 119 and causes them to be rendered as component representations 118 on a display screen attached to the client 102 .
  • Components 106 , 108 and 110 may undergo state changes, as indicated by 106 A, 108 A, 110 A. State changes may occur at either the client side or the server side.
  • a user interface typically comprises a junction between a user and a computer program. It may include a set of commands or menus through which a user communicates with a program.
  • a command-driven interface is one in which the user enters commands.
  • a menu-driven interface is one in which the user selects command choices from various menus displayed on a screen.
  • GUIs may use windows, icons, and pop-up menus to simplify the process of interacting with a computer program from the perspective of a user.
  • a software application's user interface sometimes constitutes one of the most important parts of a computer program because it determines how easily a user can interact with and control the program.
  • a Web page includes component representations that a user can interact with, rather than merely static information
  • the content on a page may undergo changes after the page and its component representations have been displayed to the user.
  • the user interacts with a component representation in the server Web page, such as by manipulating data in a table or other type of user interface control, not only must the component representation be reflected on the users display, but the actual server-resident component must be updated to reflect the state changes resulting from this interaction.
  • Components may also undergo state changes at the server side, absent user manipulation. For example, back-end business logic operating on the server machine may cause a component to change its state. These state changes also must be updated on the user display.
  • Network latency and inherent rendering time can cause even the simplest updates to a user interface to generate significant inefficiencies and delays.
  • updates may be significantly delayed pending user input to induce an update.
  • the ability to render an updated document-based user interface component representation without re-rendering the entire document or Web page would significantly improve update time and the overall user experience.
  • a document object model comprises a specification establishing a common way for programmers to access a document as a set of objects.
  • W3C DOM World Wide Web Consortium
  • the W3C DOM comprises a platform-neutral and language-neutral interface that allows software programs and scripts to dynamically access and update the content, structure and style of documents such as Web pages and the like.
  • the W3C DOM comprises a standard set of objects for representing HTML and XML documents, a standard model of how these objects can be combined, and a standard interface for accessing and manipulating them. Even after it is presented, a document can be further processed and the results of that processing can be incorporated back into the presented page, using the DOM.
  • Software vendors can support any defined document object model, whether the W3C DOM or another model, as an interface to their proprietary data structures and application program interfaces (“APIs”). Content authors, such as Web programmers, can write to the standard document object model interfaces rather than to the product-specific APIs of particular vendors. This increases interoperability of independently created applications and documents on the Web.
  • the W3C DOM is only one example of a document object model.
  • a document object model may also include specifications for other types of mark-up languages and objects. It is to be understood that the term “document object model” as used herein is not intended to be limited to the W3C DOM or to refer only to HTML and XML.
  • DHTML refers to Web content that changes while it is viewed.
  • DHTML can handle certain types of user interactions locally without requiring communication of with the server to process state changes.
  • a button component representation can change color when the user moves a mouse pointing device over the button.
  • DHTML typically relies on a document object model, which as explained above may be a platform- and language-neutral interface that allows programs and scripts to dynamically access and update the content, structure and style of documents.
  • the document can be further processed and the results of that processing can be incorporated back into the presented page.
  • the document object module may be used according to the teachings herein to dynamically change the appearance of Web pages after they have been downloaded to a user's browser.
  • a document object model may define what attributes are associated with each object, and how the objects and attributes can be manipulated.
  • object refers generally to any software-based item that can be individually selected and manipulated within a software application.
  • Objects may include shapes and pictures that appear on a display screen and comprise the user interface of a software application, various types of controls, and less user-tangible software entities that may comprise other business logic within the software application.
  • object-oriented programming for example, an object may be a self-contained entity that comprises both data and procedures to manipulate the data.
  • a document object model may comprise a specification for how objects including, but not limited to, text, images, headers, or links are represented in a Web page.
  • attribute refers generally to a language construct that programmers use to add additional information (e.g. metadata) to code elements. This additional information may extend the functionality of code elements such as assemblies, modules, members, types, return values and parameters.
  • document based user interface objects may be programmed in any of a number of currently known languages or other languages to be developed in the future. While the specification may refer to Java and JavaServer Faces as an exemplary language and framework for constructing objects for use with the teachings herein, it is to be understood that other languages and frameworks are also applicable, and that the particular examples disclosed herein are referenced for illustrative purposes only.
  • Java is a high-level object-oriented language that may be considered similar to C++, but simplified to eliminate language features that have resulted in common programming errors. As such, Java is an example of a general purpose programming language with a number of features that make the language well suited for use on the World Wide Web.
  • Small Java applications are sometimes called Java “applets” and can be downloaded from a Web server to run on a local computer by a Java-compatible browser.
  • “components” are small binary objects or programs that perform a specific function and are designed in such a way to easily operate with other components and applications.
  • Java source code files (files with a .java extension) may be compiled into a format called bytecode (files with a class extension), which can then be executed by a Java interpreter.
  • Compiled Java code can run on many computers because Java interpreters and runtime environments, known as Java Virtual Machines (“VMs”), exist for many operating systems, including UNIX, the Macintosh OS, and Windows.
  • Bytecode can also be converted directly into machine language instructions by a just-in-time (“JIT”) compiler.
  • JIT just-in-time
  • JSF JavaServer Faces
  • JSF comprises a framework for building Web-based user interfaces in the Java programming language.
  • JSF provides a set of standard components, such as buttons, hyperlinks, checkboxes, and the like, that may be represented in a document.
  • JSF also provides a facility for creating custom components, and the functionality to process client-generated events such as those that result when a user changes the value in a text box or clicks on a button in a user interface component.
  • RenderKits which translate each component into mark-up language, JSF allows component representations to be displayed on a variety of target clients when it knows the mark-up dialect of those clients.
  • a JSF component can operate by rendering itself in HTML for that target client if an appropriate HTML RenderKit is associated with the component.
  • the same JSF component could also render itself in XML, if it were informed that the target client communicates in XML, and if an appropriate XML RenderKit were associated with the component.
  • JSF comprises a technology that includes a set of APIs and a JavaServer Pages (JSP) custom tag library.
  • the APIs function to represent user interface components, manage their state, handle events and input validation, define page navigation, and support internationalization and accessibility.
  • the custom tag library provides developers with the ability to express a JavaServer Faces interface within a JSP page.
  • document based user interface components may comprise JSF components, but are not limited to JSF.
  • JSF JavaServer Pages
  • FIG. 2 is a conceptual block diagram illustrating a system for rendering a document-based user interface software object in a document object model, whereby delays and inefficiencies experienced in many prior art systems may be significantly reduced.
  • a user at a first computer 200 may access a document stored on a remote computer 202 over a communications network 204 .
  • the computers may be part of a network, such as a client-server network.
  • a client-server architecture is a network architecture in which each computer or process on the network comprises either a client or a server.
  • a server is generally a computer or device on a network that provides information to a client.
  • clients are devices that make requests for information
  • servers are devices that respond to the requests with information.
  • servers can be configured to manage network resources by handling resource requests.
  • servers are powerful computers or processors dedicated to managing disk drives (file servers), printers (print servers), network traffic (network servers), or information resources.
  • a file server may be a computer and storage device dedicated to storing files. Any user on the network can store files on the server.
  • a print server may be a computer that manages one or more printers, and a network server is a computer that manages network traffic.
  • a database server may be a computer system that processes database queries. Servers are often dedicated, meaning that they perform no other tasks besides their server tasks. On multiprocessing operating systems, however, a single computer can execute several programs at once. A server in this case could refer to the program that is managing resources rather than the entire computer.
  • a server may be any type of machine or device that handles requests from clients, and is not necessarily a machine dedicated to managing resources. Moreover, servers need not be larger or more powerful than clients.
  • server refers to any type of machine or device that responds to requests.
  • Clients usually include PCs or workstations on which users run applications. Clients may rely on servers for resources, such as files, devices, and even processing power. More generally, a client may be a device or machine that relies on a server to perform some operations, or that queries a server for information. A client may even be an application that runs on a machine and relies on a server to perform some operations. For example, an e-mail client is an application that enables you to send and receive e-mail.
  • a computer network that includes a server and a client in communication with one another is often called client-server architecture. Another type of network architecture is known as a peer-to-peer architecture because each node in the network has equivalent responsibilities.
  • a client may include any device that makes requests to another machine or device.
  • client refers to any type of machine or device that makes requests
  • various aspects of the teachings herein may apply to both client-server architectures and peer-to-peer architectures.
  • first computer 200 may comprise a client
  • remote computer 202 may comprise a server or a second client
  • communications network 204 may comprise the Internet.
  • the user may request a document that includes one or more components 208 , 210 , 212 .
  • Each component of the document must eventually be represented to the user during page processing, which is indicated by arrow 214 .
  • Component 208 is shown at various stages 208 A, 208 B, 208 C, which may occur at either the client side or server side.
  • component 208 may be caused by a user event, initiated by input from the user interacting with component 208 to change its state, or by logic implemented at the server side.
  • component 208 may comprise a table, and may reflect different data values at each of its states 208 A, 208 B and 208 C if the user interacts with the table to alter, add or delete the data therein.
  • business logic operating on the server may induce updates to component 208 , causing state changes which are represented by states 208 A, 208 B, 208 C. State changes within a single component may occur after initial rendering of all components The updating of component 208 to reflect its various states that are caused by user interaction or server side logic will be described in further detail below.
  • the document When the document is first retrieved by browser 206 , it may be represented in the remote computer's document object model 216 . As will be understood by those skilled in the art, this may be accomplished, for example, by adding the document or a component within the document to the remote computer's document object model, so that it may be rendered on a display screen connected to the user's computer 200 .
  • a processor 218 may then serialize the document object model, or translate it into computer readable characters that can be communicated across network 204 to the user's computer 200 .
  • the serialized document object model may comprise an HTML string, an XML string, or other computer readable characters.
  • browser 206 When browser 206 receives the serialized document object model, it may interpret the string and render the page including components 208 , 210 , 212 , which are displayed to the user as component representations 220 .
  • component representations 220 may have one-to-one correspondence to components on the server.
  • each component representation 222 , 224 , 226 may correspond to components 208 , 210 , 212 , respectively.
  • a component may comprise a document-based user interface object, such as a table, a data entry box, or other type of user interface control.
  • signals indicating user events are transmitted via network to remote computer 202 .
  • the signals cause a change in the state of component 208 , so that it may comprise updated information entered by the user.
  • state changes may also be caused by server side logic, absent user interaction at the client side.
  • Various states of component 208 are indicated by original component 208 A and user-updated components 208 B and 208 C.
  • the updated document object model may then be translated into computer readable characters by processor 218 as described above, and sent across communications network 204 to the user's browser 206 where it may be interpreted and rendered.
  • FIG. 3A is a flowchart illustrating a method of rendering a document-based user interface software object in a document object model. This and other methods may be implemented by the exemplary system described above.
  • the user may request a document such as a Web page from a remote computer. The request may then be implemented by a browser operable on the user's local computer.
  • the requested document may include a document-based user interface object.
  • the remote computer may represent the document-based user interface object in the remote computer's document object model.
  • the remote computer's document object model which now includes information representing the document-based user interface object, may be translated into computer readable characters such as HTML, XML or other mark-up language.
  • the computer readable characters may then be sent to the user's computer at block 306 , and at block 308 the user's computer may incorporate the transmitted computer readable characters into its own document object model.
  • the document-based user interface object may be rendered and displayed by the user's browser on a display screen operatively connected to the user's computer.
  • the user interacts with the document-based user interface object, and causes changes in the object by doing so, those changes may be reflected in the remote computer's document object model before transmission to the user's computer.
  • Using this method eliminates the need to re-process the entire page and recreate the document object model, when the state of a single object changes.
  • FIG. 3B is a flowchart illustrating one aspect of rendering a document-based user interface software object in a document object model.
  • the document object model should reside on a computer on which the document-based user interface object is also stored.
  • the computer may have a memory system for storing both the document-based user interface object, and data that describe the document object model, as indicated at block 310 .
  • Those skilled in the art will recognize suitable types of memory systems for storing such data.
  • the same memory system, or a different memory system that is also in communication with the computer may store the software code which describes the document-based user interface object. This is indicated at block 312 .
  • the document-based user interface object may be represented in the document object model on the computer.
  • FIG. 4 is a conceptual block diagram illustrating a system for updating a document object model to reflect changes caused by the rendering of a document-based user interface software object therein.
  • a user at a first computer 400 may access a document stored on a remote computer 402 over a communications network 404 .
  • First computer 400 may comprise a client
  • remote computer 402 may comprise a server or a second client
  • communications network 404 may comprise the Internet.
  • the user may request a document that includes a component representation 409 of component 408 .
  • Component 408 is shown at various stages 408 A, 408 B, 408 C, which may occur during user interaction with the component representation of component 408 , or from logic enacted at the server side.
  • each stage of component 408 may be caused by a user event or server side logic, as explained above with respect to FIG. 2 and in further detail below.
  • the document When the document is first retrieved by browser 406 , it may be represented in the remote computer's document object model 412 .
  • a processor 414 may then serialize the document object model representation, indicated at 416 , by translating it into computer readable characters that can be communicated across network 404 to the user's computer 400 .
  • the serialized document object model 416 may comprise an HTML string, an XML string, or other computer readable characters.
  • browser 406 When browser 406 receives the serialized document object model, it may interpret the string, create its own document object model 422 , and render the page including component 408 .
  • the user may interact with component 408 .
  • the component may comprise a document-based user interface object, such as a table, a data entry box, or other type of user interface.
  • signals indicating user events may be transmitted via network to remote computer 402 .
  • the signals may cause a change in the state of component 408 , so that the component includes updated information entered by the user.
  • state changes may be caused by server side logic, absent user interaction, as well.
  • Various states are indicated by original component 408 A and user-updated components 408 B and 408 C.
  • each time component 408 is changed by a user event or server side logic the change in the component may be represented in the remote computer's document object model 412 .
  • the representations of these changes are indicated at regions 418 and 420 .
  • a user event which causes component 408 to change from state 408 A to state 408 B will also cause the change 418 to document object model 412 .
  • a subsequent user event which causes component 408 to change from state 408 B to state 408 C will also cause the change 420 to document object model 412 .
  • the updated portion of the document object model may then translated into computer readable characters by processor 414 .
  • the translated update may be sent across communications network 404 to the user's browser 406 where it may be interpreted, added to the client document object model 422 , and rendered. Therefore, this alternative embodiment processes only changes to the document object model in remote computer 402 , and sends only the changed portions of the document object model to the user's computer 400 to be rendered by browser 406 .
  • the client may also interpret the incremental state changes, and incorporate them into the client's document object model 422 .
  • FIG. 5 is a flowchart illustrating a method of updating a document object model to reflect changes caused by the rendering of a document-based user interface software object therein.
  • a user may interact with the document-based user interface object, or server side business logic may be implemented, causing a user event that changes the state of the component.
  • This component state change is depicted at block 500 .
  • a signal representing the user event is transmitted from the user's computer to a remote computer, such as a server, where the document containing the component resides.
  • the document object model on the remote computer may be updated to represent the change which occurs in the user interface object due to the user interaction.
  • the change in the document object model may be detected.
  • the change constitutes the difference in the component between its state prior to the user interaction and after the user interaction.
  • the change may be detected at the client by comparing two versions of the document object model, by marking the document at the server to indicate the changes, or by other methods that will be apparent to those skilled in the art.
  • the detected change may be translated to computer readable characters, such as an HTML or XML string, which may be sent to the user's computer at block 506 .
  • a browser or other software running on the user's computer may incorporate the translated change into its own document object. The browser may then render the updated portion of the document-based user interface object as indicated at block 510 , and enable it to be displayed in its new state to the user, without having re-rendered the entire document.
  • FIG. 6 is a conceptual block diagram illustrating implementation of a location-neutral software user interface object.
  • the location-neutral software user interface object may comprise a JSF object, though it is to be understood that the teachings herein are not limited to use with JSF.
  • JSF components operate on a server system, which usually has larger storage and processing capacities than a client system.
  • JSF components have traditionally required a robust JSF “container” that includes software-based capabilities to support JSF components. Because of the amount of support a JSF component might require, the JSF container is quite large, resulting in the traditional need of a server-type machine for its storage and operation.
  • a JSF container may be constructed to be smaller and require less storage capacity.
  • a client-side JSF container having only certain capabilities of a traditional server-side JSF container may be developed and stored on a client system, thus enabling JSF components to operate locally on a client machine.
  • JSF document-based user interface components may be directly rendered in the client's document object model without the need to interact or communicate with a remote computer. Additionally, it is unnecessary to serialize the component representation to computer readable characters. Instead the rendering can occur directly into the client document object mode.
  • a user may interact with the component representation and a component representation of component 604 within that page may change states initiated by user events. Component 604 may also change states due to logic operations at the server side, as described above. Various states of component 604 are illustrated at 604 A, 604 B and 604 C.
  • the components may be supported by a JSF client-side container, stored in memory 606 on the client computer 600 .
  • a browser 608 may be resident and operable on the client computer 600 .
  • component state changes occur, whether by user interaction or server side logic, the component in its new state may be rendered directly into the client computer's document object model 610 .
  • the browser may then render the component and produce output 612 , so that the component may be displayed to the user even as it evolves, through the user's interaction with it or through changes invoked at the server side, as indicated by time arrow 602 .
  • some features of the novel client container that are not present in the traditional server container may exclude support for JSP compilation, support for HTTP serving, and include simplified threading and security, and direct collection and control of user input by a controller on the client rather than a through communication with a servlet on the server.
  • Threading and security may be simplified in the novel client container because clients typically do not experience the high volume of requests that servers are designed to handle. Such requests may flow from users and other computers, and will therefore not be prevalent on a client computer that is being operated in a local environment by a single user.
  • the novel client-side container of the exemplary embodiment may be stored and operated on either a client system and provide an identical containment environment to the server-based container, software developers will not need to know at the time of development where the component will ultimate reside.
  • developing a component often required knowledge of whether that component would need to operate on a server or on a client.
  • the code implementing that component could be very different.
  • the exemplary embodiment including a client-side container that duplicates the server-side containment environment, and that can be supported by a client system, enables software developers to create components without regard to which type of computer system the components will ultimately run on. This is because the component, no matter how it is coded by the software developer, can be supported by the novel client-side container, or the server-side container.
  • FIG. 7 is a flowchart illustrating a method of developing and implementing a location-neutral document object model-based software user interface object.
  • This type of software user interface object is capable of being supported by both a client and a server, and is not limited to deployment on either type of machine or device. Also, this type of software user interface object may be rendered by being represented in a document object model on whatever computer or device it is deployed on.
  • a software developer may write code to describe a document-based user interface object. This development is performed without regard to what kind of computer the object will ultimately be deployed on. The resultant document-based user interface object will be capable of being supported on either a client system or a server system.
  • a decision may be made regarding which type of computer it will reside on: client or server. This decision is indicated at block 702 .
  • the document-based user interface object is deployed on the computer of the selected type.
  • FIG. 8 illustrates an exemplary distributed computer system with which the various methods, systems and computer-readable media disclosed herein may be practiced.
  • a first computer 800 may be communicatively connected to a second computer 802 through a communications network 804 such as the Internet.
  • First computer 800 may comprise a client system or a server system, and may include a memory system 806 and a processor 808 .
  • Second computer 802 may also comprise a client system or a server system, and may also include a memory system 810 and a processor 812 .
  • a user input device 814 may be communicatively connected to the first computer 800 to allow a user to interact with document-based user interface components that are resident on the computer's memory system 806 .
  • processors 808 and 810 may be handled by processors 808 and 810 according to the methods described herein.
  • processors 808 and 810 enable the user interactions to be handled by processor 808 alone.
  • the methods disclosed herein may be stored on computer-readable media 816 in the form of instructions executable by a computer to perform the methods.

Abstract

Systems and methods for rendering document-based user interface software objects are disclosed. User interface software objects may be represented in a document object model on a first computer system. These objects may then be communicated to a second computer system on which they are similarly rendered through use of a document object model on a second computer system. A document on a first computer system may also be updated to reflect either user input through a user interface software object included in the document, or changes induced by server side logic. The updates may be incrementally communicated to and rendered in a second computer system. Location-neutral user interface software objects may be developed without regard to whether the software object will ultimately reside on a client or server computer system, wherein the user interface software object is equally capable of being supported on either one of a client or

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • The present application is a divisional application of co-pending U.S. patent application Ser. No. 10/877,461, filed Jun. 25, 2004.
  • FIELD
  • This disclosure relates to computer programming in a World Wide Web environment and, more specifically, to systems and methods relating to a component oriented software design approach in a document oriented user interface environment.
  • BACKGROUND
  • Current technologies for developing World Wide Web-related software applications can pose significant challenges to programmers. Such challenges concern interoperability, usability and maintainability. World Wide Web-related applications often require a document-oriented approach to designing user interfaces, while other types of software applications often require a component-oriented design approach. As will be explained below, document-oriented programming and component-oriented programming follow different, and sometimes conflicting, procedures.
  • The World Wide Web (“Web”) includes a system of Internet servers that support specially formatted documents. The documents are often called “Web pages.” Every Web page is identified by a unique Uniform Resource Locator (“URL”). Web pages are typically created in a “mark-up” computer language, such as HyperText Mark-up language (“HTML”), Extensible Mark-up Language (“XML”) or the like, that supports links to other documents, graphics, audio, and video files. A “mark-up language” is a computer language that describes how a page should be formatted by using specialized “tags.” An HTML tag is a code element that tells a Web browser what to do with text. Mark-up languages also enable a person accessing content on the Web to jump from one document to another simply by clicking on links that are embedded within Web pages. Specialized software applications called Web browsers (“browsers”) allow users to access the Web, and to retrieve and interact with documents on it. Browsers are typically capable of parsing HTML and retrieving Web pages using Hypertext Transfer Protocol (“HTTP”), File Transfer Protocol (“FTP”), and other protocols used to transfer information over networks. Two popular browsers are NETSCAPE NAVIGATOR and MICROSOFT INTERNET EXPLORER. Both are graphical browsers, meaning they can display graphics as well as text. To display graphics, such as images, software objects, and the like, the browser must be able to “render” the graphic. A Web browser is able to interpret the set of mark-up language tags within a page in order to display the page on your screen as the page's creator intended it to be viewed. Unfortunately, presenting certain types of information, and supporting certain interactions with a document pose challenges to the traditional rendering processes.
  • Software applications and documents that are accessible on the Web are often constructed from a set of software components, in accordance with a component software development paradigm. A “component” is typically a small binary object or program that performs a specific function. It is often designed in such a way as to easily operate with other components and applications. A set of interacting components may constitute a software application. The user interface for a software application may be implemented with UI components that include a visual representation and control element that handles interactions between the component's representation and the user. Certain classes of UI components may also be represented in documents that are available via the Internet. Thus, when a user accesses a Web page or other document with his browser, the browser renders the visual representation of each component contained in the document so that the components can be displayed to the user. Components may include controls that a user can interact with, such as tables, text boxes, and other user-interactive items. A control is typically a software-based item that can be individually selected and manipulated by a user.
  • Typically, Web pages are stored on large server machines. These machines may be accessed by individuals operating smaller client machines such as personal computers. When a user accesses a server Web page through a browser installed on his client machine, the browser typically retrieves the page from the server, and renders the page on the user's own client machine, so that the page can be viewed by the user. If the Web page comprises component representations, each component must be rendered by the browser. However, when a Web page includes component representations that a user can interact with, rather than merely static information, the content on a page may undergo changes after the page and its component representations have been displayed to the user. For example, a Web page may include a table component. Whenever the user interacts with a component representation in the server Web page, such as by manipulating data in the table, that component's state must be updated to reflect this interaction. The state change in the component could trigger addition state changes that must be ultimately reflected in the component representation on the user's display screen. These changes need to be shown to the user, but are often difficult to coordinate on an on-going basis, as a user continues to interact with the component, and component state changes are communicated back to the server. Currently, many Web applications rely on fetching from the server, in the form of mark-up language strings, then re-rendering an entire document upon every significant user event. Due to network latency and inherent rendering time, even the simplest updates to a component can cause significant inefficiencies and delays. Also, side effects from the delays including lost input focus and scrollbar position between page refreshes can occur during re-rendering. These can lead to reduced usability from a user's perspective. The process of converting components to mark-up language strings before rendering them, as well as the process of re-rendering an entire Web page upon user-interaction with only one component or portion of that page, can be tedious, cumbersome and time consuming. Furthermore, business logic state changes at the server that cause state changes in UI components cannot be asynchronously communicated to the component representation, and can only be realized when the page is refreshed after some user interaction with the component representation at the client.
  • In order to reduce the need for interacting with server-based documents and engage in time-consuming re-rendering, some Web applications have been designed to extend client-side capabilities so that updates may occur on the client itself. Specialized programming languages such as Dynamic HTML (“DHTML”) and JavaScript enable some degree of client-side operability. DHTML refers generally to Web content that is capable of being changed while it is being viewed. JavaScript is a programming language technology, called a scripting language, for manipulating DHTML. JavaScript enables Web authors to design interactive Web sites that include controls with which users interact. JavaScript can interact with HTML source code, enabling Web authors to enhance Web pages with dynamic interactive state. While usability of client-side Web applications may be improved through the use of DHTML and JavaScript, interoperability and maintenance of such Web applications have often been impeded by such methods. One reason for this is that JavaScript is not inherently portable. As a result, incompatibilities between different machines in communication with one another can manifest when components within a document or application break down. For example, different software vendors often employ incompatible standards for JavaScript execution, and a single vendor may often support different JavaScript versions. One result of these incompatibilities is that JavaScript code relies on customized code for each combination of supported browser vendor and software version, and often cannot be easily maintained on a client machine. A Web application may be rendered completely unusable when a single component fails to operate due to an incompatibility.
  • In short, programmers can currently face significant challenges when designing user interfaces for component-based applications created for a networked Web-like environment. The ability to efficiently render updated versions of component-based applications and documents following user input to a user interface to those applications and documents is often significantly limited.
  • SUMMARY
  • In one aspect of the present invention, computer-readable media embodies instructions executable by a first computer system that cause the first computer system to perform a method of rendering a document-based user interface software object. The method includes representing the document-based user interface software object in a document object model that comprises a data structure for representing documents in the first computer system, translating the document object model, including the representation of the document-based user interface software object, into computer-readable characters, and transmitting the computer-readable characters to a second computer system.
  • In another aspect of the present invention, a method of rendering a document-based user interface object includes storing a document-based user interface object in a computer system, storing a document object model, that comprises a data structure for representing documents, in the computer system, and representing the document-based user interface object in the document object model in the computer system.
  • In a further aspect of the invention, a computer server system includes a memory system configured to include a document object model that comprises a data structure for representing documents on the computer server system, and a processing system configured to communicate with the memory system and with a client computing system. The processing system is also configured to (a) receive information, from the client computing system or from the server system, that causes a change to the document object model, (b) identify the change to the document object model, and (c) communicate the identified change to the client computing system.
  • In still another aspect of the invention, a computer system includes a first computing system configured to communicate with a second computing system, a memory device connected to the first computing system and configured to store a first document object model that comprises a data structure for representing documents on the first computing system, wherein the first document object model comprises a replication of a second document object model that is resident on the second computing system, and a processor connected to the first computing system and configured to receive input from either the first or the second computing system, wherein the input represents a change in the first document object model detected by the second computing system. The processor is additionally configured to represent the received input in the first document object model.
  • In yet another aspect of the invention, a method of developing and deploying a location-neutral document object model-based user interface software object, that is capable of being supported separately by each one of a client and a server, and that is capable of being represented in a document object model, includes developing software code to implement the location-neutral document object model-based user interface software object, wherein the development occurs in a manner that is not a function of whether the code will be deployed on a client computer system or a server computer system, deciding whether the software object code will be deployed on a client computer system or a server computer system, and deploying the software object code on a type of computing system on which the software object code was decided to be deployed. The location-neutral document object model-based user interface software object is capable of being supported separately by each one of a client computer system and server computer system and is capable of being represented in a document object model on the computing system on which the software object code was deployed.
  • In a further aspect of the invention, a method of programming a Web application having a location-neutral document object model-based user interface software object includes assembling a plurality of software objects to create a software application, wherein one of the plurality of software objects comprises the location-neutral document object-based user interface software object that is capable of being deployed on both a client computing system and a server computing system and is capable of being represented in a document object model.
  • It is understood that other embodiments of the specific teachings herein will become readily apparent to those skilled in the art from the following detailed description, wherein it is shown and described only several embodiments of the teachings by way of illustration. As will be realized, the subject matter of the teachings herein is capable of other and different embodiments and its several details are capable of modification in various other respects, all without departing from the spirit and scope of these teachings. Accordingly, the drawings and detailed description are to be regarded as illustrative in nature and not as restrictive.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • Aspects of the disclosures herein are illustrated by way of example, and not by way of limitation, in the accompanying drawings, wherein:
  • FIG. 1 is a conceptual block diagram of a prior art system for updating server components displayed in a web page on a client within a client-server architecture;
  • FIG. 2 is a conceptual block diagram illustrating a system for rendering a document-based user interface software object in a document object model;
  • FIG. 3A is a flowchart illustrating a method of rendering a document-based user interface software object in a document object model;
  • FIG. 3B is a flowchart illustrating one aspect of rendering a document-based user interface software object in a document object model;
  • FIG. 4 is a conceptual block diagram illustrating a system for updating a document object model to reflect changes caused by the rendering of a document-based user interface software object therein;
  • FIG. 5 is a flowchart illustrating a method of updating a document object model to reflect changes caused by the rendering of a document-based user interface software object therein;
  • FIG. 6 is a conceptual block diagram illustrating implementation of a location-neutral software user interface object;
  • FIG. 7 is a flowchart illustrating a method of developing and implementing a location-neutral software user interface object; and
  • FIG. 8 illustrates an exemplary distributed computer system in which the various methods, systems and computer-readable media disclosed herein may be practiced.
  • DETAILED DESCRIPTION
  • The detailed description set forth below in connection with the appended drawings is intended as a description of various embodiments of the teachings herein and is not intended to represent the only embodiments in which the teachings herein may be practiced. The detailed description includes specific details for the purpose of providing a thorough understanding of the teachings. However, it will be apparent to those skilled in the art that the teachings herein may be practiced without these specific details. In some instances, well-known structures and devices are shown in block diagram form in order to avoid obscuring the concepts of the teachings herein. Acronyms and other descriptive terminology may be used merely for convenience and clarity and are not intended to limit the scope of the teachings herein.
  • In the following detailed description, aspects of the teachings herein will be described in the context of a document object model. While these inventive aspects may be well suited for use with the W3C DOM, which will be explained in further detail below, those skilled in the art will readily appreciate that they are likewise applicable for use in various other document object models. Accordingly, any reference to a document object model is intended only to illustrate various aspects of the disclosures herein, with the understanding that such aspects have a wide range of applications.
  • As described above, Web pages are typically stored on large server machines, which may be accessed by individuals operating smaller client machines such as personal computers. When a user accesses a server Web page through a browser installed on his client machine, the browser typically retrieves the page from the server, and renders the page on the user's own client machine, so that the page can be viewed by the user. If the Web page comprises software component representations, each component representation must be analyzed and rendered by the browser. FIG. 1 is a conceptual block diagram of a prior art system for updating component representations in a web page that is stored on a server and rendered on a client within a client-server architecture. A server 100 is communicatively connected to a client 102 via a communications network 104, such as the Internet. A Web page stored on the server 100 may include one or more components 106, 108, 110. Each component may be operatively connected to a rendering engine 112, 114, 116, respectively, each of which generates instructions for causing the components 106, 108, 110 to ultimately be rendered on the user's client machine 102 as a component representation 118. There may be a one-to-one mapping between a component on the server and its component representation on the client. For example, component representations 120, 122 and 124 may correspond to components 106, 108 and 110, respectively. Often, the type of instructions that the rendering engines 112, 114, 116 produce will depend on the type of computer language that the client machine 102 converses in. For example, some client machines may require instructions in XML, while others may communicate with HTML. According to the type of client machine 102 requesting a document from the server 100, a rendering engine may cause information from a component to be represented as a string of special characters 119, such as markup text language characters. Markup text includes but is not limited to HTML and XML. These character strings 119 are then transmitted via the network 104 to the client 102, where they are read by a browser 120. The browser 120 then reads the strings 119 and causes them to be rendered as component representations 118 on a display screen attached to the client 102.
  • Components 106, 108 and 110 may undergo state changes, as indicated by 106A, 108A, 110A. State changes may occur at either the client side or the server side. Some types of components, such as user interface components, can directly receive input from a user. A user interface typically comprises a junction between a user and a computer program. It may include a set of commands or menus through which a user communicates with a program. A command-driven interface is one in which the user enters commands. A menu-driven interface is one in which the user selects command choices from various menus displayed on a screen. Graphical user interfaces (“GUIs”) may use windows, icons, and pop-up menus to simplify the process of interacting with a computer program from the perspective of a user. A software application's user interface sometimes constitutes one of the most important parts of a computer program because it determines how easily a user can interact with and control the program. When a Web page includes component representations that a user can interact with, rather than merely static information, the content on a page may undergo changes after the page and its component representations have been displayed to the user. Whenever the user interacts with a component representation in the server Web page, such as by manipulating data in a table or other type of user interface control, not only must the component representation be reflected on the users display, but the actual server-resident component must be updated to reflect the state changes resulting from this interaction. Components may also undergo state changes at the server side, absent user manipulation. For example, back-end business logic operating on the server machine may cause a component to change its state. These state changes also must be updated on the user display.
  • Coordination of state changes across the client-server architecture are often difficult to implement. Returning to FIG. 1, it can be seen that web applications that rely on fetching from the server then re-rendering an entire document upon every significant user event will cause the entire Web page to be re-rendered every time that browser 120 receives a string 118 reflecting user interaction with a user interface component. Also, component state changes caused by server side logic generally cannot be reflected in the client side component representation asynchronously. In other words, even though a component state may change at the server side, its representation at the client side often cannot be updated until a user event, or user interaction with the component causing communication back to the server, occurs. Network latency and inherent rendering time can cause even the simplest updates to a user interface to generate significant inefficiencies and delays. In the case of server side component state changes, updates may be significantly delayed pending user input to induce an update. Thus, the ability to render an updated document-based user interface component representation without re-rendering the entire document or Web page would significantly improve update time and the overall user experience.
  • Within a computer, information is often organized as a set of “objects,” which will be explained in further detail below. When transmitted, the set of objects is sent as a “document.” A document object model comprises a specification establishing a common way for programmers to access a document as a set of objects. One example of a document object model is the W3C DOM specification, which is being developed by the World Wide Web Consortium (“W3C”) and defines a model for document objects. The W3C DOM comprises a platform-neutral and language-neutral interface that allows software programs and scripts to dynamically access and update the content, structure and style of documents such as Web pages and the like. The W3C DOM comprises a standard set of objects for representing HTML and XML documents, a standard model of how these objects can be combined, and a standard interface for accessing and manipulating them. Even after it is presented, a document can be further processed and the results of that processing can be incorporated back into the presented page, using the DOM. Software vendors can support any defined document object model, whether the W3C DOM or another model, as an interface to their proprietary data structures and application program interfaces (“APIs”). Content authors, such as Web programmers, can write to the standard document object model interfaces rather than to the product-specific APIs of particular vendors. This increases interoperability of independently created applications and documents on the Web. The W3C DOM is only one example of a document object model. A document object model may also include specifications for other types of mark-up languages and objects. It is to be understood that the term “document object model” as used herein is not intended to be limited to the W3C DOM or to refer only to HTML and XML.
  • As explained above, “DHTML” refers to Web content that changes while it is viewed. Through the use of JavaScript, DHTML can handle certain types of user interactions locally without requiring communication of with the server to process state changes. For example, a button component representation can change color when the user moves a mouse pointing device over the button.
  • DHTML typically relies on a document object model, which as explained above may be a platform- and language-neutral interface that allows programs and scripts to dynamically access and update the content, structure and style of documents. The document can be further processed and the results of that processing can be incorporated back into the presented page. The document object module may be used according to the teachings herein to dynamically change the appearance of Web pages after they have been downloaded to a user's browser. A document object model may define what attributes are associated with each object, and how the objects and attributes can be manipulated. The term “object” as used herein refers generally to any software-based item that can be individually selected and manipulated within a software application. Objects may include shapes and pictures that appear on a display screen and comprise the user interface of a software application, various types of controls, and less user-tangible software entities that may comprise other business logic within the software application. In object-oriented programming, for example, an object may be a self-contained entity that comprises both data and procedures to manipulate the data. Thus, a document object model may comprise a specification for how objects including, but not limited to, text, images, headers, or links are represented in a Web page. The term “attribute” refers generally to a language construct that programmers use to add additional information (e.g. metadata) to code elements. This additional information may extend the functionality of code elements such as assemblies, modules, members, types, return values and parameters.
  • In accordance with the teachings herein, document based user interface objects may be programmed in any of a number of currently known languages or other languages to be developed in the future. While the specification may refer to Java and JavaServer Faces as an exemplary language and framework for constructing objects for use with the teachings herein, it is to be understood that other languages and frameworks are also applicable, and that the particular examples disclosed herein are referenced for illustrative purposes only. Java is a high-level object-oriented language that may be considered similar to C++, but simplified to eliminate language features that have resulted in common programming errors. As such, Java is an example of a general purpose programming language with a number of features that make the language well suited for use on the World Wide Web. Small Java applications are sometimes called Java “applets” and can be downloaded from a Web server to run on a local computer by a Java-compatible browser. As explained above, “components” are small binary objects or programs that perform a specific function and are designed in such a way to easily operate with other components and applications. Java source code files (files with a .java extension) may be compiled into a format called bytecode (files with a class extension), which can then be executed by a Java interpreter. Compiled Java code can run on many computers because Java interpreters and runtime environments, known as Java Virtual Machines (“VMs”), exist for many operating systems, including UNIX, the Macintosh OS, and Windows. Bytecode can also be converted directly into machine language instructions by a just-in-time (“JIT”) compiler.
  • JavaServer Faces (“JSF”) comprises a framework for building Web-based user interfaces in the Java programming language. JSF provides a set of standard components, such as buttons, hyperlinks, checkboxes, and the like, that may be represented in a document. JSF also provides a facility for creating custom components, and the functionality to process client-generated events such as those that result when a user changes the value in a text box or clicks on a button in a user interface component. Through the use of specialized libraries called “RenderKits,” which translate each component into mark-up language, JSF allows component representations to be displayed on a variety of target clients when it knows the mark-up dialect of those clients. For example, if it is known that a target client communicates in HTML, a JSF component can operate by rendering itself in HTML for that target client if an appropriate HTML RenderKit is associated with the component. The same JSF component could also render itself in XML, if it were informed that the target client communicates in XML, and if an appropriate XML RenderKit were associated with the component.
  • JSF comprises a technology that includes a set of APIs and a JavaServer Pages (JSP) custom tag library. The APIs function to represent user interface components, manage their state, handle events and input validation, define page navigation, and support internationalization and accessibility. The custom tag library provides developers with the ability to express a JavaServer Faces interface within a JSP page. In accordance with the teachings herein, document based user interface components may comprise JSF components, but are not limited to JSF. The novel concepts disclosed herein are applicable to other frameworks as well, and any reference made herein to JSF is for illustrative purposes only.
  • FIG. 2 is a conceptual block diagram illustrating a system for rendering a document-based user interface software object in a document object model, whereby delays and inefficiencies experienced in many prior art systems may be significantly reduced. A user at a first computer 200 may access a document stored on a remote computer 202 over a communications network 204. The computers may be part of a network, such as a client-server network. A client-server architecture is a network architecture in which each computer or process on the network comprises either a client or a server. A server is generally a computer or device on a network that provides information to a client. Typically, clients are devices that make requests for information, and servers are devices that respond to the requests with information. For example, servers can be configured to manage network resources by handling resource requests. Often, servers are powerful computers or processors dedicated to managing disk drives (file servers), printers (print servers), network traffic (network servers), or information resources. For example, a file server may be a computer and storage device dedicated to storing files. Any user on the network can store files on the server. A print server may be a computer that manages one or more printers, and a network server is a computer that manages network traffic. A database server may be a computer system that processes database queries. Servers are often dedicated, meaning that they perform no other tasks besides their server tasks. On multiprocessing operating systems, however, a single computer can execute several programs at once. A server in this case could refer to the program that is managing resources rather than the entire computer. Though servers are often used to manage resources as described above, a server may be any type of machine or device that handles requests from clients, and is not necessarily a machine dedicated to managing resources. Moreover, servers need not be larger or more powerful than clients. As used herein, the term “server” refers to any type of machine or device that responds to requests.
  • Clients, on the other hand, usually include PCs or workstations on which users run applications. Clients may rely on servers for resources, such as files, devices, and even processing power. More generally, a client may be a device or machine that relies on a server to perform some operations, or that queries a server for information. A client may even be an application that runs on a machine and relies on a server to perform some operations. For example, an e-mail client is an application that enables you to send and receive e-mail. A computer network that includes a server and a client in communication with one another is often called client-server architecture. Another type of network architecture is known as a peer-to-peer architecture because each node in the network has equivalent responsibilities. In addition to the various examples of clients just described, a client may include any device that makes requests to another machine or device. Thus, as used herein the term “client” refers to any type of machine or device that makes requests As will be recognized by those skilled in the art, various aspects of the teachings herein may apply to both client-server architectures and peer-to-peer architectures.
  • Returning now to a description of FIG. 2, first computer 200 may comprise a client, remote computer 202 may comprise a server or a second client, and communications network 204 may comprise the Internet. Through a browser 206 operated on the user's computer 200, the user may request a document that includes one or more components 208, 210, 212. Each component of the document must eventually be represented to the user during page processing, which is indicated by arrow 214. Component 208 is shown at various stages 208A, 208B, 208C, which may occur at either the client side or server side. As explained above, the difference in each stage of component 208 may be caused by a user event, initiated by input from the user interacting with component 208 to change its state, or by logic implemented at the server side. For example, component 208 may comprise a table, and may reflect different data values at each of its states 208A, 208B and 208C if the user interacts with the table to alter, add or delete the data therein. Alternatively, business logic operating on the server may induce updates to component 208, causing state changes which are represented by states 208A, 208B, 208C. State changes within a single component may occur after initial rendering of all components The updating of component 208 to reflect its various states that are caused by user interaction or server side logic will be described in further detail below.
  • When the document is first retrieved by browser 206, it may be represented in the remote computer's document object model 216. As will be understood by those skilled in the art, this may be accomplished, for example, by adding the document or a component within the document to the remote computer's document object model, so that it may be rendered on a display screen connected to the user's computer 200. A processor 218 may then serialize the document object model, or translate it into computer readable characters that can be communicated across network 204 to the user's computer 200. The serialized document object model may comprise an HTML string, an XML string, or other computer readable characters. When browser 206 receives the serialized document object model, it may interpret the string and render the page including components 208, 210, 212, which are displayed to the user as component representations 220. As described above, component representations 220 may have one-to-one correspondence to components on the server. For example each component representation 222, 224, 226 may correspond to components 208, 210, 212, respectively.
  • At of the completion of initial page processing, the user may interact with one of components 208, 210, 212 via their component representations 220 at the client side. For example, a component may comprise a document-based user interface object, such as a table, a data entry box, or other type of user interface control. As the user interacts with the component representation from his computer 200, signals indicating user events are transmitted via network to remote computer 202. The signals cause a change in the state of component 208, so that it may comprise updated information entered by the user. As described above, state changes may also be caused by server side logic, absent user interaction at the client side. Various states of component 208 are indicated by original component 208A and user-updated components 208B and 208C. Each time component 208 is changed, either by a user event, by server side logic, by a user event that triggers server-driven state changes, or by other mechanisms, the changed component may be represented in the remote computer's document object model 216. The updated document object model may then be translated into computer readable characters by processor 218 as described above, and sent across communications network 204 to the user's browser 206 where it may be interpreted and rendered.
  • FIG. 3A is a flowchart illustrating a method of rendering a document-based user interface software object in a document object model. This and other methods may be implemented by the exemplary system described above. At block 300, the user may request a document such as a Web page from a remote computer. The request may then be implemented by a browser operable on the user's local computer. The requested document may include a document-based user interface object. At block 302, the remote computer may represent the document-based user interface object in the remote computer's document object model. At block 304, the remote computer's document object model, which now includes information representing the document-based user interface object, may be translated into computer readable characters such as HTML, XML or other mark-up language. The computer readable characters may then be sent to the user's computer at block 306, and at block 308 the user's computer may incorporate the transmitted computer readable characters into its own document object model. Through this process, the document-based user interface object may be rendered and displayed by the user's browser on a display screen operatively connected to the user's computer. As the user interacts with the document-based user interface object, and causes changes in the object by doing so, those changes may be reflected in the remote computer's document object model before transmission to the user's computer. Using this method eliminates the need to re-process the entire page and recreate the document object model, when the state of a single object changes.
  • FIG. 3B is a flowchart illustrating one aspect of rendering a document-based user interface software object in a document object model. In order to render a document-based user interface software object in a document object model, the document object model should reside on a computer on which the document-based user interface object is also stored. Thus, the computer may have a memory system for storing both the document-based user interface object, and data that describe the document object model, as indicated at block 310. Those skilled in the art will recognize suitable types of memory systems for storing such data. The same memory system, or a different memory system that is also in communication with the computer, may store the software code which describes the document-based user interface object. This is indicated at block 312. Finally, at block 314, the document-based user interface object may be represented in the document object model on the computer.
  • FIG. 4 is a conceptual block diagram illustrating a system for updating a document object model to reflect changes caused by the rendering of a document-based user interface software object therein. A user at a first computer 400 may access a document stored on a remote computer 402 over a communications network 404. First computer 400 may comprise a client, remote computer 402 may comprise a server or a second client, and communications network 404 may comprise the Internet. Through a browser 406 operated on the user's computer 400, the user may request a document that includes a component representation 409 of component 408. Component 408 is shown at various stages 408A, 408B, 408C, which may occur during user interaction with the component representation of component 408, or from logic enacted at the server side. While a document is displayed to a user, these state changes may occur over time, as indicated by time arrow 410. The difference in each stage of component 408 may be caused by a user event or server side logic, as explained above with respect to FIG. 2 and in further detail below.
  • When the document is first retrieved by browser 406, it may be represented in the remote computer's document object model 412. A processor 414 may then serialize the document object model representation, indicated at 416, by translating it into computer readable characters that can be communicated across network 404 to the user's computer 400. The serialized document object model 416 may comprise an HTML string, an XML string, or other computer readable characters. When browser 406 receives the serialized document object model, it may interpret the string, create its own document object model 422, and render the page including component 408.
  • After initial page processing the user may interact with component 408. For example, the component may comprise a document-based user interface object, such as a table, a data entry box, or other type of user interface. As the user interacts with the component representation from his computer 400, signals indicating user events may be transmitted via network to remote computer 402. The signals may cause a change in the state of component 408, so that the component includes updated information entered by the user. As explained above, state changes may be caused by server side logic, absent user interaction, as well. Various states are indicated by original component 408A and user-updated components 408B and 408C. In this alternative embodiment, each time component 408 is changed by a user event or server side logic, the change in the component may be represented in the remote computer's document object model 412. The representations of these changes are indicated at regions 418 and 420. Thus, a user event which causes component 408 to change from state 408A to state 408B will also cause the change 418 to document object model 412. Likewise, a subsequent user event which causes component 408 to change from state 408B to state 408C will also cause the change 420 to document object model 412. At this point, instead of translating the entire document object model, the updated portion of the document object model may then translated into computer readable characters by processor 414. The translated update may be sent across communications network 404 to the user's browser 406 where it may be interpreted, added to the client document object model 422, and rendered. Therefore, this alternative embodiment processes only changes to the document object model in remote computer 402, and sends only the changed portions of the document object model to the user's computer 400 to be rendered by browser 406. The client may also interpret the incremental state changes, and incorporate them into the client's document object model 422.
  • FIG. 5 is a flowchart illustrating a method of updating a document object model to reflect changes caused by the rendering of a document-based user interface software object therein. As discussed above, a user may interact with the document-based user interface object, or server side business logic may be implemented, causing a user event that changes the state of the component. This component state change, whether implemented by client side user interaction or server side logic, is depicted at block 500. A signal representing the user event is transmitted from the user's computer to a remote computer, such as a server, where the document containing the component resides. At block 502, the document object model on the remote computer may be updated to represent the change which occurs in the user interface object due to the user interaction. At block 504, the change in the document object model may be detected. The change constitutes the difference in the component between its state prior to the user interaction and after the user interaction. The change may be detected at the client by comparing two versions of the document object model, by marking the document at the server to indicate the changes, or by other methods that will be apparent to those skilled in the art. The detected change may be translated to computer readable characters, such as an HTML or XML string, which may be sent to the user's computer at block 506. At block 508, a browser or other software running on the user's computer may incorporate the translated change into its own document object. The browser may then render the updated portion of the document-based user interface object as indicated at block 510, and enable it to be displayed in its new state to the user, without having re-rendered the entire document.
  • FIG. 6 is a conceptual block diagram illustrating implementation of a location-neutral software user interface object. In an exemplary embodiment, the location-neutral software user interface object may comprise a JSF object, though it is to be understood that the teachings herein are not limited to use with JSF. Typically, JSF components operate on a server system, which usually has larger storage and processing capacities than a client system. JSF components have traditionally required a robust JSF “container” that includes software-based capabilities to support JSF components. Because of the amount of support a JSF component might require, the JSF container is quite large, resulting in the traditional need of a server-type machine for its storage and operation. In an exemplary embodiment of the systems taught herein, a JSF container may be constructed to be smaller and require less storage capacity. In the exemplary embodiment, illustrated in FIG. 6, a client-side JSF container having only certain capabilities of a traditional server-side JSF container may be developed and stored on a client system, thus enabling JSF components to operate locally on a client machine.
  • When the client-side JSF container of the exemplary embodiment is included on a client computer 600, JSF document-based user interface components may be directly rendered in the client's document object model without the need to interact or communicate with a remote computer. Additionally, it is unnecessary to serialize the component representation to computer readable characters. Instead the rendering can occur directly into the client document object mode. Over time, indicated by arrow 602, a user may interact with the component representation and a component representation of component 604 within that page may change states initiated by user events. Component 604 may also change states due to logic operations at the server side, as described above. Various states of component 604 are illustrated at 604A, 604B and 604C. The components may be supported by a JSF client-side container, stored in memory 606 on the client computer 600. A browser 608 may be resident and operable on the client computer 600. When component state changes occur, whether by user interaction or server side logic, the component in its new state may be rendered directly into the client computer's document object model 610. The browser may then render the component and produce output 612, so that the component may be displayed to the user even as it evolves, through the user's interaction with it or through changes invoked at the server side, as indicated by time arrow 602.
  • In the exemplary embodiment, some features of the novel client container that are not present in the traditional server container may exclude support for JSP compilation, support for HTTP serving, and include simplified threading and security, and direct collection and control of user input by a controller on the client rather than a through communication with a servlet on the server. Threading and security may be simplified in the novel client container because clients typically do not experience the high volume of requests that servers are designed to handle. Such requests may flow from users and other computers, and will therefore not be prevalent on a client computer that is being operated in a local environment by a single user.
  • Because the novel client-side container of the exemplary embodiment may be stored and operated on either a client system and provide an identical containment environment to the server-based container, software developers will not need to know at the time of development where the component will ultimate reside. Prior to conceiving the systems taught herein, developing a component often required knowledge of whether that component would need to operate on a server or on a client. Depending on which type of system the component was designed for, the code implementing that component could be very different. However, the exemplary embodiment, including a client-side container that duplicates the server-side containment environment, and that can be supported by a client system, enables software developers to create components without regard to which type of computer system the components will ultimately run on. This is because the component, no matter how it is coded by the software developer, can be supported by the novel client-side container, or the server-side container.
  • FIG. 7 is a flowchart illustrating a method of developing and implementing a location-neutral document object model-based software user interface object. This type of software user interface object is capable of being supported by both a client and a server, and is not limited to deployment on either type of machine or device. Also, this type of software user interface object may be rendered by being represented in a document object model on whatever computer or device it is deployed on. At block 700, a software developer may write code to describe a document-based user interface object. This development is performed without regard to what kind of computer the object will ultimately be deployed on. The resultant document-based user interface object will be capable of being supported on either a client system or a server system. After the object is developed, a decision may be made regarding which type of computer it will reside on: client or server. This decision is indicated at block 702. Then, at block 704, the document-based user interface object is deployed on the computer of the selected type.
  • FIG. 8 illustrates an exemplary distributed computer system with which the various methods, systems and computer-readable media disclosed herein may be practiced. A first computer 800 may be communicatively connected to a second computer 802 through a communications network 804 such as the Internet. First computer 800 may comprise a client system or a server system, and may include a memory system 806 and a processor 808. Second computer 802 may also comprise a client system or a server system, and may also include a memory system 810 and a processor 812. A user input device 814 may be communicatively connected to the first computer 800 to allow a user to interact with document-based user interface components that are resident on the computer's memory system 806. These interactions may be handled by processors 808 and 810 according to the methods described herein. Of course, some embodiments disclosed herein enable the user interactions to be handled by processor 808 alone. The methods disclosed herein may be stored on computer-readable media 816 in the form of instructions executable by a computer to perform the methods.
  • The previous description of the disclosed embodiments is provided to enable any person skilled in the art to make or use the teachings herein. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without departing from the spirit or scope of the teachings disclosed herein. Thus, the scope of the disclosures herein is not intended to be limited to the embodiments shown and described, but is to be accorded the widest scope consistent with the general principles and novel features disclosed herein.

Claims (8)

1. Computer-readable media embodying instructions executable by a first computer system that cause the first computer system to perform a method of rendering a document-based user interface software object, the method comprising:
representing the document-based user interface software object in a document object model that comprises a data structure for representing documents in the first computer system;
translating the document object model, including the representation of the document-based user interface software object, into computer-readable characters; and
transmitting the computer-readable characters to a second computer system.
2. The computer-readable media of claim 1, wherein the software objects comprise HTML code.
3. The computer-readable media of claim 1, wherein the software objects comprise XML code.
4. The computer-readable media of claim 1, wherein the first computing system comprises a server and the second computer system comprises a client.
5. The computer-readable media of claim 1, wherein the first computing system comprises a client.
6. A method of rendering a document-based user interface object comprising:
storing a document-based user interface object in a computer system;
storing a document object model, that comprises a data structure for representing documents, in the computer system; and
representing the document-based user interface object in the document object model in the computer system.
7. The method of claim 6, wherein the computer system comprises a server.
8. The method of claim 6, wherein the computer system comprises a client.
US11/830,624 2004-06-25 2007-07-30 Systems and methods for rendering and increasing portability of document-based user interface software objects Abandoned US20070271283A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US11/830,624 US20070271283A1 (en) 2004-06-25 2007-07-30 Systems and methods for rendering and increasing portability of document-based user interface software objects
US12/895,712 US20110083070A1 (en) 2004-06-25 2010-09-30 Systems and methods for rendering and increasing portability of document-based user interface software objects

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/877,461 US7954050B2 (en) 2004-06-25 2004-06-25 Systems and methods for rendering and increasing portability of document-based user interface software objects
US11/830,624 US20070271283A1 (en) 2004-06-25 2007-07-30 Systems and methods for rendering and increasing portability of document-based user interface software objects

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US10/877,461 Division US7954050B2 (en) 2004-06-25 2004-06-25 Systems and methods for rendering and increasing portability of document-based user interface software objects

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US12/895,712 Continuation US20110083070A1 (en) 2004-06-25 2010-09-30 Systems and methods for rendering and increasing portability of document-based user interface software objects

Publications (1)

Publication Number Publication Date
US20070271283A1 true US20070271283A1 (en) 2007-11-22

Family

ID=35507331

Family Applications (3)

Application Number Title Priority Date Filing Date
US10/877,461 Active 2027-01-18 US7954050B2 (en) 2004-06-25 2004-06-25 Systems and methods for rendering and increasing portability of document-based user interface software objects
US11/830,624 Abandoned US20070271283A1 (en) 2004-06-25 2007-07-30 Systems and methods for rendering and increasing portability of document-based user interface software objects
US12/895,712 Abandoned US20110083070A1 (en) 2004-06-25 2010-09-30 Systems and methods for rendering and increasing portability of document-based user interface software objects

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US10/877,461 Active 2027-01-18 US7954050B2 (en) 2004-06-25 2004-06-25 Systems and methods for rendering and increasing portability of document-based user interface software objects

Family Applications After (1)

Application Number Title Priority Date Filing Date
US12/895,712 Abandoned US20110083070A1 (en) 2004-06-25 2010-09-30 Systems and methods for rendering and increasing portability of document-based user interface software objects

Country Status (4)

Country Link
US (3) US7954050B2 (en)
EP (1) EP1769340A4 (en)
AU (2) AU2005256935A1 (en)
WO (1) WO2006000894A2 (en)

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070192364A1 (en) * 2005-12-29 2007-08-16 International Business Machines Corporation Apparatus and method for porting of business logic among computer platforms
US20090003704A1 (en) * 2007-06-29 2009-01-01 Nhn Corporation Method and system for controlling browser by using image
WO2010043062A1 (en) * 2008-10-16 2010-04-22 Unblu Inc. Capturing the visual content of browser windows
US20120110601A1 (en) * 2010-10-28 2012-05-03 Spencer Andrew M Dynamically installing image processing
US20130283241A1 (en) * 2013-02-12 2013-10-24 Concurix Corporation Periodicity Optimization in an Automated Tracing System
US20140253574A1 (en) * 2013-03-05 2014-09-11 Research In Motion Limited Development Environment For Capture Of Image Data From A Mobile Device
US20140258968A1 (en) * 2013-03-05 2014-09-11 Research In Motion Limited Visual Representation Of Edits For Collaborative Application Development
US20140258969A1 (en) * 2013-03-05 2014-09-11 Research In Motion Limited Web-Based Integrated Development Environment For Real-Time Collaborative Application Development
US20140258970A1 (en) * 2013-03-11 2014-09-11 Research In Motion Limited Collaborative application development environment using a connected device
US20140258894A1 (en) * 2013-03-05 2014-09-11 Research In Motion Limited Visual Timeline Of An Application History
US9542379B1 (en) * 2012-09-19 2017-01-10 Amazon Technologies, Inc. Synchronizing electronic publications between user devices
US9575874B2 (en) 2013-04-20 2017-02-21 Microsoft Technology Licensing, Llc Error list and bug report analysis for configuring an application tracer
US9658936B2 (en) 2013-02-12 2017-05-23 Microsoft Technology Licensing, Llc Optimization analysis using similar frequencies
US9665474B2 (en) 2013-03-15 2017-05-30 Microsoft Technology Licensing, Llc Relationships derived from trace data
CN107015795A (en) * 2017-01-11 2017-08-04 阿里巴巴集团控股有限公司 A kind of method and device for drawing user interface
US9767006B2 (en) 2013-02-12 2017-09-19 Microsoft Technology Licensing, Llc Deploying trace objectives using cost analyses
US9772927B2 (en) 2013-11-13 2017-09-26 Microsoft Technology Licensing, Llc User interface for selecting tracing origins for aggregating classes of trace data
US9773264B2 (en) 2013-03-26 2017-09-26 Blackberry Limited Method for providing composite user interface controls and an online storefront for same
US9864672B2 (en) 2013-09-04 2018-01-09 Microsoft Technology Licensing, Llc Module specific tracing in a shared module environment
CN108241501A (en) * 2018-01-26 2018-07-03 长春玖佰软件技术有限公司 A kind of mobile client software is realized and update method
US20180210725A1 (en) * 2017-01-26 2018-07-26 Nice Ltd. Image based method and system for building object model and application states comparison and graphic-based interoperability with an application
US10178031B2 (en) 2013-01-25 2019-01-08 Microsoft Technology Licensing, Llc Tracing with a workload distributor
US10740123B2 (en) 2017-01-26 2020-08-11 Nice Ltd. Method and system for accessing table content in a digital image of the table
US11790110B2 (en) 2021-02-09 2023-10-17 Nice Ltd. System and method for preventing sensitive information from being recorded

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040024843A1 (en) * 2002-07-31 2004-02-05 Smith Christopher T. Method for provisioning distributed web applications
US9715678B2 (en) 2003-06-26 2017-07-25 Microsoft Technology Licensing, Llc Side-by-side shared calendars
US7716593B2 (en) 2003-07-01 2010-05-11 Microsoft Corporation Conversation grouping of electronic mail records
US7707255B2 (en) 2003-07-01 2010-04-27 Microsoft Corporation Automatic grouping of electronic mail
US8799808B2 (en) 2003-07-01 2014-08-05 Microsoft Corporation Adaptive multi-line view user interface
US10437964B2 (en) 2003-10-24 2019-10-08 Microsoft Technology Licensing, Llc Programming interface for licensing
US8255828B2 (en) 2004-08-16 2012-08-28 Microsoft Corporation Command user interface for displaying selectable software functionality controls
US7895531B2 (en) 2004-08-16 2011-02-22 Microsoft Corporation Floating command object
US7703036B2 (en) 2004-08-16 2010-04-20 Microsoft Corporation User interface for displaying selectable software functionality controls that are relevant to a selected object
US8146016B2 (en) 2004-08-16 2012-03-27 Microsoft Corporation User interface for displaying a gallery of formatting options applicable to a selected object
US9015621B2 (en) 2004-08-16 2015-04-21 Microsoft Technology Licensing, Llc Command user interface for displaying multiple sections of software functionality controls
US8117542B2 (en) 2004-08-16 2012-02-14 Microsoft Corporation User interface for displaying selectable software functionality controls that are contextually relevant to a selected object
US20060041879A1 (en) * 2004-08-19 2006-02-23 Bower Shelley K System and method for changing defined user interface elements in a previously compiled program
US7634721B1 (en) * 2004-08-23 2009-12-15 Sun Microsystems Inc. Composite component architecture using javaserver pages (JSP) tags
US7747966B2 (en) 2004-09-30 2010-06-29 Microsoft Corporation User interface for providing task management and calendar information
US8627344B2 (en) * 2004-12-15 2014-01-07 Siebel Systems, Inc. Methods and apparatuses for user interface management
US10068030B2 (en) * 2005-02-11 2018-09-04 International Business Machines Corporation Extending java server faces web pages to support multiple devices
US20060277460A1 (en) * 2005-06-03 2006-12-07 Scott Forstall Webview applications
US9098597B2 (en) * 2005-06-03 2015-08-04 Apple Inc. Presenting and managing clipped content
US7886290B2 (en) 2005-06-16 2011-02-08 Microsoft Corporation Cross version and cross product user interface
US8122346B2 (en) * 2005-08-05 2012-02-21 Sap Ag Methods and systems for merging software-level objects with document-level objects in a document publishing environment
US8239882B2 (en) 2005-08-30 2012-08-07 Microsoft Corporation Markup based extensibility for user interfaces
US9542667B2 (en) 2005-09-09 2017-01-10 Microsoft Technology Licensing, Llc Navigating messages within a thread
US8627222B2 (en) 2005-09-12 2014-01-07 Microsoft Corporation Expanded search and find user interface
US7739259B2 (en) 2005-09-12 2010-06-15 Microsoft Corporation Integrated search and find user interface
US9727989B2 (en) 2006-06-01 2017-08-08 Microsoft Technology Licensing, Llc Modifying and formatting a chart using pictorially provided chart elements
US8605090B2 (en) 2006-06-01 2013-12-10 Microsoft Corporation Modifying and formatting a chart using pictorially provided chart elements
US8484578B2 (en) 2007-06-29 2013-07-09 Microsoft Corporation Communication between a document editor in-space user interface and a document editor out-space user interface
US8762880B2 (en) 2007-06-29 2014-06-24 Microsoft Corporation Exposing non-authoring features through document status information in an out-space user interface
US8201103B2 (en) 2007-06-29 2012-06-12 Microsoft Corporation Accessing an out-space user interface for a document editor program
US8134553B2 (en) * 2007-09-24 2012-03-13 Microsoft Corporation Rendering three-dimensional objects on a server computer
US9208241B2 (en) * 2008-03-07 2015-12-08 Oracle International Corporation User interface task flow component
US9588781B2 (en) 2008-03-31 2017-03-07 Microsoft Technology Licensing, Llc Associating command surfaces with multiple active components
US8438539B2 (en) * 2008-04-11 2013-05-07 International Business Machines Corporation Using a menu slideshow framework for generating a custom menu-driven slideshow containing definable content
US8504929B2 (en) * 2008-04-11 2013-08-06 Oracle International Corporation Editing user interface components
US9665850B2 (en) 2008-06-20 2017-05-30 Microsoft Technology Licensing, Llc Synchronized conversation-centric message list and message reading pane
US8402096B2 (en) 2008-06-24 2013-03-19 Microsoft Corporation Automatic conversation techniques
US8126837B2 (en) * 2008-09-23 2012-02-28 Stollman Jeff Methods and apparatus related to document processing based on a document type
US8799353B2 (en) 2009-03-30 2014-08-05 Josef Larsson Scope-based extensibility for control surfaces
US9442621B2 (en) * 2009-05-05 2016-09-13 Suboti, Llc System, method and computer readable medium for determining user attention area from user interface events
US9046983B2 (en) 2009-05-12 2015-06-02 Microsoft Technology Licensing, Llc Hierarchically-organized control galleries
US8302014B2 (en) 2010-06-11 2012-10-30 Microsoft Corporation Merging modifications to user interface components while preserving user customizations
US9015576B2 (en) 2011-05-16 2015-04-21 Microsoft Technology Licensing, Llc Informed partitioning of data in a markup-based document
US8884970B2 (en) 2011-09-09 2014-11-11 Microsoft Corporation Aligning script animations with display refresh
US9053201B2 (en) * 2012-02-29 2015-06-09 Microsoft Technology Licensing, Llc Communication with a web compartment in a client application
US9442687B2 (en) * 2012-07-23 2016-09-13 Korea Advanced Institute Of Science And Technology Method and apparatus for moving web object based on intent
CN103581133B (en) 2012-07-31 2017-04-05 国际商业机器公司 Web server sends the method and system of response to access request
US9667700B2 (en) 2012-08-12 2017-05-30 Apple Inc. Rendering a redeemable document
US9613011B2 (en) 2012-12-20 2017-04-04 Cable Television Laboratories, Inc. Cross-reference of shared browser applications
US9639623B2 (en) * 2012-12-20 2017-05-02 Cable Television Laboratories, Inc. Method for remotely controlling a video playing within a first web page at a first device from a second device using a document object model
US9323428B1 (en) 2013-07-26 2016-04-26 Bank Of America Corporation On-boarding framework
US9483261B2 (en) * 2014-07-10 2016-11-01 International Business Machines Corporation Software documentation generation with automated sample inclusion

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020014859A1 (en) * 2000-04-19 2002-02-07 Xavier Boulesteix Driver of a magnetic-field sending antenna with RLC circuit
US20020184264A1 (en) * 2001-05-31 2002-12-05 Daniel Berg Method and apparatus for synchronizing an XML document with its object model
US20030184585A1 (en) * 2002-03-29 2003-10-02 George Lin Method for dynamically generating a user interface from XML-based documents
US20030225825A1 (en) * 2002-05-28 2003-12-04 International Business Machines Corporation Methods and systems for authoring of mixed-initiative multi-modal interactions and related browsing mechanisms
US20040002987A1 (en) * 2002-06-27 2004-01-01 David Clancy Dynamic electronic program guide
US6675230B1 (en) * 2000-08-22 2004-01-06 International Business Machines Corporation Method, system, and program for embedding a user interface object in another user interface object
US20040103141A1 (en) * 2002-11-19 2004-05-27 Miller Quentin S. Atomic message division
US20040103373A1 (en) * 2002-11-19 2004-05-27 Wei Coach K. System and method for stateful web-based computing
US20040133854A1 (en) * 2003-01-08 2004-07-08 Black Karl S. Persistent document object model
US20050044145A1 (en) * 2003-08-20 2005-02-24 International Business Machines Corporation Collaboration method and system
US20060200535A1 (en) * 2002-08-02 2006-09-07 Martin Moser Method and computer system for handling incremental data in client-server communication
US7207000B1 (en) * 2000-02-24 2007-04-17 International Business Machines Corporation Providing dynamic web pages by separating scripts and HTML code

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5862330A (en) 1996-07-16 1999-01-19 Lucent Technologies Inc. Technique for obtaining and exchanging information on wolrd wide web
US6240444B1 (en) 1996-09-27 2001-05-29 International Business Machines Corporation Internet web page sharing
JP3437933B2 (en) 1999-01-21 2003-08-18 インターナショナル・ビジネス・マシーンズ・コーポレーション Browser sharing method and system
US7412644B2 (en) 2000-02-04 2008-08-12 Aol Llc, A Delaware Limited Liability Company System and process for delivering and rendering scalable web pages
WO2002027426A2 (en) 2000-09-01 2002-04-04 Op40, Inc. System, method, uses, products, program products, and business methods for distributed internet and distributed network services
US6766333B1 (en) 2000-11-08 2004-07-20 Citrix Systems, Inc. Method and apparatus for synchronizing a user interface element displayed on a client and a software application component executing on a web server
US20030189593A1 (en) 2001-01-05 2003-10-09 Yarvin Curtis G. Method and apparatus for dynamically updating a markup language based user interface
WO2002080016A2 (en) 2001-03-28 2002-10-10 Inventions, Inc. Collaboration between two computing devices
US7225225B2 (en) 2001-03-30 2007-05-29 Sharp Laboratories Of America, Inc. Selective synchronization of web browsers
US20020188619A1 (en) 2001-05-09 2002-12-12 Michael Low System and method for generating dynamically updated graphical user interfaces
US6801604B2 (en) * 2001-06-25 2004-10-05 International Business Machines Corporation Universal IP-based and scalable architectures across conversational applications using web services for speech and audio processing resources
EP1472620A2 (en) 2002-02-04 2004-11-03 Mobileaware Technologies Limited Document transformation
US6988240B2 (en) 2002-03-29 2006-01-17 Global Knowledge, Inc. Methods and apparatus for low overhead enhancement of web page and markup language presentations
EP1406183A3 (en) 2002-10-01 2004-04-14 Sap Ag Method and system for refreshing browser pages
WO2004031984A1 (en) 2002-10-01 2004-04-15 Sap Aktiengesellschaft Method and system for refreshing browser pages
US7571391B2 (en) * 2003-10-17 2009-08-04 Sap Ag Selective rendering of user interface of computer program

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7207000B1 (en) * 2000-02-24 2007-04-17 International Business Machines Corporation Providing dynamic web pages by separating scripts and HTML code
US20020014859A1 (en) * 2000-04-19 2002-02-07 Xavier Boulesteix Driver of a magnetic-field sending antenna with RLC circuit
US6675230B1 (en) * 2000-08-22 2004-01-06 International Business Machines Corporation Method, system, and program for embedding a user interface object in another user interface object
US20020184264A1 (en) * 2001-05-31 2002-12-05 Daniel Berg Method and apparatus for synchronizing an XML document with its object model
US20030184585A1 (en) * 2002-03-29 2003-10-02 George Lin Method for dynamically generating a user interface from XML-based documents
US20030225825A1 (en) * 2002-05-28 2003-12-04 International Business Machines Corporation Methods and systems for authoring of mixed-initiative multi-modal interactions and related browsing mechanisms
US20040002987A1 (en) * 2002-06-27 2004-01-01 David Clancy Dynamic electronic program guide
US20060200535A1 (en) * 2002-08-02 2006-09-07 Martin Moser Method and computer system for handling incremental data in client-server communication
US20040103141A1 (en) * 2002-11-19 2004-05-27 Miller Quentin S. Atomic message division
US20040103373A1 (en) * 2002-11-19 2004-05-27 Wei Coach K. System and method for stateful web-based computing
US20040133854A1 (en) * 2003-01-08 2004-07-08 Black Karl S. Persistent document object model
US20050044145A1 (en) * 2003-08-20 2005-02-24 International Business Machines Corporation Collaboration method and system

Cited By (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070192364A1 (en) * 2005-12-29 2007-08-16 International Business Machines Corporation Apparatus and method for porting of business logic among computer platforms
US20090003704A1 (en) * 2007-06-29 2009-01-01 Nhn Corporation Method and system for controlling browser by using image
US8121413B2 (en) * 2007-06-29 2012-02-21 Nhn Corporation Method and system for controlling browser by using image
WO2010043062A1 (en) * 2008-10-16 2010-04-22 Unblu Inc. Capturing the visual content of browser windows
CH699770A1 (en) * 2008-10-16 2010-04-30 Unblu Inc Detection of the visual content of the browser windows.
US20110252305A1 (en) * 2008-10-16 2011-10-13 Unblu Inc. Capturing the visual content of browser windows
US9152437B2 (en) * 2010-10-28 2015-10-06 Hewlett-Packard Development Company, L.P. Dynamically installing image processing
US20120110601A1 (en) * 2010-10-28 2012-05-03 Spencer Andrew M Dynamically installing image processing
US9542379B1 (en) * 2012-09-19 2017-01-10 Amazon Technologies, Inc. Synchronizing electronic publications between user devices
US10178031B2 (en) 2013-01-25 2019-01-08 Microsoft Technology Licensing, Llc Tracing with a workload distributor
US9804949B2 (en) 2013-02-12 2017-10-31 Microsoft Technology Licensing, Llc Periodicity optimization in an automated tracing system
US8997063B2 (en) * 2013-02-12 2015-03-31 Concurix Corporation Periodicity optimization in an automated tracing system
US9658936B2 (en) 2013-02-12 2017-05-23 Microsoft Technology Licensing, Llc Optimization analysis using similar frequencies
US20130283241A1 (en) * 2013-02-12 2013-10-24 Concurix Corporation Periodicity Optimization in an Automated Tracing System
US9767006B2 (en) 2013-02-12 2017-09-19 Microsoft Technology Licensing, Llc Deploying trace objectives using cost analyses
US20140258894A1 (en) * 2013-03-05 2014-09-11 Research In Motion Limited Visual Timeline Of An Application History
US20140258969A1 (en) * 2013-03-05 2014-09-11 Research In Motion Limited Web-Based Integrated Development Environment For Real-Time Collaborative Application Development
US20140258968A1 (en) * 2013-03-05 2014-09-11 Research In Motion Limited Visual Representation Of Edits For Collaborative Application Development
US20140253574A1 (en) * 2013-03-05 2014-09-11 Research In Motion Limited Development Environment For Capture Of Image Data From A Mobile Device
US9158518B2 (en) * 2013-03-11 2015-10-13 Blackberry Limited Collaborative application development environment using a connected device
US20140258970A1 (en) * 2013-03-11 2014-09-11 Research In Motion Limited Collaborative application development environment using a connected device
US9665474B2 (en) 2013-03-15 2017-05-30 Microsoft Technology Licensing, Llc Relationships derived from trace data
US9773264B2 (en) 2013-03-26 2017-09-26 Blackberry Limited Method for providing composite user interface controls and an online storefront for same
US9575874B2 (en) 2013-04-20 2017-02-21 Microsoft Technology Licensing, Llc Error list and bug report analysis for configuring an application tracer
US9864672B2 (en) 2013-09-04 2018-01-09 Microsoft Technology Licensing, Llc Module specific tracing in a shared module environment
US9772927B2 (en) 2013-11-13 2017-09-26 Microsoft Technology Licensing, Llc User interface for selecting tracing origins for aggregating classes of trace data
CN107015795A (en) * 2017-01-11 2017-08-04 阿里巴巴集团控股有限公司 A kind of method and device for drawing user interface
US20180210725A1 (en) * 2017-01-26 2018-07-26 Nice Ltd. Image based method and system for building object model and application states comparison and graphic-based interoperability with an application
US10540167B2 (en) * 2017-01-26 2020-01-21 Nice Ltd. Image based method and system for building object model and application states comparison and graphic-based interoperability with an application
US10740123B2 (en) 2017-01-26 2020-08-11 Nice Ltd. Method and system for accessing table content in a digital image of the table
US11061661B2 (en) 2017-01-26 2021-07-13 Nice Ltd. Image based method and system for building object model and application states comparison and graphic-based interoperability with an application
US11307875B2 (en) 2017-01-26 2022-04-19 Nice Ltd. Method and system for accessing table content in a digital image of the table
US11755347B2 (en) 2017-01-26 2023-09-12 Nice Ltd. Method and system for accessing table content in a digital image of the table
CN108241501A (en) * 2018-01-26 2018-07-03 长春玖佰软件技术有限公司 A kind of mobile client software is realized and update method
US11790110B2 (en) 2021-02-09 2023-10-17 Nice Ltd. System and method for preventing sensitive information from being recorded

Also Published As

Publication number Publication date
AU2010201376A1 (en) 2010-04-29
AU2005256935A1 (en) 2006-01-05
US20110083070A1 (en) 2011-04-07
US7954050B2 (en) 2011-05-31
EP1769340A2 (en) 2007-04-04
WO2006000894A2 (en) 2006-01-05
US20050289156A1 (en) 2005-12-29
EP1769340A4 (en) 2007-10-10
WO2006000894A3 (en) 2006-04-13
AU2010201376B2 (en) 2012-01-19

Similar Documents

Publication Publication Date Title
US7954050B2 (en) Systems and methods for rendering and increasing portability of document-based user interface software objects
US7415524B2 (en) Postback input handling by server-side control objects
US7120897B2 (en) User control objects for providing server-side code generation from a user-defined dynamic web page content file
US6990653B1 (en) Server-side code generation from a dynamic web page content file
AU2008206688B2 (en) Method and system for creating IT-oriented server-based web applications
US6675230B1 (en) Method, system, and program for embedding a user interface object in another user interface object
US7020882B1 (en) Method, system, and program for remotely manipulating a user interface over a network
US6961750B1 (en) Server-side control objects for processing client-side user interface elements
US8627344B2 (en) Methods and apparatuses for user interface management
EP1952274A1 (en) A method and system for developing interactive web applications in a unified framework
CA3039009C (en) A method and system for providing and executing web applications
JP2012084165A (en) Program for causing computer to generate user interface
WO2007067578A1 (en) Metadata driven user interface
JP2012128878A (en) Programming interface for computer platform
US20120151361A1 (en) Dynamic Web Control Generation Facilitator
Fisher et al. Visualizations everywhere: A multiplatform infrastructure for linked visualizations
GB2423844A (en) Converting web based applications into component based applications with XML data elements and Java script workflow elements
US20050193001A1 (en) Client-side wizard framework
Meyne et al. Developing Web Applications with ASP. NET and C
Li et al. Web-enabling applications for outsourced computing
Poonsuph XUP: XML universal presentation
Smeets et al. Introducing Google Web Toolkit (GWT)
Yu A UI-driven approach to facilitating effective development of rich and composite web applications
Why Introducing Google Web Toolkit (GWT)
Kostiainen Web ohjelmistoalustana mobiililaitteissa

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

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