As far back as the first time two computers were physically linked to one another, the idea of sharing information between, and executing programs on, networked computers has been around. Distributed computer architecture challenged software manufacturers to provide operating systems, communication protocols, computer languages and operating environments in which the distributed nature of the underlying architecture was substantially transparent to developers and users. Now, the Internet generally, and the World Wide Web ("WWW") specifically, have challenged the software manufacturers to again provide such a transparent operating environment for the Internet.
Currently, users access information stored on the WWW using browsers. The Java programming language and Java applets allow development of platform-independent application programs executing over the Internet and the WWW. Therefore, any computer platform with a browser having a Java interpreter can execute Java application programs downloaded from the WWW. As such, existing browsers allow end users browsing HTML files to use Java applets and image files. But why stop there? Why not have a programming environment for the Internet that users and developers can employ to assemble programs such as Java applets from modules distributed locally and over the Internet, or to download entire program folders from different Internet nodes?
Such programming environment technology exists and at least one company has obtained a patent for it. On January 6, 1998, Sun MicroSystems, Inc. obtained U.S. Patent No. 5,706,502 ("the '502 patent") directed to Internet-Enabled Portfolio Manager System (PMS). According to the '502 patent, the PMS allows users to manage, create, edit, debug and compile software portfolios including software projects such as Java applets, standalone executable programs, image files, Java class libraries or remote Java applets. The software portfolios and their contents can be stored on the system hosting the PMS or on any remote system that can be accessed via the Internet using standard Internet communication protocols, such as FTP or HTTP. The PMS includes portfolio files, each of which includes links to the projects that compose a portfolio and project files that set out the attributes of one project.
The PMS provides:
The contents of a particular portfolio or project file determine how the PMS implements such methods. For example, if a user wants to import a portfolio from a remote system, the PMS invokes an integrated Web browser, which downloads the desired portfolio onto the local system. The PMS also allows users to publish portfolios and projects on the Internet to be used by others within certain limits set by the publisher. For example, the publisher can restrict copying of source programs while allowing copying of executables.
- Portfolio methods that allow users to create, choose, import and remove entire portfolios
- Project methods that allow users to create, import, choose, edit, remove, run, copy and paste projects
The '502 patent has 35 "Claims" directed to the PMS. Claims are legally operative parts of a patent, granting the patent owner the right to stop others from making, using or selling the invention as specified in each claim. Therefore, in general, if a claim of a patent "reads on" a product (i.e. the product includes every element of the invention as specified in the claim), that product may be infringing the patent. The following is a brief analysis of claim 1 of the '502 patent. The claim is directed to a PMS for portfolios of software projects that are distributed over a set of networked computers connected to the Internet, where the PMS is resident on one of the networked computers.
The elements of the PMS covered by the claim 1 of the '502 patent are:
Each subset of the portfolio files represents one portfolio with references to a set of project files. Portfolios and their constituent projects can be thought of as directories and files, respectively. The references can be file names for local project files, and URLs for remote project files. Each member of the project files specifies project attributes associated with its portfolio. The portfolio manager includes a set of user-selectable portfolio methods configured to process the portfolios based on information in the portfolio files. The Web browser is configured to download selected remote portfolio files from the Internet to the PMS needed by the portfolio methods. Additionally, the PMS can include a User Interface configured to display portfolios. This includes the projects composing the portfolios in a consistent fashion, independent of the location of the portfolios and their constituent projects. The portfolio manager User Interface allows user interaction with the portfolio methods. This enables users to determine and manipulate the displayed portfolios using those portfolio methods.
- A set of portfolio files
- A set of portfolio project files
- A portfolio manager
- A Web browser
According to the '502 patent, the PMS User Interface is embedded within an application called the Java Workshop (JWS) program. Among other things, this allows users to organize executable programs (Java applets and standalone executables) and non-executable files (image files and Java class libraries) into collections called portfolios. The JWS program has an integrated JWS Browser which allows a user to seamlessly create and work with remote (stored apart from the user's machine or local network) or local portfolios. Furthermore, the JWS Browser allows assembly of local and remote "project" components of a portfolio. The User Interface facilitates user interaction with mixed objects, such as a portfolio consisting of both local and remote projects. It does so by providing a single paradigm for working with all objects regardless of the objects' locations. The differences between working with remote and local objects, such as executing a Java applet stored on a remote computer vs. executing a standalone program stored locally, are handled in the JWS program. The User Interface allows a user to initiate the execution of the remote applet or the local program in the same way (e.g, by double-clicking an icon representing the applet).
The local computer memory contains a set of JWS files that collectively defines the User Interface, methods and data files that compose the JWS. More specifically, the JWS files include the JWS program (hereinafter referred to as the "JWS"), JWS Browser and a group of interface files called the JWS toolbar specification. The JWS toolbar specification is composed of four sub-groups of files: icon specifications, Web documents, JWS applets and other referenced files. These sub-groups of files specify the appearance and, more importantly, the operation of a set of icons that are displayed as elements of a JWS toolbar. The JWS toolbar, which is a key element of the JWS User Interface, is displayed by the JWS program on the JWS window. The JWS window also includes an applet window controlled by JWS applets that are executed by the JWS program in the course of project and/or portfolio management.
Each icon has a corresponding icon specification that defines the icon's visual attributes. It also specifies a link(s) to a Web document(s), listing an initial set of files to be loaded and possibly executed whenever the icon is selected. The links can be to Web documents stored on the local system (e.g, the local computer), and include a local path and file name that can be handled by the file service provided by the local operating system. The links can also be to remote Web documents (e.g., documents stored on remote computers) that can be retrieved over the Internet by a conventional Web browser. Because the JWS program incorporates the JWS Browser, providing all of the features of a conventional Web browser, it does not matter where the Web documents linked to a particular icon are stored; nor does it matter on what type of platform the linked documents are stored. The JWS Browser is able to communicate with the remote platform that hosts the Web document via one of the standard communications protocols supported by the Internet, such as HTTP or FTP. The linked Web documents are automatically downloaded by the JWS Browser (triggered by the JWS program) whenever their corresponding icon is selected. This eliminates many of the complexities in implementing a similar feature linking icons to remote, executable documents.
Each Web document, initially stored locally or remotely before being loaded into memory, includes two elements: a title and a set of references to its components. A Web document can also include embedded files. As with the links, the references in the Web documents can be to remote or local files. In either case, they are handled by the JWS Browser in the same manner as the links. In the User Interface, a reference can be to a Java applet responsible for handling the operations associated with the icon whose related Web document referenced the applet. In that case, upon retrieving the Web document linked to a selected icon, the JWS Browser automatically pulls in and executes the referenced applet, which could have been stored on a remote system. The applet, running in the JWS Browser's virtual machine, can then implement the icon's associated operations without concern about network and operating system complexities, handled respectively by the local operating system and the JWS Browser.
A single JWS applet is referenced in each Web document. This single applet controls or directly implements all of the functions associated with one icon. For example, a spell checker icon can be linked via a Web document to a remote applet that, once downloaded to the local computer and executed by the JWS Browser, spell-checks the appropriate document(s). Alternatively, a Web document can reference many applets. For example, an icon can be linked to a Web document that references spell-checker and grammar-checker applets so that both are automatically used by the JWS Browser whenever their icon is selected from the toolbar. In addition to applets, a Web document can reference other types of components, including data and image files.
An applet is invoked in response to the selection of a particular icon from the toolbar. Each icon selection event is monitored by the JWS Browser which, following the selection of the icon, retrieves a link from the icon's specification file. The icon is associated with the Web document via a link, and the Web document is automatically loaded by the JWS Browser. The JWS Browser then loads all of the files referenced in the document and executes the referenced executable files, such as applets. Once active, an applet can control a portion of the display or applet window, where it can display results, dialog boxes and icons facilitating user interaction with the applet's functions and capabilities.
The PMS methods are presented to users as options on menus displayed when their associated applet's icon is selected. For example, the portfolio managers methods are displayed as options on a "Portfolio" menu. In conventional GUI fashion, when one of the methods/options is subsequently selected from its parent menu, that option's submenu or page is then displayed by the JWS and enabled for user interaction. Many of the submenus provide a list of portfolios and projects to which the submenus associated method can be applied. The submenus include Create, Import, Choose, Remove, Run and Copy operations.
The methods of the JWS applets for the portfolio and project manager applets have unique operational characteristics from the vantage point of users working with their respective menus and submenus. With respect to the portfolio manager, PMS provides four methods that allow a user to "Create", "Import", "Choose" and "Remove" portfolios. Each method interacts with a set of portfolio files, and each of these files can be stored on the local or remote systems, representing one portfolio. A generic portfolio file includes a collection of references to its portfolio's constituent project files. As with other file references, a project reference can be to a locally-stored project where the reference is a local file name ("Name") or to a Web document where the reference is a URL.
A portfolio file can contain project file references for its constituent projects, including an "Applet", a "Standalone" program, a Java "Package", an "Image" and a "Remote" applet. As local projects stored in the user's "home" (i.e., local) directory in the memory, they can be accessed by the user and their corresponding project files referenced by path and file name. For example, a reference to an applet project file can be "/home/Applet.prj". The portfolio file also includes a reference (/lib/SemiRemote.prj) to a project file for a read-only project ("SemiRemote") stored in a library directory on machine A and a reference (http://B.com/Internet.prj) to a project file for a read-only project ("Internet") stored on machine B that can only be accessed over the Internet using the JWS Browser.
Each user has a personal portfolio (with a corresponding portfolio file) containing only projects belonging to that user. When the JWS is initially activated, it brings up the personal portfolio as the current, or active, portfolio. The user can choose another portfolio as the current portfolio by using the portfolio manager's "Choose" method/option. To do so, the user selects the desired portfolio's file name or URL from the Portfolio menus and chooses submenu, listing all available portfolios. The user can then view the projects composing the current portfolio by selecting the portfolio manager icon from the JWS toolbar. The applet being executed displays its results and menus on the applet window.
A user of the JWS can create a new portfolio by selecting the portfolio manager's "Create" option and then entering the name of a portfolio. In response, the JWS calls the Portfolio Create method to create the corresponding portfolio file on the local system, display its name in the toolbar and add the portfolio's name to the Choose and Remove submenus. The newly-created portfolio has no projects, but the user can add projects in the Project Create submenu or import existing projects into the portfolio with the Project Import menu item.
Once the new portfolio has been created, it can be kept private or published on the Internet for access by others. Users can also import existing portfolios that are not currently in their Portfolio Choose submenus. To import such a portfolio, users first select the Import option listed on the Portfolio menu. This triggers the Portfolio Import method to display an import submenu with a name field where users enter the file name or URL of a portfolio, and an import button for users to click when they have completed the entries. In response, the import method adds the portfolio name to the Portfolio Choose and Portfolio Remove submenus. The JWS also changes the current portfolio to the imported portfolio. Once it is on the Portfolio, choose submenu and the imported portfolio can be worked on like any other portfolio.
To remove a portfolio, a user selects it from the Portfolio Remove submenu. In response, the JWS calls the Portfolio Remove method, removing the selected portfolio from the Choose and Remove submenus without deleting the portfolio's corresponding portfolio file. As such, the user can, at any time, import the portfolio using the Portfolio Import option. Each project file included in a portfolio has a corresponding project file describing the project and containing the project's contents. More specifically, each project file contains:
The JWS provides several methods for working with projects. These methods are presented to users as options on a Project menu. When a method/option is selected, the JWS displays a corresponding submenu in which the user specifies additional details of the operation. The project methods include: Create, Import, Choose, Edit, Remove, Run, Copy and Paste. The methods allow a user to work with existing projects (local or remote) or to create new projects. In either case, projects always exist in the context of a portfolio. When a project is created, it becomes the current project in the current portfolio. A user can create a Java applet project, a standalone program project, a Java package project, an image project or a remote project. To create any of these projects, the user first "Chooses" the portfolio with which the project is to be associated. It also selects the "Create" option from the Project menu, whereupon the JWS calls the Project Create method. This method displays the Project Create page, where users select the type of project they wish to create (e.g., Users who wish to create an applet, click on an applet button displayed on the submenu). The user then specifies the name of the project to be created and the local directory in memory where the project's corresponding project file is to be stored. Once the user has specified the attributes for the project, the Project Create methods adds a reference to the project's corresponding project file to the portfolio file of the current portfolio.
- The name of the project
- The project type [Java applet (APPLET), standalone program (STANDALONE), Java class library (PACKAGE), data file (IMAGE), an imported copy of a remote project of one of the four types or a remote applet (REMOTE)]
- Project administration information, including whether the source code for the project should be distributed to others requesting the project over the Internet and project options
- The project contents, which can include the actual project contents and/or a set of references to other project files, enabling multiple levels of embedded projects
- A run page URL (applicable only for applet projects), which is the URL of the HTML file that includes an applet tag for the applet project. This information determines which of the project methods provided by the JWS can be employed by a user on a particular project.
When the project being created is an applet, standalone program or Java package, the user may also have access to source code for the newly-created project. The user enters the file names of the corresponding source files on the Project Create page. The JWS adds these source file names to a "Sources" list maintained in memory so the source files can be accessed by the user (e.g., for editing and compilation). The user also enters the name of the main file for the program (i.e., the file containing the "main" routine) of which the newly created project is a part. When the project being created is a Java applet, it is possible that the Java applet is referenced in an HTML page so that when the applet's reference is selected, the applet is executed. The JWS allows for such relationships represented via a Run Page URL field in the Project Create page where the user optionally enters the name of the HTML page executing the applet.
When creating an image project by Choosing "image" from the Project Create submenu, the user enters the name of the image project and the URL of the corresponding image file. The user can then optionally enter attributes associated with the image, such as:
Once this information is provided, the user clicks on the "Apply" field of the Project Create page. The Project Create method makes the newly created image project the current project and displays the image in the Applet window. Additionally, the Create method adds the image project name to the Choose, Edit and Remove submenus in the Project menu. It also adds the name of the corresponding project file to the portfolio file associated with the current portfolio.
- The image's alignment with respect to surrounding text (e.g., choosing "bottom" alignment causes a browser displaying the image to align the bottom of the image with the bottom of the text)
- Whether the image is active; where a person viewing the image can click on different regions of the image to produce different actions
- An optional text string to be displayed in lieu of the image by browsers not able to display the image
Users can import any type of project into one of their personal portfolios by choosing a portfolio as the current portfolio, selecting the "Import" option from the Project menu and entering the name or URL of the project to be imported in the Project Import page displayed by the Project Import method. After entering the necessary information, the user clicks an "import" button displayed on the import page. The import method imports the designated project into the current portfolio and adds the project name/URL to the Project Choose, Edit, Remove and Run submenus. The import method also adds the name of the imported project's project file to the current portfolio if it is not already contained therein. The JWS does not make the imported project the current project, but displays the imported project if the user subsequently selects the Portfolio Manager icon from the toolbar.
The JWS allows a user to create a remote applet project by "Choosing" the current portfolio, selecting the "Create" option from the "Project" menu and clicking the "remote applet" button displayed on the Project Create submenu. The user enters the name of the project and the URL of the HTML page executing the applet. Then the user exits the Project Create submenu by clicking on "Apply". After that, the create method creates a project file with empty contents and a run page URL field set to the URL of the HTML page executing the applet. For example, the remote project file has a run page URL set to the URL ("http://C.com/RunApplet2.htm") of the Web page ("RunApplet2.htm") running the remote applet "Applet2". The create method also adds the name of the project file to the current portfolio's portfolio file. The JWS then makes the imported project the current project, loads the Portfolio Manager and selects the current project to be displayed by the Portfolio Manager. After that, the JWS adds the imported applet project's name to the Choose, Edit, Remove, Run and Copy submenus in the Project menu.
A user can then run the remote applet by selecting its name from the Project Run submenu or by loading the Portfolio Manager, selecting the remote project and then pressing the Run button on the toolbar. After that, the Project Run method passes the URL of the Web page, referenced in the run page URL field of the remote applet project file, to the Web browser for downloading the referenced Web page (http://C.com/RunApplet2.htm) and running the remote applet (Applet2).
If a Run page URL in an applet's project file is not specified, that applet project can still run using the Project Run method. The Project Run method automatically generates a new Web page containing an applet tag created with the project attributes and parameters entered by the user on the Edit Project run folder. This automatically generated HTML page is loaded into the JWS, which uses the browser to run the applet project. This feature allows users to execute applets without having to know the HTML syntax for referencing applets.
The Project Manager's Copy method allows a user to copy an applet into an HTML file, executing the applet without requiring the user to know the HTML syntax for referencing applets. The user first selects an applet project in the current portfolio and selects the Copy option from the Project menu. The Copy method then copies the contents of the selected applet project to a clipboard maintained by the JWS. After that, the user selects the Text Editor Icon from the toolbar, whereby the JWS executes the Editor method. The Editor method displays a text editor containing an Edit menu, including a list of editing options such as "Paste". The user selects the "Paste" option from the Edit menu, upon which the paste method pastes the contents of the clipboard (i.e., the applet being copied) into a new file. The user can then save the new file as an HTML file, causing the JWS to add the appropriate links of the copied applet to the saved HTML file. As with other new projects, the JWS adds the file name of the new HTML file to the current portfolio's portfolio file. Alternatively, users can simply drag the image of the applet to be copied onto the image of an HTML file that they wish to include the applet. The JWS will then copy the contents of the applet to the designated HTML file and add tags referencing the copied applet to the HTML file.
The Project Edit method also allows a user to edit projects of all types. The Edit method can be invoked by a user of the JWS in one of two ways. First, the user can click on the Edit Project icon IA3 displayed on the toolbar to invoke editing (i.e., the editing method) on the current project. Secondly, the user can select the name of the project to be edited from the Project Edit submenu. Once editing is selected for a designated project, the JWS Editor method opens an edit page that includes six folders in which the user can edit information for the designated project. These six folders and their associated information include:
The Project Edit method allows a user to edit fields in these six folders only where appropriate. To assist the user, the edit method grays out inapplicable fields depending on the type of the project being edited and whether the project is local or remote. The JWS allows users to provide information for remote as well as local projects identified by file names or URLs to specify, for example, that the source code for a particular project to be debugged or browsed exists on some remote node.
- General information about the project, including name, type and source directory
- Build information needed to compile the project
- Debug/Browse information needed to debug and browse source files
- Run information for executing an applet or standalone program in the JWS Browser
- Publish information to allow the project to be copied by other users
- Portfolio information needed to display the project in the Portfolio Manager
The JWS allows users to employ portfolios and projects from remote sources and to publish their own portfolios and projects for others' use. Thus, the PMS provides a way to indicate certain attributes of a project that are relevant to publication of a project on the Internet. These publication attributes are contained in the Publish and Portfolio Folders. The Portfolio Folder includes the following fields:
The Publish Folder includes the following fields:
- Description: A brief description of the project displayed by the JWS Browser when the mouse is positioned over the project image in the Portfolio Manager
- Portfolio image: The URL for the image file (GIF, JPEG or other) that URL represents the project image in the portfolio
- Features: The general characteristics of the project, like whether the project is video, graphics or audio.
Users can change the current project in one of two ways. In the first, users start by selecting the Portfolio Manager icon from the JWS toolbar. This causes the JWS to open a Portfolio display which shows the projects of the current portfolio in the Applet Window. Users then select the project they want to be the current project from the Portfolio display. The JWS makes the selected project the current project and displays the name of the current project on the JWS toolbar. Alternatively, the user can change the current project by choosing the project name from the Project Choose submenu.
- Distribute source: A toggle field that controls copies where the project's source files are copied when the project is copied from one portfolio to another
- Submitter Name: The name, e-mail address and Web page of the person
- E-mail and URL: Adding the project to the portfolio
The JWS allows a user to remove a project from a portfolio in one of the following ways. First, in the portfolio manager display in the applet window, users can select the project they wish to remove and then click a Remove Icon in the Portfolio Manager. Alternatively, users can choose the name of the project to be removed from the Project Remove submenu. In either case, once the user has indicated the project to be removed, the Project Remove method removes the project from the Choose, Edit, Remove and Copy submenus of the Project Menu. The Project Remove method does not delete the removed project's project file to ensure that the user can subsequently import the project at a later time if required.
The system detailed above is one implementation of the PMS system as described in the '502 patent. Other implementations of the PMS system are possible and may be governed by the scope of the claims of the '502 patent. As such, developers or companies who believe they have the same or similar systems should carefully review the '502 patent and seek competent legal advice to ensure their systems do not infringe the '502 patent.
Note: This article is not intended as legal advice and should not be used as such.
About the Author
Michael Zarrabian is a registered patent attorney who specializes in Protecting Creative Intellectual PropertySM through Patent, Trademark, Copyright, Trade Secret, Licensing, Internet and Computer laws. He has a BS and MS in Computer Engineering with eight years of hardware/software engineering
experience. Michael can be reached via e-mail at [email protected]