Contents

Introductionxi
     What this Book isn'txi
     What this Book is

xi

About the Authors

xiii

Chapter 1     History

1

Chapter 2     Where We Are, How We Got There
     The Monolith: One Mainframe, Many Dumb Terminals7
     The Island: Personal Computers12
     The Bridge: Local-Area Networks13
     The World: Wide-Area Networks19
     The Internet: The Global WAN19
     Processor + Operating System = Platform22
     The Need for a New Paradigm

24

Chapter 3     Where Do We Go From Here?25
     Breaking Tasks into Smaller Parts: Object-Oriented Programming27
     Structured Programming28
     Object Orientation and Encapsulation29
     Object Orientation and Inheritance33
     Realizing the Potential of Object Orientation36
     A Common Vocabulary: Portability and Platform Independence38
     Communicating Tasks: Distributed Program Code43
     Back to the Future: HTML = Block mode '9543
     Client-Server and the Internet44
     Load Balancing: Applets and their Role
     in Distributed Processing

47

Chapter 4     Applets, A Key Component Of The Web
     Extending Browser Functionality49
     The First Applets51
     Second-Generation Applets54
     Applets of the Future57
     General Utilities57
     Smart Agents57
     Internet Commerce58
     FaxMail, a Case Study

59

Chapter 5     Beyond Applets63
     The Java Face-Off64
     Developer Support67
     Is Anyone Actually Using Java?68
     What Types of Applications are Suited to Java?70
     Enterprise Network Connectivity71
     Applying Multiple Features72
     Friends and Foes

73

Chapter 6     Performance
     The Virtual Machine75
     Background76
     Relative Performance77
     Garbage Collection80
     Multiple Threads of Control81
     Performance Options82
     Compiling Just In Time82
     The Java Chip84
     The Right Tool for the Job

86

Chapter 7     Productivity
     Measuring Productivity87
     Java Productivity Features88
     Gains from Object Orientation88
     Gains From Platform Independence89
     Gains from Interpretation90
     Java vs. C/C++91
     OO Purity91
     No Preprocessor93
     No Operator Overloading94
     No goto Statement95
     No Global Variables95
     No Explicit Pointers96
     No Structures, No Unions97
     Unicode Character Support97
     Boolean Type98
     First-Class Arrays99
     Multiple Inheritance99
     Tools101
     Class Libraries101
     Rapid Application Development102
     Changes to the SDLC103
     Making the Transition

104

Chapter 8     Security
     The Risks108
     Trojan Horses108
     Viruses108
     Snoopers and Sniffers109
     Java's Built-in Safeguards109
     Language Safety110
     Protection Provided by the Virtual Machine110
     System-Access Restrictions on Applets112
     Can Applets Still Be Useful?113
     Design Considerations

114

Chapter 9     Protection of Intellectual Property Rights
     Sun's Rights117
     Developers' Rights118
     Copyright119
     Protecting Applets by Legal Means120
     Protecting Applets by Technical Means121
     Capitalizing on Applet Redistribution

122

Chapter 10     Third-Party Support125
     In the Starring Role of Creator126
     Supporting Players128
     IBM130
     Microsoft131
     Netscape131
     Oracle132
     ...and a Cast of Thousands

132

Chapter 11     The Future of Java137
     Technologies that Complement138
     Software Tools138
     Hardware Devices139
     Object Technology140
     Technologies that Compete141
     The Crystal Ball

144

Glossary

145

Index153