`for a Network Computing Environment
`
`Jurgen Friedrichs, Henri Jubin and The Jalapefio Team
`
`
`
`International Technical Support Organization
`
`http://www.redbooks.ibm.com
`
`SG24-5115-00
`
`LGEExhibit-1015/Page 1 of 346
`LGEv. Uniloc
`
`
`
`LGEExhibit-1015/Page2 of 346
`
`LGE Exhibit-1015/Page 2 of 346
`
`
`
`International Technical Support Organization
`
`SG24-5115-00
`
`Java Thin-Client Programming
`for a Network Computing Environment
`
`June 1998
`
`LGE Exhibit-1015/Page 3 of 346
`
`
`
`Take Note!
`
`Before using this information and the product it supports, be sure to read the general information in
`Appendix C, “Special Notices” on page 307.
`
`First Edition (June 1998)
`
`Comments may be addressed to:
`IBM Corporation, International Technical Support Organization
`Dept. DHHB Building 045 Internal Zip 2834
`11400 Burnet Road
`Austin, Texas 78758-3493
`
`© Copyright International Business Machines Corporation 1998. All rights reserved
`Note to U.S Government Users – Documentation related to restricted rights – Use, duplication or disclosure is
`subject to restrictions set forth in GSA ADP Schedule Contract with IBM Corp.
`
`LGE Exhibit-1015/Page 4 of 346
`
`
`
`Contents
`
`Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .ix
`
`Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
`
`Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
`The Team That Wrote This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
`Comments Welcome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
`
`Chapter 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
`1.1 A Thin Client Application—The Lunar Medical Center Story . . . . . . . . . 2
`1.2 About the Book. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
`1.3 Structure of the Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
`1.4 Who Should Read This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
`1.5 Assumptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
`1.6 How to Use This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
`
`Chapter 2. Network Computing and Network Computers . . . . . . . . . . . 9
`2.1 What is Network Computing? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
`2.1.1 Network Computing Ideals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
`2.1.2 Network Computing Reality . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
`2.2 Problems with Network Computing . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
`2.3 The Network Computer (NC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
`2.3.1 NC Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
`2.3.2 NC Capabilities and Architecture . . . . . . . . . . . . . . . . . . . . . . . . 15
`2.3.3 NC Product Example: The IBM Network Station 1000. . . . . . . . . 18
`2.4 A Network Computing Strategy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
`
`Chapter 3. Distributed Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
`3.1 The Monolithic, Nondistributed Alternative . . . . . . . . . . . . . . . . . . . . . 23
`3.2 A Look at Some Issues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
`3.3 Considering Distributed Systems Design & Development Strategies . 28
`3.4 In Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
`
`Chapter 4. HTML-Based Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
`4.1 Browsers and Web Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
`4.2 HTML Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
`4.2.1 HTML Conformance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
`4.2.2 Developing in HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
`4.2.3 Simple Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
`4.2.4 Forms and Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
`4.2.5 To Validate or Not to Validate... . . . . . . . . . . . . . . . . . . . . . . . . . 45
`4.3 Client Intelligence - JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
`
`© Copyright IBM Corp. 1998
`
`iii
`
`LGE Exhibit-1015/Page 5 of 346
`
`
`
`4.3.1 Simple JavaScript Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
`4.3.2 Using JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
`
`Chapter 5. Java-Based Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
`5.1 A Brief Overview of Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
`5.2 Client-Server Computing with Java. . . . . . . . . . . . . . . . . . . . . . . . . . . 60
`5.2.1 Applets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
`5.2.2 Sockets in Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
`5.2.3 Accessing an HTTP Server with Java . . . . . . . . . . . . . . . . . . . . . 65
`5.2.4 Object-Object Communication: Remote Method Invocation (RMI)66
`5.2.5 Connecting to the Database: JDBC . . . . . . . . . . . . . . . . . . . . . . 66
`5.3 The Lunar Medical Center’s Java Application . . . . . . . . . . . . . . . . . . . 68
`5.4 The Lunar Medical Center’s Java Applet . . . . . . . . . . . . . . . . . . . . . . 73
`5.5 Some Java Facilities Supporting Enterprise-Wide Network Computing76
`5.6 In Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
`
`Chapter 6. Design Decisions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
`6.1 Designing the Object Model for the Lunar Medical Center’s Systems . 79
`6.2 Designing the Applications: Considering Alternatives . . . . . . . . . . . . . 82
`6.2.1 Profiles Describing the Check-In Applet . . . . . . . . . . . . . . . . . . . 83
`6.2.2 Profiles Describing the Main Patient View/Edit Application . . . . . 83
`6.2.3 Profiles Considered but not Implemented . . . . . . . . . . . . . . . . . . 84
`6.2.4 Additional Factors to be Considered . . . . . . . . . . . . . . . . . . . . . . 85
`6.3 The Lunar Medical Center Implementations . . . . . . . . . . . . . . . . . . . . 86
`6.3.1 Nondistributed Full Application Based on Files . . . . . . . . . . . . . . 88
`6.3.2 HTML Only at the Browser with a Servlet at the Server . . . . . . . 89
`6.3.3 HTML and JavaScript with HTTP to a Servlet . . . . . . . . . . . . . . . 90
`6.3.4 Applet at the Browser with HTTP Connection to Java Servlet . . . 90
`6.3.5 Applet with Direct JDBC Connection. . . . . . . . . . . . . . . . . . . . . . 91
`6.3.6 Java Application Using JDBC Directly. . . . . . . . . . . . . . . . . . . . . 92
`6.3.7 Full Application Using Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . 93
`6.3.8 Full Java Application Using Java RMI . . . . . . . . . . . . . . . . . . . . . 94
`6.4 In Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
`
`Chapter 7. Java Servlets and HTTP Communication . . . . . . . . . . . . . . 97
`7.1 Overview of the Hypertext Transfer Protocol and Request Methods . . 97
`7.1.1 Protocol Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
`7.1.2 HTTP Headers and Server Status Codes . . . . . . . . . . . . . . . . . 100
`7.1.3 Client Request Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
`7.2 Common Gateway Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
`7.2.1 Using CGI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
`7.2.2 Problems with CGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
`7.3 Java Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
`7.3.1 Servlet Requirements and Usage . . . . . . . . . . . . . . . . . . . . . . . 110
`
`iv
`
`Java Thin-Client Programming for a Network Computing Environment
`
`LGE Exhibit-1015/Page 6 of 346
`
`
`
`7.4 The LMC’s HTTP/Servlet Implementation . . . . . . . . . . . . . . . . . . . . . 115
`7.5 In Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
`
`Chapter 8. Java Servers using JDBC . . . . . . . . . . . . . . . . . . . . . . . . . 119
`8.1 Overview of JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
`8.1.1 JDBC API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
`8.1.2 JDBC/SQL Data Type Mapping . . . . . . . . . . . . . . . . . . . . . . . . 121
`8.1.3 JDBC Database Drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
`8.2 Using JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
`8.3 The LMC’s JDBC Implementation. . . . . . . . . . . . . . . . . . . . . . . . . . . 128
`
`Chapter 9. Java Servers and Socket Communication . . . . . . . . . . . . 137
`9.1 Introduction to TCP/IP sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
`9.2 Sockets with Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
`9.2.1 Compatibility of Different Socket Implementations . . . . . . . . . . 140
`9.3 The LMC’s Socket Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . 141
`9.3.1 Implementing the Socket Client . . . . . . . . . . . . . . . . . . . . . . . . 141
`9.3.2 Implementing the Socket Server . . . . . . . . . . . . . . . . . . . . . . . . 143
`9.4 In Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
`
`Chapter 10. Java Servers and RMI Communication . . . . . . . . . . . . . . 147
`10.1 RMI: An Easy Way to Implement Java Client/Server Applications. . 147
`10.2 The RMI Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
`10.2.1 Stub and Skeleton Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
`10.2.2 Remote Reference Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
`10.2.3 Transport Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
`10.2.4 RMI Method Invocation Mechanism . . . . . . . . . . . . . . . . . . . . 150
`10.3 RMI from a Programmer’s Perspective . . . . . . . . . . . . . . . . . . . . . . 150
`10.3.1 Server Side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
`10.3.2 Client Side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
`10.3.3 RMI Security Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
`10.3.4 RMI Registry. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
`10.3.5 Major RMI Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
`10.3.6 Developing with RMI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
`10.4 The LMC’s RMI Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
`10.4.1 The RMI Server Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
`10.4.2 The RMI Server Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
`10.4.3 The RMI Client Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
`10.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
`
`Chapter 11. Client Diets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
`11.1 Looking at the Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
`11.1.1 The Compiler and Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
`11.1.2 Packaging, Class Loading and Pre-Initialization . . . . . . . . . . . 165
`
`
`
`v
`
`LGE Exhibit-1015/Page 7 of 346
`
`
`
`11.1.3 Object Recycling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
`11.1.4 Garbage Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
`11.1.5 Optimizing Memory Accesses . . . . . . . . . . . . . . . . . . . . . . . . . 171
`11.1.6 Synchronization Overheads . . . . . . . . . . . . . . . . . . . . . . . . . . 172
`11.1.7 Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
`11.1.8 Other Issues and Optimizations . . . . . . . . . . . . . . . . . . . . . . . 175
`11.2 In Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
`
`Chapter 12. Tasty Additions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
`12.1 Introduction to SmartCards. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
`12.1.1 The SmartCard File System . . . . . . . . . . . . . . . . . . . . . . . . . . 180
`12.1.2 The OpenCard Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
`12.2 Sample SmartCard Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
`12.3 Accessing a Serial Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
`12.3.1 X-10 Architecture and Protocols . . . . . . . . . . . . . . . . . . . . . . . 188
`12.3.2 Programming the X-10 CP290 Home Control Interface . . . . . . 188
`12.3.3 The Java Espresso Machine Example . . . . . . . . . . . . . . . . . . 189
`
`Chapter 13. NC Deployment: Using IBM Network Stations . . . . . . . . 193
`13.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
`13.2 Software Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
`13.3 The Initialization Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
`13.3.1 The Power-On Self-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
`13.3.2 Locating the Boot Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
`13.3.3 Loading the Kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
`13.3.4 Initiate the Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
`13.4 IBM Network Station Set Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
`13.4.1 The NVRAM Setup Utility Panel . . . . . . . . . . . . . . . . . . . . . . . 199
`13.4.2 Set Network Parameters Panel . . . . . . . . . . . . . . . . . . . . . . . . 201
`13.4.3 Set the Boot Parameters Panel. . . . . . . . . . . . . . . . . . . . . . . . 204
`13.5 The IBM Network Station Manager . . . . . . . . . . . . . . . . . . . . . . . . . 206
`13.6 The Configuration Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
`13.6.1 The Configuration File Syntax. . . . . . . . . . . . . . . . . . . . . . . . . 209
`13.6.2 System-Level Configuration Files . . . . . . . . . . . . . . . . . . . . . . 209
`13.6.3 Workstation-Level Configuration Files. . . . . . . . . . . . . . . . . . . 210
`13.6.4 User-Level Configuration Files . . . . . . . . . . . . . . . . . . . . . . . . 211
`13.7 The Startup Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
`13.8 The IBM Network Station User Services . . . . . . . . . . . . . . . . . . . . . 213
`13.9 The IBM Network Station Message Log . . . . . . . . . . . . . . . . . . . . . 215
`13.9.1 Local Session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
`13.9.2 Allowing Remote Telnet Session . . . . . . . . . . . . . . . . . . . . . . 216
`13.9.3 Remote Telnet Session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
`13.10 Accessing the Serial Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
`
`vi
`
`Java Thin-Client Programming for a Network Computing Environment
`
`LGE Exhibit-1015/Page 8 of 346
`
`
`
`13.10.1 Allowing Access to the Serial Port . . . . . . . . . . . . . . . . . . . . 218
`13.10.2 Initializing the Serial Port . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
`13.11 Coming Soon: IBM Software Release 3 . . . . . . . . . . . . . . . . . . . . 221
`13.11.1 The Setup Utility Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
`13.11.2 IBM Network Station Manager . . . . . . . . . . . . . . . . . . . . . . . 221
`13.11.3 Java Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
`
`Chapter 14. Java in the IBM Network Station . . . . . . . . . . . . . . . . . . . 223
`14.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
`14.2 Java Virtual Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
`14.3 Memory Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
`14.4 Java Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
`14.5 Running Java Programs in the IBM Network Station. . . . . . . . . . . . 225
`14.5.1 Adding a Java Applet Item to the Taskbar. . . . . . . . . . . . . . . . 225
`14.5.2 Adding a Java Application Item to the Taskbar . . . . . . . . . . . . 227
`14.5.3 Autostarting Java Programs and Applets . . . . . . . . . . . . . . . . 229
`14.6 Troubleshooting Java Execution Problems . . . . . . . . . . . . . . . . . . . 230
`14.7 The eSuite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
`14.7.1 The WorkPlace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
`14.7.2 The Administrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
`14.7.3 Adding a Java Applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
`
`Appendix A. Brief HTML Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
`A.1 Top Level Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
`A.2 Character Formatting Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
`A.3 Block Formatting Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
`A.4 Table Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
`A.5 List Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
`A.6 Forms Tags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
`A.7 Miscellaneous Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
`
`Appendix B. Java Development: Using VisualAge for Java . . . . . . . . 251
`B.1 The VisualAge Family . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
`B.2 VisualAge for Java Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
`B.3 Integrated Development Environment (IDE) . . . . . . . . . . . . . . . . . . . . . . 254
`B.3.1 Java Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
`B.3.2 Navigating within VisualAge for Java . . . . . . . . . . . . . . . . . . . . . . . 258
`B.3.3 How It Fits Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
`B.3.4 Team Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
`B.3.5 Applet Viewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
`B.3.6 Editor/Debugger/SmartGuides . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
`B.3.7 Proxy Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
`B.4 Enterprise Access Builder (EAB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
`B.4.1 Data Access Builder (DAX). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
`
`
`
`vii
`
`LGE Exhibit-1015/Page 9 of 346
`
`
`
`B.5 System Requirements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
`B.6 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
`
`Appendix C. Special Notices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
`
`Appendix D. Related Publications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
`D.1 International Technical Support Organization Publications . . . . . . . . . . 309
`D.2 Redbooks on CD-ROMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
`D.3 Other Publications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
`
`How To Get ITSO Redbooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
`How IBM Employees Can Get ITSO Redbooks . . . . . . . . . . . . . . . . . . . . . . . 311
`How Customers Can Get ITSO Redbooks. . . . . . . . . . . . . . . . . . . . . . . . . . . 312
`IBM Redbook Order Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
`
`List of Abbreviations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
`
`Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
`
`ITSO Redbook Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
`
`viii
`
`Java Thin-Client Programming for a Network Computing Environment
`
`LGE Exhibit-1015/Page 10 of 346
`
`
`
`Figures
`
`1. The Jalapeño Team . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi
`2. The Lunar Medical Center . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
`3. Network Computer Abstract Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . 17
`4. The IBM Network Station . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
`5.
`IBM Network Station Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
`6. Server Clusters Can Cater for Performance Issues in a Transparent Way 25
`7. A Failover Server Can Transparently Take Over from a Crashed Server . 25
`8. Recovering from a Network Partition is a Difficult Task . . . . . . . . . . . . . . . 26
`9. Distributed Administration is Vital for Large Distributed Systems . . . . . . . 27
`10. The Single Computer Image Concept . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
`11. A Client Able to Deal with Multiple Versions . . . . . . . . . . . . . . . . . . . . . . . 28
`12. The Decomposition of a System into Distributed Cooperating Services . . 29
`13. Clients and Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
`14. Isolating the Business Logic into Middleware . . . . . . . . . . . . . . . . . . . . . . 31
`15. Using Wrappering to Incorporate Legacy Systems . . . . . . . . . . . . . . . . . . 32
`16. Check-In Application Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
`17. General Architecture of Browsers and Web Servers . . . . . . . . . . . . . . . . . 38
`18. Growing Architecture of Browsers and Web Servers. . . . . . . . . . . . . . . . . 39
`19. Simple HTML Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
`20. HTML Form Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
`21. Simple JavaScript Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
`22. Intermediate JavaScript Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
`23. JavaScript Instance Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
`24. Intermediate JavaScript Example Using New Window . . . . . . . . . . . . . . . 54
`25. Java’s Architecture-Neutrality Arises from the Use of Bytecodes . . . . . . . 56
`26. The Simple Applet Running Inside a World Wide Web Browser . . . . . . . . 62
`27. Servers Create Multiple Threads to Handle Multiple Clients . . . . . . . . . . . 63
`28. JDBC Provides a Uniform Interface to Proprietary Databases . . . . . . . . . 67
`29. Construction of the Initial Log-In Screen . . . . . . . . . . . . . . . . . . . . . . . . . . 69
`30. Constructing the Main Patient Record View/Edit Screen. . . . . . . . . . . . . . 70
`31. Construction of the “Select History Entry” Screen . . . . . . . . . . . . . . . . . . . 71
`32. Construction of the “History Entry” Screen . . . . . . . . . . . . . . . . . . . . . . . . 72
`33. Constructing Two Error/Warning Screens . . . . . . . . . . . . . . . . . . . . . . . . . 73
`34. The Hospital Check-In Applet Running in the Applet Viewer. . . . . . . . . . . 74
`35. Check-In Applet Displayed in VisualAge’s Visual Composer. . . . . . . . . . . 75
`36. Simple Object Model for the LMC’s Systems. . . . . . . . . . . . . . . . . . . . . . . 81
`37. Profile for a Two-Tier Browser-Based Solution . . . . . . . . . . . . . . . . . . . . . 83
`38. Profiles for the Three-Tier Browser-Based Solutions. . . . . . . . . . . . . . . . . 83
`39. Profiles Describing the Application-Based Alternatives . . . . . . . . . . . . . . . 84
`40. Alternate Profiles Considered by the LMC’s . . . . . . . . . . . . . . . . . . . . . . . 84
`
`© Copyright IBM Corp. 1998
`
`ix
`
`LGE Exhibit-1015/Page 11 of 346
`
`
`
`41. Representation for a Communicator Class and Mechanism . . . . . . . . . . . 86
`42. Alternative Plug-Ins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
`43. Factored, Nondistributed Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
`44. HTML, JavaScript POST Data to the Servlet through the Browser . . . . . . 89
`45. HTML, JavaScript POST Data to the Servlet through the Browser . . . . . . 90
`46. Applet POST Data through a Direct URL Connection to the Servlet . . . . . 91
`47. Applet Using the Facilities Provided by JDBC . . . . . . . . . . . . . . . . . . . . . . 92
`48. Application Using the Facilities Provided by JDBC . . . . . . . . . . . . . . . . . . 93
`49. Application Using Sockets to Communicate with its Server. . . . . . . . . . . . 94
`50. Application Using Java RMI to Communicate with its Server . . . . . . . . . . 95
`51. Simple Browser > Web Server > CGI Program > DBMS . . . . . . . . . . . . . 106
`52. Typical Web Server Servlet Administration Interface. . . . . . . . . . . . . . . . 113
`53. Output from the Servlet Shown in Client Browser . . . . . . . . . . . . . . . . . . 118
`54. JDBC General Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
`55. JDBC Driver Categories. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
`56. DB2’s JDBC "Applet Driver" Architecture. . . . . . . . . . . . . . . . . . . . . . . . . 125
`57. DB2’s JDBC Application Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
`58. Simple Object Model for the LMC’s Systems. . . . . . . . . . . . . . . . . . . . . . 129
`59. Sequence of Interactions in Client/Server Socket Communication . . . . . 139
`60. Overview of the Socket Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
`61. An RMI-Based System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
`62. Remote Method Invocation Architecture . . . . . . . . . . . . . . . . . . . . . . . . . 148
`63. RMI Implementation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
`64. RMI Programmer Viewpoint. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
`65. Using Callbacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
`66. Generating Stub and Skeleton with IBM VisualAge for Java . . . . . . . . . . 156
`67. Starting the RMI Registry within IBM VisualAge for Java . . . . . . . . . . . . 157
`68. Packaging an Applet for Efficient Download . . . . . . . . . . . . . . . . . . . . . . 166
`69. Physical Properties of an ISO 7816 SmartCard. . . . . . . . . . . . . . . . . . . . 177
`70. Internal Structure of a SmartCard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
`71. Example of an ISO 7816-4 SmartCard File System . . . . . . . . . . . . . . . . 180
`72. Architecture of the OpenCard Framework . . . . . . . . . . . . . . . . . . . . . . . . 181
`73. Class Hierarchy for the CardTerminal Component . . . . . . . . . . . . . . . . . 182
`74. Class Hierarchy for the Main CardAgent Objects . . . . . . . . . . . . . . . . . . 182
`75. Class Hierarchy of the CardIO Component . . . . . . . . . . . . . . . . . . . . . . . 184
`76. External Device Controlled by NC Using Serial Port and X-10 . . . . . . . . 188
`77. Initialization Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
`78. IBM Network Station Boot Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
`79. IBM Network Station, Loading the Kernel . . . . . . . . . . . . . . . . . . . . . . . . 198
`80. IBM Network Station Password Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
`81. IBM Network Station Administrator Setup Utility Panel . . . . . . . . . . . . . . 201
`82. Set Network Parameters Panel Using with Network Option Selected . . . 202
`83. Set Network Parameter Panel with NVRAM Option Selected . . . . . . . . . 203
`
`x
`
`Java Thin-Client Programming for a Network Computing Environment
`
`LGE Exhibit-1015/Page 12 of 346
`
`
`
`84. Set Boot Parameters Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
`85. The Network Station Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
`86. The Console Window. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
`87. Setup Parameters Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
`88. The Terminal Chooser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
`89. Local Terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
`90. Allowing Access to the Message Log . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
`91. Windows NT Telnet Session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
`92. Allowing Serial Access. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
`93. Configuring the Serial Port. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
`94. Java Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
`95. Adding a Java Applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
`96. Multiple Applets Running on the IBM Network Station . . . . . . . . . . . . . . 227
`97. Adding a Java Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
`98. The Lunar Login Application in the Network Station . . . . . . . . . . . . . . . . 229
`99. Java Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
`100.Java Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
`101.Java Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
`102.The eSuite WorkPlace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
`103.The eSuite WorkPlace Administrator . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
`104.Task and Categories in the eSuite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
`105.Adding a Category. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
`106.Adding a Java Applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
`107.Adding a Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
`108.Associating a Task with a Group. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
`109.The Scribble Applet in the WorkPlace. . . . . . . . . . . . . . . . . . . . . . . . . . . 240
`110.The Scribble Applet Runni