BACKGROUND OF THE INVENTION 1. Field of the Invention
The present invention relates to the field of computer systems and, in particular, to portable computer systems.
2. Background
A personal digital assistant (PDA) is a small hand-held computer for storing addresses and phone numbers, taking notes, and keeping track of daily appointments. And, unlike a paper organizer, a PDA can download e-mail and play music. Though originally intended to be simple digital calendars, PDAs have evolved into machines for crunching numbers, playing games or music, and downloading information from the Internet. However, typically a PDA is intended to complement a desktop or laptop computer (PC), not replace one.
PDAs can be categorized into two major categories: hand-held computers and palm-sized computers. Compared to palm-sized computers, hand-held computers tend to be larger and heavier. They have larger liquid crystal displays (LCD) and use a miniature keyboard, usually in combination with touch-screen technology, for data entry. Palm-sized computers are smaller and lighter. They have smaller LCDs and rely on stylus/touch-screen technology and handwriting recognition programs for data entry. Regardless of the type of PDA, conventional PDAs all include microprocessors, operating systems, local memories, and input/output devices.
The microprocessor is the brain of the PDA and coordinates all of the PDA's functions according to programmed instructions. The operating system of the PDA contains the pre-programmed instructions that tell the microprocessor what to do (e.g., how to operate the applications executed by the microprocessor). The PDA stores its basic programs (address book application, calendar application, memo pad application and operating system) in a read-only memory (ROM) chip, which remains intact even when the machine shuts down. The other data and programs that are added later are stored in the PDA's random-access memory (RAM), static RAM, and/or flash memory.
Because a typical PDA is intended to work in tandem with a PC, they need to work with the same information in both places. That is, if a PDA user makes an appointment on its PC, it also needs to transfer the appointment to its PDA; if the user jots down a phone number on its PDA, it should upload the number later to its PC. So, a PDA needs to be able to communicate with a PC. The communication between PDA and PC is referred to as data synchronization or “syncning.” This is typically done through a serial or USB port on the PDA. Some PDAs also offer wireless methods to transfer data to and from a PC/PC network, e.g., through a wireless e-mail/Internet service provider. In addition, some PDAs offer modem accessories to transfer files to and from a PC/PC network.
While PDAs are starting to have wireless network connectivity to facilitate data synchronization or syncing with the PC, they still rely on a locally stored operating system and applications to provide their functionalities. In this respect, the hardware resources available on the PDAs and the applications downloaded to the PDAs limit the capabilities of the conventional PDAs. Similarly, users of the PDAs have to configure the PDAs for their usage with the correct applications and parameters. In addition, if a user needs a new PDA due to a fault (or failure) of the current PDA or due to the current PDA having insufficient hardware resources, the user has to repeat the configuration process. Moreover, each PDA user needs to have its own PDA even if it only needs a PDA for a small fraction of the time. Therefore, a lot of time and cost are lost because conventional PDAs have to be periodically and individually provided, reconfigured and/or upgraded. Accordingly, there is a need to provide a PDA system and method with the advantages of a conventional PDA but avoiding the need to periodically and individually provide, reconfigure, and upgrade the PDA.
Moreover, conventional PDAs need to have sufficient memory (or storage) capacity and processing capability to execute applications locally. These requirements may conflict with the need or aim of having smaller and smaller PDAs, which may not have enough storage capacity or processing capability for storing or processing, respectively, large applications (or software programs or large parts of software programs). Accordingly, it is further desired to provide a system and method for providing a small (or thin) PDA without reducing the PDA's capabilities.
SUMMARY OF THE INVENTION The present invention provides a thin client network architecture to a personal digital assistant (PDA). In one embodiment, the PDA of the present invention can be further described as a portable thin network client (as opposed to a thick client or a full-featured client). A portable thin client is a small, portable (e.g., wireless), stateless, “plug and work” computer whose main function is to process all input and output for the user, as well as to manage communication with at least one server. All other computational tasks (or services) for the user can then be performed on the server which is shared amongst a community of thin clients.
Because the portable thin clients of the present invention are stateless (i.e., devices that process information without any knowledge of previous/subsequent information), a user's information can be instantly sent to any thin client within the network. That is, a user can be in the middle of a user service or session (e.g., typing an e-mail message) on one portable thin client, move to another portable (or static) thin client and then resume the same user service exactly where the user left off. Similarly, if a portable thin client fails, a user can move from the failed portable thin client to another portable thin client without losing any work.
In addition, the off-loading of computational services (i.e., the traditional client processing, such as state maintenance and driver services) from the portable thin client (i.e., PDA of the present invention) to the shared servers permits simplification of the PDA because resources, such as software and hardware for performing these computational services, are not needed at the PDA. Thus, the hardware resources required for the PDA are both small and highly deterministic, as the only software and/or hardware required for any application is that needed to run the local hardware (e.g., the screen of the PDA and the input device of the PDA) and to communicate over the wireless network. More specifically, the processing/memory requirements for the PDA of the present invention can be vastly deterministic such that the entire PDA hardware may be optimized down to the input/output supported by that hardware rather than over-provisioning the hardware for future usage (because the communication bandwidth required is very deterministic).
Moreover, as a result of re-architecting the PDA as a portable thin client, there is no need to download application(s) and operating system(s) to the PDA because the server—through the network—provides these services. There is also no data loss when a PDA is faulty or has to be changed. Finally, since the present invention allows an enterprise's information technology (IT) department to make available the required applications only at the server servicing the PDAs, the network architecture of the present invention does not require a PDA upgrade if an application upgrade is required or a new application is needed.
In one embodiment, a wireless communication system for providing user sessions to wireless clients is provided by the present invention. The system includes a wireless network, a wired network, and a wireless client for providing an interface for a user to access a user session. A wireless server is coupled to the wireless client via the wireless network. Wired servers are coupled to the wireless server via the wired network. The wired servers provide the user session for the user through the wired network and maintain the user session on the wired servers. The user session includes a computational power and a state maintenance for the user.
In another embodiment, a method for using a wireless client to receive a user session is provided. The method includes inputting a user identifier (ID) into a wireless client. An Internet Protocol (IP) address is then configured for the wireless client. Once the IP address has been configured, the wireless client is connected with a server via a wireless client. The wireless client then reports its display capability and the user ID to the server. In turn, the server responds with an initial display data generated at the server for the reported user ID. The wireless client then displays this initial display data. Next, a user session for the user ID is processed at the server and displayed on the wireless client. In this embodiment, the wireless client has a capability of being shared by a plurality of different user IDs.
Moreover, the portable thin client (or thin client PDA) of the present invention may include smart card capabilities so that an enterprise (or business organization) can pool its PDAs with the users that need them. That is, a user can be provided with any thin client PDA on the enterprise's network on a need-to-use basis by inserting the user's smart card into the PDA to get the user's individual PDA configuration on that PDA. Furthermore, the concept of a shared PDA of the present invention can be expanded beyond the enterprise workplace (via a private network) to allow a user with an appropriately configured smart card to have access via the Internet to its own applications and environment by using any one of the pool of PDAs made available to the user.
A more complete understanding of the system and method for providing a portable thin client of the present invention will be afforded to those skilled in the art, as well as a realization of additional advantages and objects thereof, by a consideration of the following detailed description of the preferred embodiments. Reference will be made to the appended sheets of drawings which will first be described briefly.
BRIEF DESCRIPTION OF THE DRAWINGS The drawings illustrate the design and utility of preferred embodiments of the invention. The components in the drawings are not necessarily to scale, emphasis instead being placed upon illustrating the principles underlying the embodiment. Moreover, in the drawings like reference numerals designate corresponding parts throughout the different views.
FIG. 1 illustrates a thin client computer architecture according to an exemplary embodiment;
FIG. 2 illustrates a session management and authorization according to an exemplary embodiment;
FIG. 3 illustrates a portable thin client according to an exemplary embodiment;
FIG. 4 illustrates a portable thin client architecture according to an exemplary embodiment;
FIG. 5 illustrates a server software stocks and a client software stocks according to an exemplary embodiment; and
FIG. 6 illustrates a flow diagram of providing a user session to a portable thin client according to an exemplary embodiment.
DETAILED DESCRIPTION The present invention provides a thin client network architecture to a personal digital assistant (PDA). In one embodiment of the invention, the PDA is described as a portable thin client (or the PDA functions as a thin client of a network). More specifically, the present invention employs a computer network architecture in which the portable thin client (or PDA) is a small, stateless, portable (e.g., wireless), “plug and work” computer whose main function is to process all input and output for the user, as well as to manage communication with at least one server. All other computational tasks (or services) for the user are performed on the at least one server which is shared amongst a community of thin clients. In the following detailed description, like element numerals are used to describe like elements illustrated in one or more drawings.
Referring toFIG. 1, there is shown a thin client computer architecture as envisioned in an exemplary embodiment. Inthin client architecture10 of the envisioned embodiment, data and computational functionalities (e.g., PDA applications) are provided to thin clients20 by servers30 vianetwork40. At clients20, all functionality is eliminated except that which generates output to a user (e.g. display and speakers), takes input from the user (e.g. mouse and keyboard) or other peripherals that the user may interact with (e.g., scanners, cameras, removable storage, etc.). That is, all other computational functionalities (or tasks or services) are done by servers30 and the computation is done independently of the destination (i.e., services from servers30 can be provided to clients20 without the services needing to know which clients20 the services are communicating with).
More specifically, servers30 communicate with thin clients20 throughnetwork40. The computational power and state maintenance are processed and maintained at servers30. The computational power and state maintenance (i.e., the servers) is not tied to specific computers, but may be distributed over one or more traditional computers or traditional servers. One of the servers30 may provide one or more services, or a service may be implemented by one or more servers30. The services provided by servers30 can be providing computation, state (or state maintenance), and data to clients20 and the service is under the control of a common authority or manager. InFIG. 1, the services are provided on servers30, such asfile servers30a,application servers30b,web servers30c,client servers30d, switches30e, and/orstorage30f. It is important to note that servers30 can also be providing data that comes from outside of the servers30 shown inFIG. 1, such as data from the Internet.
It is the responsibility of servers30 to handle communications with a client20 (e.g.,20a,20b, and/or20c) that is currently being used to access a given service of servers30. The responsibility of servers30 includes taking the output from servers30 and converting it to a standard protocol for the thin client20. This data protocol conversion is handled in one exemplary embodiment by a middleware layer, such as the X server, the Microsoft Windows™ interface, a video format transcoder, the OpenGL interface, or a variant of the Java.awt.graphics class running within servers30. The middleware layer handles the translation of data to and from servers30 and the client20.
In an exemplary embodiment, each service is provided by a server that has been optimized for providing that service. For example, an Enterprise class server could be used to provide a unit service, a Sun MediaCenter server could be used to provide video service, a Hydra based NT server could be used to provide applet program execution service, etc.
Referring still toFIG. 1, the server or the group of servers30 producing the services for clients20 can be coupled directly to clients20 throughnetwork40. It is also possible for a server30 to be a proxy for another server30 providing the services, such as a database computer in a three-tiered architecture, where the proxy server30 might only generate queries and execute user interface code.
The network of the exemplary embodiment can include any of multiple suitable communication paths for carrying data between servers30 and clients20. In one embodiment the network is a local area network (LAN) implemented as an Ethernet network. Any other LAN may also be utilized. The present invention also contemplates the use of wide area networks, the Internet, and others. The network of the present invention may also be implemented with a physical medium such as a wire or fiber optic cable, or it may be implemented in a wireless environment.
In operation, the provision of services in a thin client architecture of an envisioned embodiment revolves around an abstraction referred to herein as a session. A session of the envisioned embodiment is a long-lived, persistent and reliable representation of those services (or applications) that are executing on behalf of a user at any point in time. Referring now toFIG. 2, session140 is maintained by a server facility known as asession manager130. Thesession manager130 controls and maintains (e.g., via a database) the mappings between users and sessions140 (e.g.,140a,140b, and/or140c), and manages the services that make up each session140 (e.g.,140a,140b, or140c). For each user thatnetwork system100 is aware of there are one or more sessions140. Thesession manager130 offers a service to the user that allows sessions140 to be configured and new sessions140 to be created.
Because the thin client or clients120 of the present invention are stateless (i.e., devices that process information without any knowledge of previous/subsequent information), a user's session or user session140 can be instantly sent to any thin client120 (e.g.,120a,120b, or120c) within thenetwork system100. That is, a user can be in the middle of a user session140 (e.g., typing an e-mail message) on one thin client120, move to another thin client120 and then resume the same user session140 (e.g.,140a,140b, or140c) exactly where the user left off. Similarly, if a thin client120 fails, a user can move from the failed thin client to another thin client without losing any work.
In addition, because a user is associated with its user session140 (e.g.,140a,140b, or140c), and that session140 can be displayed on any thin client120 that the user accesses (e.g.,120a,120b, or120c), a server facility known as theauthentication manager150 is used for ensuring the legitimacy of the user and associating the user with its desired session140. That is, initially a thin client120 is in a sleep, stand-by, or off mode (or dormant state) when the thin client120 is not in use by a user. When the user wants to use a particular thin client120, an authentication exchange takes place that may include the use of one or more of asmart card160, key, password, and/or biometric mechanism.
When theauthentication manager150 validates a user, it notifies the user'scurrent session manager130, which in turn notifies all of the services within the selected session140, and the session's display is composed at the user's thin client120 (e.g., at the display of the thin client). From within a session140, a user can interact with existing services, initiate new services, or end executing services. When the user departs from the thin client120 (e.g., by withdrawing a smart card160), theauthentication manager150 notes this and notifies thesession manager130, which notifies all of its related services, which stop their display functions, and the thin client120 (that the user was on) returns to the dormant state. The effect of the activation and deactivation of a thin client120 is similar to turning off the display monitor on a conventional personal computer (PC). The application being displayed by the monitor (that has been turned off) is still available and is perhaps still executing on the PC, but no display is generated. However, unlike the conventional PC, one advantage of the present invention is that the user display can be accessed and displayed on any connected thin client120.
Specifically, a user can access one or more sessions140 by inserting asmart card160 in a card reader (e.g., card reader166) coupled tothin client120a. Asmart card160 can be a card that is capable of storing information such as in a magnetic strip or memory of the smart card. The smart card can store user information such as a user's identification (i.e., user ID, such as a 64-bit number) and a secret code (e.g., a 128-bit random number) that is transmitted tothin client120a. The secret code is used during authentication.
In the embodiment shown inFIG. 2,thin client120ais aware of (or can obtain) its interconnection network address (e.g., Internet Protocol address) and the address of authentication manager140. In addition, when a user initiates the login,thin client120ainitiates communication with authentication manager140 to begin authentication. Authentication manager140 is a program active (i.e., executing) on a server (e.g.,30 inFIG. 1) connected tothin client120avia an interconnection network, such as a LAN. It should be apparent, however, thatthin client120acan be connected to authentication manager204 using other interconnection network technologies such as a fiber channel loop or point-to-point cables.Thin client120asends a startup request toauthentication manager150 that includes a user identification (user ID).
In one embodiment,authentication manager150 responds to the startup request by initiating an authentication to validate the user. Authentication can include any mechanism that verifies the identity of the user to thesystem100. A key or password known only to the user, or biometrics information, can be used to authenticate the user.
Authentication may alternatively or additionally be performed by verifying a personal identification number (PIN) entered by the user atthin client120a.Authentication manager150 sends a command (i.e., a challenge command) to initiate entry of the user's PIN atthin client120a. The user entry is packaged bythin client120aand transmitted to authentication manager150 (i.e., a challenge response).Authentication manager150 verifies the challenge response with user information retained by authentication manager150 (e.g., in an authentication database), information supplied by the user, and information that is generated during authentication. When the user is authenticated, the user is given access to a session (e.g.,session140c) that is a persistent representation of a related set of one or more services executing on behalf of the user.
More specifically, if the user is authenticated,authentication manager150 notifies session manager130 (via a connect message) that the user has logged into thenetwork system100 onthin client120a. In response to the message fromauthentication manager150,session manager130 notifies the services in the user's current session (i.e., the services insession140c) that the user is attached tothin client120a. That is,session manager130 sends a connect message to services to direct their output tothin client120a.Session manager130 ensures that services that are considered to be required services of thesession140care executing. If not,session manager130 causes them to be initiated. The user can then interact with the services within a session (e.g.,session140c).Thin client120ais connected to servers (e.g.,30 inFIG. 1) running the services via an interconnection network such as a LAN or other interconnection technology. The user can also start new services or terminate existing services.
The user can detach from thenetwork system100 by removing the card fromcard reader166. Other mechanisms to express a disconnect can also be used with the invention (e.g., a “sign-off” button onthin client120a). The services ofsession140ccan continue to run even after the user removes thecard160 fromcard reader166. That is, a user's associatedsession140cand the services that comprise thesession140ccan continue in existence during the period that a user is unattached (e.g., logged off) from thesystem100. When the user removes thecard160 fromcard reader166,thin client120anotifies authentication manager150 (e.g., via a disconnect message), which notifies session manager130 (e.g., via a disconnect message).Session manager130 then notifies the services of thesession140c(e.g., via a disconnect message) which terminate their transmission of display commands tothin client120a. Services continue execution, however, during the time that the user is not logged onto a thin client120 (e.g.,120a,120b, or120c). The user can then log back in using the same or another client, such as network client120 (e.g.,120a,120b, or120c), connect tosession140cand interact with the services ofsession140c.
Referring toFIG. 3, there is shown portable thin client205 (e.g., a personal digital assistant or PDA) as envisioned in an exemplary embodiment.Keyboard210 and/or stylus (or touch screen)211 are coupled tobi-directional system bus218.Keyboard210 and/orstylus211 are for introducing user input tocomputer network system200 and communicating that user input toprocessor213. Other suitable input devices may be used in addition to, or in place of,stylus211 and/orkeyboard210. Input/output (I/O)element119 is also coupled tobi-directional system bus218. I/O element119 can be such I/O elements as a serial port, a parallel port, a USB, etc.
Portablethin client205 further includes a video memory (e.g., video RAM214), main memory (e.g., main RAM115) and a persistent storage memory (e.g., ROM212) that are all coupled tobi-directional system bus218 along withkeyboard210 and/orstylus211 andprocessor213. The persistent storage may include both fixed and removable media, such as magnetic, optical or magnetic optical storage systems or any other available mass storage technology.Bus218 may contain, for example, thirty-two (32) and/or sixty-four (64) address lines for addressingvideo RAM214 ormain RAM215.Bus218 also includes, for example, a 32- and/or 64-bit data bus for transferring data between and among the components, such asprocessor213,main RAM215,video RAM214 andpersistent storage memory212. Alternatively, multiplex data/address lines may be used instead of separate data and address lines.
In one embodiment of the invention,processor213 is a microprocessor, such as Motorola's Dragonball Multiprocessor without Interlocked Pipeline Stages (MIPS), Intel's X-Scale™ Processor or Hitachi's SH7709a, or a SPAR™ microprocessor from Sun Microsystems, Inc. However, any other suitable microprocessor may be utilized. Themain RAM215 can comprise of dynamic random access memory (DRAM); thevideo RAM214 can comprise a dual-ported video random access memory; and theROM212 can comprise a Flash ROM.
Video RAM214 can be used to drive a flat panel or liquid crystal display (LCD)216, or any other suitable data presentation device. In addition,video RAM214 can be coupled to a circuitry (not shown) that converts pixel data stored invideo RAM214 to a signal suitable for use byLCD216.LCD216 is a type of display suitable for displaying graphic images.
Portablethin client205 also includescommunication interface220 coupled tobus218.Communication interface220 provides a two-way data communication coupling via a wireless port (or antenna)221 to awireless network222.Communication interface220 may comprise an integrated services digital network (ISDN) card, a modem, a radio frequency (RF) and power section (to handle power management and recharging, and also to deal with the hundreds of RF channels), and/or RF amplifiers to handle signals traveling to and from the RF port.Communication interface220 is used to provide a data communication connection to the corresponding type of wireless line that comprises part of thewireless network222.
Wireless network222 is coupled towireless server224.Wireless server224 is coupled to a plurality of servers230 (e.g.,file servers30a,application servers30b,web servers30c,client servers30d, switches30e, and/orstorage30fshown inFIG. 1) via wirednetwork226. If wirednetwork226 is a LAN, thenwireless server224 comprises a LAN card to provide a data communication connection to the LAN.
In operation, portablethin client205 can wirelessly send messages and receive data, including program code, through the network(s) (e.g.,networks222 and226) andcommunication interface220. The received program code may be executed byprocessor213 as it is received, and/or stored in ROM212 (e.g., a EPROM), or other non-volatile storage for later execution. In this manner, portablethin client205 may obtain program code in the form of a carrier wave. The program or application code may be embodied in any form of computer program product. A computer program product comprises a medium configured to store or transport computer readable code, or in which computer readable code may be embedded. Some examples of computer program products are EPROMs, Flash memories,servers230, and carrier waves.
FIG. 4 provides an exemplary embodiment of a portable thin client computer architecture indicated generally at300, that utilizes a PDA320 (or the portable thin client). In thisthin client architecture300,servers330 via aLAN340 provide data and computational functionalities toPDA320. AtPDA320, all functionality is eliminated, except that which generates output to a user (e.g. display and speakers), takes input from the user (e.g. stylus and/or keyboard) or other peripherals that the user may interact with (e.g. scanners, cameras, removable storage, etc.). That is, all other computational functionalities (or tasks or services) are done byservers330 and the computation is done independently of the destination.
More specifically, theservers330 here communicate withPDA320 through a LAN340 (or a wired network), awireless server350, and a wireless network360 (e.g., a 802.11 or a wireless fidelity or a Wi-Fi network). The computational power and state maintenance are processed and maintained atservers330.Servers330 include such servers as file servers, application servers, web servers, thin client servers, switches, and/or storage. It is important to note thatservers330 can also be providing data that comes from outside of theservers330 shown inFIG. 4, for example, data from the Internet.
It is the responsibility ofservers330 andwireless server350 to handle communications withPDA320 that is currently being used to access a given session of theservers330. The responsibility ofservers330 includes taking the output fromservers330 and converting it to a wired protocol for transmission towireless server350 viaLAN340.Wireless server350 takes the output in the wired protocol and converts it to a wireless protocol for transmission toPDA320 viawireless network360.
Specifically, and referring now also toFIG. 5, in an exemplary embodiment of the software stacks of the present invention, user services (or PDA applications410) and windows/display software are running on at least one of theservers330. Theserver330 creates the screen image thatPDA320 should display. Theserver330 transmits this screen image over network(s)340 and360 as if it was, communicating to a local graphics device of the at least one server330 (or a framebuffer or a graphics card). That is, theserver330 creates a “framebuffer” image and passes this image to the network (or net) framebuffer driver of thinclient server application420 as a block of data. The network framebuffer driver of thinclient server application420 then fragments the block of data into Transmission Control Protocol/Internet Protocol (TCP/IP)packets430a, which are sent toPDA320 via a serverside wireless driver440, a wireless network450 (e.g., via a 802.11 network or wireless LAN protocol), and a PDAside wireless driver460. After receiving TCP/IP packets430bon the PDA side (i.e.,550),framebuffer protocol470 re-assembles TCP/IP packets430binto an image that is sent tolocal display driver480 to be displayed on the PDA's LCD (e.g.,216 inFIG. 3).
Input protocol490 is also provided on the PDA's software stacks of an exemplary embodiment (or in PDA resident software550).Input protocol490 takes keyboard/stylus/smartcard “actions” via smart card/input drivers500 and converts the “actions” into a TCP/IP packet430bwhich is sent back to theservers330 as a user feedback to at least one of the services (or applications) running on at least one of theservers330. In the context of the present embodiment, “action” does not mean that thePDA320 sends back every stylus pixel movement as an individual network packet, instead the present “action” stands for the concept of thePDA320 sending back a packet for things that need actioning from the server330 (e.g., moving a cursor over tab and click). Particularly, for thepresent PDA320, the input may be: data read off of an inputted smart card (e.g., via a smart card driver within smart card/input drivers500), keys pressed, characters entered on a stylus of the PDA (or stylus clicks), and a smart card removed notification.
In an exemplary embodiment, at least one of theservers330 runs a display manager (not shown) for each PDA. The display manager (similar to X-server or windows manger) communicates display data for the sessions (or applications) running onservers330. The display manager creates the aggregated screen images from the communicated display data for the LCD of thePDA320. In the present embodiment, the display manager is running on theserver330. The display manager can be used to create an overall display image from the applications running onservers330. In addition, the display manager or an alternative display manager running on one ormore servers330 can be used to create an appropriate (or a customized) screen image for a specific LCD on thePDA320 or on another PDA.
In a more specific embodiment,PDA applications410 could be divided into: a Java Virtual Machine (JVM orJVM410ashown inFIG. 5), a Swing application interface (API), and a Java Application (i.e., a service performed by a Java server). A Swing API is the Java graphic user interface (GUI) API and is part of the JVM (i.e., the Swing API is the interface to the Java application for display data). The JVM (which is a self-contained operating environment) provides a conduit between the Java application sending display data to the swing API and the JVM interface sending data to thePDA display driver480. That is, all the PDA specifics for displaying data on thePDA320 are coded and available within the JVM.
In the present embodiment and referring toFIGS. 4 and 5, PDA screen driver480 (e.g., a conventional display driver) is maintained on PDA320 (i.e., as a PDA resident software550) butJVM410ais moved to servers330 (i.e., as a server software555). The embodiment then shims (or provides) the interfaces (including the Swing API) betweenJVM410aanddisplay driver480 over wireless network450 (e.g., via existing framebuffer protocol470) so that Java applications (e.g., PDA applications410) running onservers330 can be displayed onPDA320.
The computer systems described above are for purposes of example only. An embodiment of the invention may be implemented in and/or with any type of computer system or programming or processing environment. For example, an embodiment may be implemented with a virtual desktop system architecture that is described in co-pending U.S. patent application Ser. No. 09/063,335, filed Apr. 20, 1998, entitled “Method and Apparatus for Providing A Virtual Desktop System Architecture” and assigned to the present assignee, and incorporated herein by reference (including the attached appendix in the co-pending application).
In addition, referring now back toFIG. 3, portablethin client205 may be implemented as a hand-held computer. In another embodiment, portablethin client205 is a palm-sized computer. As discussed above, the major differences between the two types of portable thin client205 (e.g., PDA) are size, display and mode of data entry. Compared to palm-sized computers, hand-held computers tend to be larger and heavier. The hand-held computers have larger liquid crystal displays (LCD) and use a miniature keyboard, usually in combination with touch-screen technology, for data entry. Palm-sized computers are smaller and lighter. They have smaller LCDs and rely on stylus/touch-screen technology and handwriting recognition programs for data entry. For example, a palm-sized computer of the present invention can include akeyboard210 and acolor LCD216 that has 760×1024 pixels and a palm-sized computer of the present invention can include astylus211 for input and a 256×256 pixel black andwhite LCD216.
Moreover, by reducing the function of portablethin client205 into a well-defined, fixed set of behaviors, a user could start a session on a first portable thin client (e.g., a palm-sized computer with akeyboard210 for input and 760×1024 pixel color LCD), then remove a smart card and place in a second (and different) portable thin client (e.g., a hand-held computer with a stylus for input and 256×256 pixel black and white LCD). That is, as long as an application writer running inwired servers230 implements a Graphic User Interface (GUI) of the first and second thin clients correctly (i.e., sizes GUI to the LCD of the thin clients rather than a fixed size) it should provide the display in both clients of the session in the same state.
In general, and according to the foregoing,FIG. 6 is a flowchart illustrating an exemplary embodiment of the method for providing user sessions to portable thin clients (e.g., PDAs). Initially, atstep710, a user inserts a smart card (e.g.,160 inFIG. 2) into a smart card reader (e.g.,166 inFIG. 2) of a PDA (or a portable thin client). Next, atstep720, the PDA performs a protocol to have its associated Internet Protocol (IP) addresses configured and/or located (e.g., configuring an IP address of the PDA and locating an IP address of an authentication manager of a server servicing the PDA). For example, the PDA can perform a WiFi Dynamic Host Configuration Protocol (DHCP). The DHCP assigns an IP address to the PDA on the WiFi network. The dynamic addressing capability of the DHCP allows the PDA to have a different IP address every time the PDA connects to the network. In one embodiment, the PDA's IP address can change even while the PDA is still connected to the network. DHCP also supports a mix of static and dynamic IP addresses. Generally, dynamic addressing simplifies network administration because the software keeps track of IP addresses rather than requiring an administrator to manage the task. As a result, a new PDA can be added to a network without the requirement of manually assigning the computer a unique IP address. In addition, rather than having the PDA get its network configuration after the smart card is inserted, the PDA alternatively may get its network configuration when it is powered on and then waits for the smart card insertion having its IP addresses already configured.
Once the IP addresses of the PDA have been configured (and/or assigned), atstep730, the PDA reports its display capability to at least one of the servers on the network. Atstep740, the PDA reports the user identifier (or user ID) of the inserted smart card. Atstep750, the server responds with an initial display for the user ID (e.g., an authentication page). As discussed above (e.g., via asession manager130 inFIG. 2), the servers then continue with the thin client connections with the PDA to provide the necessary thin client session or sessions (e.g.,140 inFIG. 2) to the user.
Atstep760, the user removes the smart card from the PDA. Once the smart card has been removed from the PDA, atstep770, the PDA disconnects from the network and shuts down. In this embodiment, however, at step780, the user session or sessions (including the session state or states) that were provided to the PDA are continually maintained at the servers. Accordingly, there is no data loss when the user is disconnected from the PDA or when the PDA is faulty. In addition, as a result of designing (or re-architecting) the PDA as a portable thin client, there is no need to download software (or application or applications) and the operating system(s) operating the software to the PDA because server—through the network—provides these services (e.g., the application services and/or the operating system services). Moreover, the present PDA does not have to be upgraded if an application upgrade is required or a new application is needed because the new or upgraded application can just be provided at the servers running the application and servicing the PDA.
Having described the preferred embodiments of the system and method of the portable thin client for the enterprise workspace, it should be apparent to those skilled in the art that certain advantages of the described system and method have been achieved. It should also be appreciated that various modifications, adaptations and alternative embodiments thereof may be made within the scope and spirit of the present invention.