WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Internet-enabled portfolio manager system and method    

Get related patents on CD
United States Patent5706502   
Link to this pagehttp://www.wikipatents.com/5706502.html
Inventor(s)Foley; Jill Paula (San Jose, CA); Sielski; Karen Lynn (Sunnyvale, CA)
AbstractA portfolio management system (PMS) is disclosed that allows users to manage, create, edit, debug and compile software portfolios that can include several different types of components, or projects. For example, projects can be Java applets, standalone executable programs, image files, Java class libraries or remote Java applets. The software portfolios and/or their constituent projects can be stored on the system hosting the portfolio management system or on any remote system that can be accessed via the Internet using standard Internet communications 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 also provides portfolio methods that allow users to create, choose, import and remove entire portfolios and project methods that allow users to create, import, choose, edit, remove, run, copy and paste projects. The contents of a particular portfolio or project file determines how the PMS implements the aforementioned 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.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History Custom Search
Inventor     Foley; Jill Paula (San Jose, CA); Sielski; Karen Lynn (Sunnyvale, CA)
Owner/Assignee     Sun Microsystems, Inc. (Mountain View, CA)
Patent assignment
All assignments
Company News
Publication Date     January 6, 1998
Application Number     08/621,580
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     March 26, 1996
US Classification    
Int'l Classification    
Examiner     Amsbury; Wayne
Assistant Examiner    
Attorney/Law Firm     Crisman; Douglas J. Flehr Hohbach Test Albritton & Herbert LLP
Address
Parent Case    
Priority Data    
USPTO Field of Search    
Patent Tags     internet-enabled portfolio manager
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5649186
Ferguson
707/10
Jul,1997

[0 after 0 votes]
5630127
Moore
707/103R
May,1997

[0 after 0 votes]
5600831
Levy
707/2
Feb,1997

[0 after 0 votes]
5537586
Amram
707/3
Jul,1996

[0 after 0 votes]
5530852
Meske, Jr.
709/206
Jun,1996

[0 after 0 votes]
5491820
Belove
707/3
Feb,1996

[0 after 0 votes]
5457797
Butterworth

Oct,1995

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B

[0 market size comments]
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%

[0 market share comments]
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%

[0 reasonable royalty comments]
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

[0 Guesstimation of Royalty Value Comments]
License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
[0 license availability comments]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
[0 owner/assignee comments]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

[0 competitive advantage comments]
Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

[0 commercial alternatives comments]
 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


What is claimed is:

1. A portfolio management system for portfolios of software projects that are distributed over a set of networked computers connected to the Internet, said portfolio management system being resident on a first computer of said set of networked computers and comprising:

a set of portfolio files, each of a subset of said set of portfolio files representing one portfolio and including respective references to members of a set of project files, said references being selected from a file name when said project file member is local to said first computer or a URL when said project file member is remote from said first computer;

each member of said set of project files respectively specifying project attributes of one member of a set of projects, said set of projects being the projects associated said one portfolio;

a portfolio manager including a set of user-selectable portfolio methods that are configured to process said portfolios based on information in said portfolio files; and

a Web browser that is configured to download to said portfolio manager system selected remote portfolio files from the Internet as said selected portfolio files are needed by said portfolio methods to process said portfolios.

2. The system of claim 1, further comprising:

a user interface that is configured to:

display said portfolios, including the projects composing said portfolios, in a consistent fashion that is independent of location of said portfolios and projects; and

enable user interaction with said portfolio methods so that the user can determine and manipulate the displayed portfolio using said portfolio methods.

3. The system of claim 2, wherein a subset of said user-selectable portfolio methods comprises at least one of:

a create portfolio method that is used by said portfolio manager to create portfolios;

an import method that is used by said portfolio manager to import existing portfolios;

a choose portfolio method that is used by said portfolio manager to designate which one of said portfolios to work with; and

a remove portfolio method that is used by said portfolio manager to remove portfolios.

4. The system of claim 3, further comprising:

a project manager including a set of user-selectable project methods that are configured to process said projects based on said project attributes in project files respectively associated with said projects;

said Web browser being further configured to download to said portfolio manager system selected remote project files from the Internet as said selected remote project files are needed by said portfolio methods and said project methods to process said projects; and

said user interface being further configured to enable user interaction with said project methods so that the user can determine and manipulate displayed projects using said project methods.

5. The system of claim 4, wherein a subset of said project attributes comprises at least one of:

a project name field;

a project type field;

a project administrative information field;

a contents field; and

a run page URL field.

6. The system of claim 5, wherein said project type field has a value that is selected from a group of predefined values including:

"APPLET", signifying that said contents represent a Java applet; and at least one of:

"STANDALONE", signifying that said contents represent a standalone executable program compiled to run on said first computer;

"PACKAGE", signifying that said contents represent a Java class library;

"IMAGE", signifying that said contents represent a data file; and

"REMOTE", signifying that said contents represent a remote applet.

7. The system of claim 6, wherein said contents field comprises at least one reference to a group of embedded project files.

8. The system of claim 6, wherein said contents field comprises contents of the project associated with said project file.

9. The system of claim 6, wherein a subset of said project methods comprises at least one of:

a project create method;

a project import method;

a project choose method;

a project edit method;

a project remove method;

a project run method;

a project copy method; and

a project paste method.

10. The system of claim 9, further comprising:

a project menu including a set of selectable options, each of a subset of said set of selectable options corresponding to one of said subset of said project methods.

11. The system of claim 10, further comprising:

a project create submenu associated with the project create option on said project menu, said project create submenu being displayed by said user interface when a user selects said project create option, said project create submenu allowing said user to enter said project attributes for a new project;

a project choose submenu associated with the project choose option on said project menu, said project choose submenu being displayed by said user interface when a user selects said project choose option, said project choose submenu presenting a list of projects that can be chosen by said user;

a project remove submenu associated with the project remove option on said project menu, said project remove submenu being displayed by said user interface when a user selects said project remove option, said project remove submenu presenting a list of projects that can be removed by said user;

a project run submenu associated with the project run option on said project menu, said project run submenu being displayed by said user interface when a user selects said project run option, said project run submenu presenting a list of projects that can be run by said user; and

a project edit submenu associated with the project edit option on said project menu, said project edit submenu being displayed by said user interface when a user selects said project edit option, said project run submenu presenting a list of projects whose project attributes can be edited by said user.

12. A method for use in a local computer connected via the Internet with a set of remote computers, said method enabling a user of said first computer to perform software development operations on software portfolios that are collections of projects, said method comprising the steps of:

displaying a set of software development icons, including a portfolio manager icon and a project manager icon;

enabling said user to select one of said icons;

executing a software development object corresponding to the selected software development icon, said portfolio manager and project manager icons being respectively associated with a portfolio manager software development object and a project manager software development object;

displaying a set of options associated with said executing software development object that correspond to said executing object's associated software development methods;

enabling said user to select one of said set of options associated with said executing software development object and to specify as said object's input a software entity selected from a portfolio or a project; said software entity not being constrained to be located solely on said local computer, and

executing said selected option's associated method on said selected software entity.

13. The method of claim 12, wherein said software development methods associated with said portfolio manager object comprise at least one of:

a portfolio create method;

a portfolio choose method;

a portfolio import method; and

a portfolio remove method.

14. The method of claim 13, wherein, when said selected option is associated with said portfolio create method, said step of executing said associated method comprises:

enabling said user to enter a new name and new location for a new portfolio; and

creating a new portfolio file corresponding to said new portfolio, said new portfolio having a name and location derived from said new name and new location.

15. The method of claim 13, wherein, when said selected option is associated with said portfolio choose method, said step of executing said associated method comprises:

displaying a choose submenu including a list of user-selectable portfolios;

upon said user selecting a particular portfolio from said choose submenu:

when said particular portfolio is remote, downloading a remote portfolio file corresponding to said selected portfolio via the Internet and enabling said user to work with projects referenced in said remote portfolio file;

when said particular portfolio is local, accessing a local portfolio file corresponding to said selected portfolio and enabling said user to work with projects referenced in said local portfolio file.

16. The method of claim 13, wherein, when said selected option is associated with said portfolio import method, said step of executing said associated method comprises:

enabling said user to enter a name and location for an imported portfolio, said location being selected from remote or local;

when said location is remote, accessing a remote portfolio file corresponding to said imported portfolio via the Internet and making said imported portfolio available to said user; and

when said location is local, accessing a local portfolio file corresponding to said imported portfolio and making said imported portfolio available to users.

17. The method of claim 13, wherein, when said selected option is associated with said portfolio remove method, said step of executing said associated method comprises:

displaying a remove submenu including a list of upon said user-selectable portfolios;

upon said user selecting a particular portfolio from said choose submenu, making said particular portfolio unavailable to users.

18. The method of claim 12, wherein said software development methods associated with said project manager object comprise at least one of:

a project create method;

a project import method;

a project choose method;

a project edit method;

a project remove method;

a project run method;

a project copy method; and

a project paste method.

19. The method of claim 18, wherein, when said selected option is associated with said project create method, said step of executing said associated method comprises:

displaying a project create menu on which said user enters attributes of a new project, said attributes including a project type name and location, said project type being selected from a predefined set of values including applet and at least one of standalone program, Java package, image file and remote applet;

writing said attributes to a new project file having a project file name and location that are derived from said project name and location;

when said project type is selected from said applet, standalone program or Java package values:

enabling said user to enter source code links to source code files associated with said new project; and

writing said source code links to said new project file; and

writing into a particular portfolio file associated with a particular portfolio of which said project is a component, said project name and project location so that said project can be accessed via said particular portfolio by said portfolio and project methods.

20. The method of claim 19, further comprising the steps of:

when said project type is entered by said user as said remote applet value, enabling said user to enter a project URL identifying a remote applet and a run page URL identifying the URL of an HTML page that includes an applet tag referencing said remote applet; and

writing said project URL and run page URL to said new project file;

so that, when a user runs said new project using said run method, said HTML page identified by said run page URL is downloaded to and executed by said local computer, which, under control of said executing HTML page, downloads and runs said remote applet.

21. The method of claim 18, wherein, when said selected option is associated with said project import method, said step of executing said associated method comprises:

enabling said user to enter a name and location for an imported project, said location being selected from remote or local;

when said location is remote, accessing a remote project file corresponding to said imported project via the Internet;

when said location is local, accessing a local project file corresponding to said imported project; and

adding a reference to the imported project's project file to a particular portfolio file associated with a particular portfolio of which said imported project is a component so that said imported project can be accessed from said particular portfolio by said portfolio and project methods.

22. The method of claim 18, wherein:

when said selected option is associated with said project copy method, said step of executing said associated method comprises:

copying contents of a first user-selected project to a clipboard; and

when said selected option is associated with said project paste method, said step of executing said associated method comprises:

pasting contents of said clipboard into a second, user-specified project; such that, when said first user-selected project has a project type of applet and said copying step is following by said pasting step, said pasting step comprises writing said clipboard contents to said second project using an HTML applet tag.

23. The method of claim 18, wherein:

when said selected option is associated with said project run method, said stop of executing said associated method comprises:

enabling a user to select an executable project to be run; and

when said executable project has a project type value of applet and has an associated project file that does not specify a run page URL for an HTML page that is configured to execute said executable project, generating a new HTML page containing an applet tag with tag attributes and tag parameters based on said project attributes of said executable project.

24. The method of claim 23, further comprising the step of:

running said new HTML page in said local computer, said local computer subsequently loading and executing said executable project under control of said HTML page.

25. In a set of networked computers connected to the Internet that includes a first computer and a subset of remote computers, a computer-readable memory configured to direct said first computer to process software portfolios that can be located on said remote computers and whose components, or projects, can be distributed across said remote computers, said computer-readable memory comprising:

a set of portfolio files, each of a subset of said set of portfolio files representing one portfolio and including respective references to members of a set of project files, said references being selected from a file name when said project file member is local to said first computer or a URL when said project file member is remote from said first computer;

each member of said set of project files respectively specifying project attributes of one member of a set of projects, said set of projects being the projects associated said one portfolio;

an executable portfolio manager object including a set of user-selectable portfolio methods that are configured to direct said first computer to process said portfolios based on information in said portfolio files; and

an executable browser object that is configured to direct said first computer to download selected remote portfolio files from the Internet as said selected portfolio files are needed by said portfolio methods.

26. The computer-readable memory of claim 25, further comprising:

an executable user interface object that is configured to:

direct said first computer to display said portfolios, including the projects composing said portfolios, in a consistent fashion that is independent of location of said portfolios and projects; and

direct said first computer to enable user interaction with said portfolio methods so that the user can determine and manipulate the displayed portfolio using said portfolio methods.

27. The computer-readable memory of claim 26, wherein a subset of said user-selectable portfolio methods comprises at least one of:

a create portfolio method that is used by said portfolio manager to create portfolios;

an import method that is used by said portfolio manager to import existing portfolios;

a choose portfolio method that is used by said portfolio manager to designate which one of said portfolios to work with; and

a remove portfolio method that is used by said portfolio manager to remove portfolios.

28. The computer-readable memory of claim 27, further comprising:

a project manager including a set of user-selectable project methods that are configured to process said projects based on said project attributes in project files respectively associated with said projects;

said browser being further configured to download to said memory selected remote project files from the Internet as said selected remote project files are needed by said portfolio methods and said project methods to process said projects; and

said user interface being further configured to enable user interaction with said project methods so that the user can determine and manipulate displayed projects using said project methods.

29. The computer-readable memory of claim 28, wherein a subset of said project attributes comprises at least one of:

a project name field;

a project type field;

a project administrative information field;

a contents field; and

a run page URL field.

30. The computer-readable memory of claim 29, wherein said project type field has a value that is selected from a group of predefined values that includes:

"APPLET", signifying that said contents represent a Java applet; and at least one of:

"STANDALONE", signifying that said contents represent a standalone executable program compiled to run on said first computer;

"PACKAGE", signifying that said contents represent a Java class library;

"IMAGE", signifying that said contents represent a data file; and

"REMOTE", signifying that said contents represent a remote applet.

31. The computer-readable memory of claim 30, wherein said contents field comprises:

at least one reference to a group of embedded project files.

32. The computer-readable memory of claim 30, wherein said contents field comprises:

contents of the project associated with said project file.

33. The computer-readable memory of claim 30, wherein a subset of said project methods comprises at least one of:

a project create method;

a project import method;

a project choose method;

a project edit method;

a project remove method;

a project run method;

a project copy method; and

a project paste method.

34. The computer-readable memory of claim 33, further comprising:

a project menu including a set of selectable options, each of a subset of said set of selectable options corresponding to one of said subset of said project methods.

35. The computer-readable memory of claim 34, further comprising:

a project create submenu associated with the project create option on said project menu, said project create submenu being displayed by said user interface when a user selects said project create option, said project create submenu allowing said user to enter said project attributes for a new project;

a project choose submenu associated with the project choose option on said project menu, said project choose submenu being displayed by said user interface when a user selects said project choose option, said project choose submenu presenting a list of projects that can be chosen by said user;

a project remove submenu associated with the project remove option on said project menu, said project remove submenu being displayed by said user interface when a user selects said project remove option, said project remove submenu presenting a list of projects that can be removed by said user;

a project run submenu associated with the project run option on said project menu, said project run submenu being displayed by said user interface when a user selects said project run option, said project run submenu presenting a list of projects that can be run by said user; and

a project edit submenu associated with the project edit option on said project menu, said project edit submenu being displayed by said user interface when a user selects said project edit option, said project edit submenu presenting a list of projects whose project attributes can be edited by said user.
 Description Submit all comments and votes
 


The present invention relates generally to file and program managers and particularly to a software development and file management system that enables users to create and work with portfolios of files that are distributed over the Internet.

BACKGROUND OF THE INVENTION

The present invention is an improvement to conventional programming and file management systems. These conventional systems allow users to create, organize and compile program components (e.g., program source files, class libraries, data files) from within a single, consistent environment. For example, a typical prior art programming environment might represent different programs as folders in a graphical user interface and a program's components as icons of different types in the program's folder. These conventional programming environments also provide ease of use features, such as allowing a user to copy one program component to another program's folder using simple menu or mouse commands.

These prior art software development and file management tools provide support for local program components, which are files that are stored on the system hosting the software development or file management system. For example, local program components might be files stored on different nodes of a local area network or files on a single standalone computer. However, the prior art systems are not Internet-enabled. I.e., they do not allow a user to assemble programs from components that are distributed on diverse Internet nodes or to download entire program folders from another Internet node. Moreover, the previous generation of software development tools do not facilitate the creation or importation of software components such as Java applets (stored locally or on an Internet node), which are an extremely important medium for distributing platform independent executable programs over the World Wide Web.

The World-Wide Web ("WWW") links many of the servers making up the Internet, each storing documents identified by unique universal resource locators (URLs). Many of the documents stored on Web servers are written in a standard document description language called HTML (hypertext markup language). Using HTML, a designer of Web documents can associate hypertext links or annotations with specific words or phrases in a document (these hypertext links identify the URLs of other Web documents or other parts of the same document providing information related to the words or phrases) and specify visual aspects and the content of a Web page.

A user accesses documents stored on the WWW using a Web browser (a computer program designed to display HTML documents and communicate with Web servers) running on a Web client connected to the Internet. Typically, this is done by the user selecting a hypertext link (typically displayed by the Web browser as a highlighted word or phrase) within a document being viewed with the Web browser. The Web browser then issues a HTTP (hypertext transfer protocol) request for the requested document to the Web server identified by the requested document's URL. In response, the designated Web server returns the requested document to the Web browser, also using the HTTP.

The standard HTML syntax of Web pages and the standard communications protocol (HTTP) supported by the WWW guarantee that any Web browser can communicate with any Web server. However, until the invention of the Java programming language and Java applets, there was no way to provide platform-independent application programs over the Internet and the WWW.

Important features of the Java programming language include the architecture-independence of programs written in the Java language, meaning that they can be executed on any computer platform having a Java interpreter, and the verifiability of the integrity of such programs, meaning that the integrity of Java programs can be verified prior to their execution. A Java program verifier determines whether the program conforms to predefined stack usage and data usage restrictions that ensure that verified programs cannot overflow or underflow the executing computer's operand stack and that all program instructions utilize only data of know data types. As a result, Java language programs cannot create object pointers and generally cannot access system resources other than those resources which the user explicitly grants it permission to use. Consequently, when one or more code fragments are downloaded to a client along with an associated form or image file, a Java-compatible browser running on the client will be able to verify and execute the downloaded code fragments needed to display the image or fill out the forms. However, no Java-compatible browser provides any kind of programming environment; instead, browsers are strictly directed to end users browsing existing HTML files and using the referenced Java applets and image files.

Thus, there is a need for an Internet-enabled programming environment that allows a user to assemble programs from components that are distributed on diverse Internet nodes or to download entire program folders from another Internet node. There is also a need for a software development tool that facilitates the creation or importation of software components such as Java applets (stored locally or on an Internet node). Ideally, such an Internet-enabled programming environment would be integrated with a Java-compatible Web browser so that any Internet and Web services required by the software development system could be performed by the Web browser.

SUMMARY OF THE INVENTION

The present invention is an improved software development and file management system that meets the needs set out above. More particularly, the present invention is a portfolio management system for portfolios of software projects that are distributed over a set of networked computers connected to the Internet. Portfolios and their constituent projects can be thought of as directories and files, respectively. This portfolio management system is resident on a first computer of the set of networked computers and includes a set of portfolio files, a set of project files, a portfolio manager and a Web browser.

In the preferred embodiment, a portfolio file represents one portfolio and includes respective references to members of a set of project files. Each of these references can be a file name when the project file member is local to the first computer or a Web page URL when the project file member is remote from the first computer. Each member of the set of project files specifies the attributes of one member of a set of projects associated with one portfolio via the associated portfolio file. The portfolio manager includes a set of user-selectable portfolio methods that are configured to process portfolios based on information in the associated portfolio files. The browser of the preferred embodiment is employed by the portfolio manager system to download to the first computer selected remote portfolio files from the Internet as those selected portfolio files are needed by the portfolio methods as they process portfolios.

The preferred embodiment can additionally include a user interface that is configured to display portfolios, including the projects composing the portfolios, in a consistent fashion that is independent of the location of the portfolios being displayed and their constituent projects. The portfolio manager user interface also is configured to enable user interaction with the portfolio methods so that the user can determine and manipulate the displayed portfolio using those portfolio methods.

BRIEF DESCRIPTION OF THE DRAWINGS

Additional objects and features of the invention will be more readily apparent from the following detailed description and appended claims when taken in conjunction with the drawings, in which:

FIG. 1 is a block diagram of a computer network showing details of the memory and display associated with one of the networked computers.

FIG. 2 is a data flow diagram illustrating the processing steps performed by the present invention following the selection of an icon from the toolbar.

FIG. 3 is a figure showing the data structures employed in a preferred embodiment of the Java Workshop.

FIG. 4 shows instances of a portfolio manager menu and a submenu associated with one of the portfolio manager methods.

FIG. 5 shows the structure of a portfolio file that is employed in a preferred embodiment of the Java Workshop.

FIG. 6 is a depiction of a display window generated by the portfolio manager of the present invention where some of the displayed components are local or remote to the computer displaying the portfolio manager window.

DESCRIPTION OF THE PREFERRED EMBODIMENT

Referring to FIG. 1, there is shown a computer network 100 with at least three computers: A 102A, B 102B and C 102C. Each computer 102 includes a processor 104, a memory 106, which could be a fast, primary memory (e.g., a RAM) or a slower, secondary memory (e.g., a hard disk drive), and a display 108. The computers 102 operate in accordance with well known computing principles (i.e., each computer 102 executes programs in its memory 106 under the control of an operating system (not shown), which provides system services for the executing programs). In the preferred embodiment, the interconnections 103 between the computers 102 are provided by the Internet, although the present invention is also applicable to any environment wherein networked computers can communicate using a standard communications protocol (such as HTTP) and wherein platform independent programs can be downloaded and executed over the network from within browser software. For the purposes of explaining the operation of the present invention, it is assumed that there is no network operating system that coordinates file exchange operations between the three computers A, B and C.

Details of the present invention are now described in relation to the particular implementation shown in FIG. 1. In this implementation, the user interface of the present invention is embedded within an application called the Java Workshop (JWS) program 150A, which, among other things, 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. In a major departure from the prior art in the area of program and file managers, the JWS program 150A has an integrated JWS Browser 154A that allows a user seamlessly to create and work with portfolios that are remote (stored apart from the user's machine or local network) or local. Furthermore, the JWS browser 154A allows portfolios to be assembled that are mixtures of local and remote "projects".

The term "projects" is defined for the purposes of this document to mean the components of a portfolio.

The user interface of the present invention facilitates user interaction with mixed objects, such as a portfolio consisting of both local and remote projects, by providing a single paradigm for working with all objects regardless of the objects' locations. Of course, there are differences between working with remote and local objects. For example, executing a Java applet stored on a remote computer is a vastly different task from executing a standalone program stored locally. These differences are handled in the JWS program 150A. However, the user interface of the present invention 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). How the user interface of the present invention provides this location-transparency flexibility is now described in reference to FIG. 1.

Referring to FIG. 1, the memory 106A includes a set of JWS files 110A that collectively define the user interface, methods and data files that compose the Java Workshop (JWS). More specifically, the JWS files 110A include the JWS program 150 (hereinafter referred to as the "JWS"), JWS browser 154A and a group of interface files called the JWS toolbar specification 112A. The JWS toolbar specification 112A is composed of four sub-groups of files: icon specifications 114A, web documents 120A, JWS applets 140A and other referenced files 148A. The elements 114A, 120A, 140A, 148A specify the appearance and, more importantly, the operation of a set of icons (IAi) 162Ai that are displayed on the display 108A as elements of a JWS toolbar 160. The JWS toolbar 160, which is a key element of the JWS user interface, is displayed by the JWS program 150A on the JWS window 156A. The JWS window 156A also includes an applet window 164A that is controlled by JWS applets 140A that are executed by the JWS program 150A in the course of project and/or portfolio management.

Each icon IAi has a corresponding icon specification 114A that defines the icon's visual attributes 116Ai and specifies a link(s) 118Ai to a Web document(s) 120Ai that lists an initial set of files that are to be loaded and, possibly, executed whenever the icon IAi is selected. The links 118Ai can be to Web documents 120Ai that are stored on the local system (e.g, the computer 102A), in which case a link comprises a local path and file name that can be handled by the file service provided by the local operating system (not shown). The links 118Ai can also be to remote Web documents (e.g., documents stored on the computers 102B, 102C) that can be retrieved over the Internet by a conventional Web browser. Because the JWS program 150A incorporates a JWS Browser 154A that provides all of the features of a conventional Web browser, it does not matter where the Web document(s) 120Ai linked to a particular icon IAi are stored, nor does it matter on what type of platform the linked documents are stored. What is important to the preferred embodiment is that the JWS browser 154A is able to communicate with the remote platform hosting the Web document 120A1 via one of the standard communications protocols supported by the Internet, such as HTTP or FTP. If this is the case, the linked Web documents 120Ai will be automatically downloaded by the JWS browser 154A (triggered by the JWS program 150A) whenever their corresponding icon is selected. This eliminates many of the complexities that would be required in the prior art to implement a similar feature linking icons to remote, executable documents.

Each Web document 120A (which could have initially been stored locally or remotely before being loaded into the memory 106A) includes two elements: a title 122Ai and a set of references to its components 124Ai. A Web document 120A can also include embedded files (not shown); however, as Web browsers do not make a functional distinction between embedded and referenced files, neither will this application. As with the links 118Ai, the references 124Ai in the Web documents 120A can be to remote or local files. In either case, they are handled by the JWS browser 154A in the same manner as described for the links 118Ai. One significant advantage of the present user interface is that a reference 124Ai can be to a Java applet 140Ai that is responsible for handling the operations associated with the icon IAi whose related Web document referenced the applet 140Ai. In this situation, when the JWS browser 154A retrieves the web document 120Ai linked to a selected icon IAi, it automatically will pull in and begin executing the referenced applet 140A (which could have been stored on a remote system). The applet 140Ai, running in the JWS browser's virtual machine, can then implement the icon's associated operations without needing to worry about network and operating system complexities, which are handled respectively by the local operating system and the JWS browser 154A.

In the preferred embodiment, a single JWS applet 140Ai is referenced in each Web document 120Ai. This single applet controls or directly implements all of the functions associated with one icon IAi. For example, in the preferred embodiment, a spell checker icon IA1 could be linked via a Web document 120A1 to a remote applet 140A1 that, once downloaded to the computer 102A and executed by the JWS browser 154A, spell-checks the appropriate document(s). Alternatively, a Web document 120Ai can reference many applets 140Ai. For example an icon IA2 could be linked to a Web document 120A2 that references a spell-checker applet and a grammar-checker applet so that both are automatically brought up by the JWS browser 154A whenever the icon IA2 is selected from the toolbar 160. In addition to applets, a Web document of the present invention can reference other types of components 148A, including data and image files.

Referring to FIG. 2, there is shown a data flow diagram illustrating the series of steps by which an applet is invoked in response to the selection of a particular icon IA1 from the toolbar 160. Each icon selection event is monitored by the JWS browser 154A, which, following the selection of the icon IA1, retrieves the link 118A1 from the icon IAl's specification file 114A1. Via the link 118A1, the icon IA1 is associated with the Web document 120A1, which is automatically loaded by the JWS browser 154A. The JWS browser 154A then loads all of the files referenced in the document 120A1 and also executes any of the referenced files that are executable (i.e., the applets). In this example, it is assumed that there is one referenced executable, the applet 140A1. Once it is active, the applet 140A1 can take control of a portion of the display 108A (e.g., the applet window 164A), on which it can display results, dialog boxes and icons that facilitate user interaction with the applet's functions and capabilities.

Referring to FIG. 3, there is shown a data structure diagram setting out additional details of data items stored in the memory 106A that are used by the Java WorkShop Program 150A. These data items include icon specifications 114Ai that define the visual attributes 116Ai and Web document links 118Ai for icons IAi displayed by the JWS 150A on the toolbar 160. These icons (shown on FIG. 2) include a portfolio manager icon IA1, project manager icon IA2, text edit project icon IA3, build/compile icon IA4, source browse icon IA5, debug icon IA6, run icon IA7 and help icon IA8. When selected, the icons IA1-IA8 respectively allow a user to access the following capabilities (and menus) provided by the Java WorkShop 150A for working with JWS portfolios and projects:

IA1: provides access to the portfolio manager applet 140A1, which displays the projects in the current portfolio;

IA2: provides access to the project manager applet 140A2, in which the user can edit project information;

IA3: provides access to a JWS text editor applet (not shown) in which the user can edit project source code;

IA4: provides access to a JWS project compiler applet (not shown);

IA5: provides access to a JWS browser applet (not shown) that allows the user to browse JWS source programs included in the other referenced files 148A;

IA6: provides access to a JWS debugger applet (not shown) that allows the user to debug JWS source programs included in the other referenced files 148A;

IA7: provides access to a JWS project run method 146A2f that runs executable projects (i.e., applets and standalone programs); and

IA8: provides access to a JWS help applet (not shown) that provides context-sensitive help for JWS operations.

As described in reference to FIG. 1, in the preferred embodiment, an icon specification 114Ai includes a link to a Web document 120Ai that has a reference 124Ai to a single applet 140Ai that implements the operations associated with the corresponding icon IAi. Thus, the icon specification 114A1, which is associated with the portfolio manager icon IA1, is linked to a Web document ("Portfolio.HTM") 120A1 that includes a single reference 118A1 to the portfolio manager applet 140A1. Similarly, the icon specification 114A2, which is associated with the project manager icon IA2, is linked to a Web document ("Project.HTM") 120A2 having a single reference 118A2 to the project manager applet 140A2. These applets 140A1, 140A2 provide methods 146A1, 146A2 that can be applied respectively to portfolios and projects.

The methods 146Ai are made available to users as options on menus 147Ai that are displayed when their associated applet's icon is selected. For example, the portfolio managers method's 146A1 are displayed as options on a "Portfolio" menu 147A1. 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 150A and enabled for user interaction. Many of the submenus 147Aij provided by the preferred embodiment; e.g., the Project->Create, Import, Choose, and Remove submenus 147A1a, 147A1b, 147A1c, 147A1d and the Project->Create, Import, Choose, Remove, Run and Copy submenus 147A2a, 147A2b, 147A2c, 147A2d, 147A2e, 147A2f respectively provide a list of portfolios and projects to which the submenus associated method can be applied. For example, referring to FIG. 4, there is shown an instance of the Portfolio->Choose submenu 147A1c listing a