Preface | p. xiii |
Revolutions Leading to Java | p. 1 |
The Promise of a Networked Computer | p. 2 |
Computing Before the Web | p. 3 |
Impersonal Computing | p. 3 |
Personal Computing | p. 4 |
Computing in the Home | p. 5 |
Evolution of Personal Computing to LANs | p. 6 |
Distributed Client/Server Computing | p. 6 |
Limitations of the First Wave of Client/Server Applications | p. 9 |
UNIX, TCP/IP, and the Birth of the Internet | p. 11 |
Protocols for the World Network | p. 12 |
Internet Before the Web | p. 13 |
The World Wide Web | p. 15 |
The Web's Birth | p. 16 |
Moving Past Publishing - Web Client/Server | p. 18 |
Limitations of the Web Model | p. 20 |
Control of the Screen, Keyboard, and Mouse | p. 21 |
Pull Technology | p. 21 |
Security | p. 22 |
Transaction State | p. 22 |
Connectionless Connections | p. 23 |
Very Thin Clients | p. 24 |
Reasons to Brew Java | p. 24 |
Java, the Next Step in Network Computing | p. 25 |
Java Orientation | p. 27 |
Language Evolution for Modern Computing | p. 27 |
Java Features | p. 29 |
Basic Java Components | p. 33 |
The Java Development Kit (JDK) | p. 34 |
Downloading and Installing the JDK | p. 35 |
JDK Installation on Windows | p. 35 |
JDK Installation on UNIX | p. 37 |
Adjust Environmental Variables | p. 38 |
Network Installation | p. 39 |
JDK Compatibility | p. 39 |
What's in the JDK | p. 40 |
javac, The Java Compiler | p. 40 |
The Java Interpreter, Java | p. 42 |
The Java Runtime Environment, jre | p. 43 |
The Appletviewer | p. 44 |
The Java Debugger, jdb | p. 44 |
The Java Virtual Machine | p. 46 |
Other Ways To Run Java | p. 46 |
JDK Summary | p. 49 |
Java Language Basics | p. 51 |
Java Program Organization | p. 52 |
Java Applications | p. 52 |
Java Applets | p. 55 |
Statements | p. 57 |
Block Statements | p. 58 |
Control Statements | p. 58 |
The if-else Statement | p. 59 |
The switch Statement | p. 60 |
The for Statement | p. 61 |
The while Statement | p. 62 |
The do-while Statement | p. 62 |
try and catch | p. 63 |
Data Types | p. 63 |
Primitive Data Types | p. 64 |
Type Conversions | p. 66 |
Reference Data Types | p. 67 |
Java Memory Management | p. 69 |
Expressions | p. 73 |
Operators | p. 73 |
Arithmetic Operators | p. 74 |
Autoincrement and Autodecrement | p. 75 |
Bitwise Operators | p. 75 |
Assignment | p. 76 |
Relational Operators | p. 77 |
Boolean Operators | p. 77 |
Object-Oriented Programming in Java | p. 79 |
What Is Object-Oriented Programming? | p. 80 |
A Universe of Classes and Objects | p. 81 |
Classes and Objects in Programming | p. 82 |
Defining a Class | p. 82 |
Creating an Object (Using the new Keyword) | p. 83 |
Variables and Methods | p. 84 |
Instance and Class Variables | p. 84 |
Instance and Class Methods | p. 85 |
Accessing Variable and Methods | p. 85 |
A Simulation Example | p. 86 |
The Four Vowels of Object-Oriented Concepts--a, e, i, and o | p. 87 |
Abstraction | p. 87 |
Encapsulation | p. 88 |
Inheritance | p. 89 |
Overriding | p. 90 |
An Object-Oriented First Step | p. 91 |
A Simulation Program | p. 91 |
Single versus Multiple Inheritance | p. 96 |
Interfaces | p. 97 |
Packages | p. 98 |
The Java 1.1 API and Event-Handling Model | p. 101 |
The Java Toolbox | p. 102 |
java.lang | p. 102 |
Wrapper Classes | p. 102 |
java.lang.String and StringBuffer | p. 104 |
java.lang.Thread | p. 105 |
java.util | p. 106 |
java.awt | p. 107 |
Graphical Components | p. 109 |
java.io | p. 110 |
The File Class | p. 111 |
Random Access Files | p. 112 |
Buffered I/O | p. 112 |
The Java 1.1 Event-Handling Model | p. 114 |
Java's Previous Event-Handling Model | p. 115 |
The Java 1.1 Delegation Model | p. 116 |
Sources of Events | p. 117 |
Event Listeners | p. 117 |
Event Types | p. 118 |
Delegation Model Example | p. 119 |
Caveats Regarding the 1.1 Java Developer's Kit | p. 122 |
The Java Process Model | p. 123 |
Multiprogramming Definitions | p. 125 |
Threads: The Fabric of Java | p. 125 |
Extending the Thread Class | p. 126 |
Implementing the Runnable Interface | p. 127 |
Safe Parallelism | p. 129 |
Thread Priorities and the JVM Scheduler | p. 132 |
Threadgroups | p. 133 |
The ThreadBaker | p. 133 |
The LazyThread Class | p. 134 |
The addPressed() Method | p. 135 |
The deletePressed() Method | p. 136 |
Threads That Share Resources | p. 138 |
ThreadBaker2 - The Shared Resource Version | p. 139 |
Java Integrated Development Environments | p. 143 |
IDE Advantages and Disadvantages | p. 144 |
Symantec Cafe and Visual Cafe | p. 144 |
Creating a Java Applet with Cafe | p. 145 |
Debugging with Symantec Cafe | p. 150 |
Microsoft Visual J++ 1.0 | p. 152 |
Creating a Java Program with Visual J++ | p. 152 |
Debugging with Visual J++ | p. 157 |
IBM's VisualAge for Java | p. 158 |
Sun's Java Workshop | p. 159 |
Java for Net-Centric Programming | p. 165 |
Working with URLs | p. 166 |
Absolute and Relative URLs | p. 166 |
URLs and Exception Handling | p. 167 |
Parsing URLs | p. 168 |
URL Connection | p. 168 |
Reading and Writing URLs | p. 170 |
Sockets | p. 172 |
Implementing a TCP Client Program | p. 173 |
Implementing a TCP Server Program | p. 175 |
Supporting Multiple Clients | p. 177 |
Datagrams - Implementing a Client Program | p. 178 |
Implementing a Datagram Server Program | p. 179 |
Servlets | p. 180 |
Servlets Compared to Other Technologies | p. 181 |
Java Server-Side Framework and Architecture | p. 182 |
Servlet Security and Access Rights | p. 183 |
Servlet Applications | p. 183 |
A Test Drive with Java | p. 189 |
A Learning Exercise - A Simple Drawing Applet | p. 190 |
Intraday Stock Charting | p. 193 |
Summary of Techniques in IChart | p. 201 |
Java Telephone Directory Client | p. 202 |
Java Database Connectivity--JDBC | p. 209 |
JDBC Overview | p. 210 |
JDBC and ODBC | p. 210 |
JDBC URLs | p. 210 |
API Overview | p. 212 |
The DriverManager Class | p. 212 |
Driver Types | p. 217 |
Connection Class | p. 217 |
Statement Class | p. 218 |
Statement Object | p. 219 |
PreparedStatement Object | p. 225 |
CallableStatement Object | p. 227 |
ResultSet Object | p. 231 |
SQLException Object | p. 234 |
JSQL | p. 235 |
Beyond Basic Java | p. 239 |
Java Generic Library (JGL) | p. 240 |
Containers | p. 240 |
JGL Algorithms | p. 244 |
JGL Function Objects | p. 245 |
JGL Iterators | p. 247 |
NetRexx | p. 251 |
NetRexx Merges Rexx and Java | p. 252 |
NetRexx Type and Name System | p. 253 |
Using NetRexx | p. 254 |
Other NetRexx Features | p. 257 |
Decimal Arithmetic for Commercial Applications | p. 260 |
Advanced Java Client/Server | p. 265 |
Marimba's Castanet System | p. 266 |
Castanet System | p. 266 |
Castanet Outlook | p. 268 |
Java Beans | p. 268 |
JavaBeans and CORBA | p. 269 |
JavaBeans and ActiveX | p. 270 |
Component Object Model (COM) | p. 271 |
Comparing JavaBeans and ActiveX | p. 272 |
Choosing between JavaBeans and ActiveX | p. 275 |
Java Remote Method Invocation (RMI) | p. 275 |
RMI Architecture | p. 276 |
RMI Implementation | p. 277 |
Java Platform for the Enterprise | p. 282 |
Java Enterprise System Management Services | p. 283 |
Java Enterprise Application Services | p. 283 |
Enterprise JavaBeans | p. 284 |
Java Security | p. 287 |
The World Became More Difficult | p. 288 |
Applets That Go Bump in the Night and Other Risks | p. 288 |
Types of Threats | p. 289 |
Applet Security | p. 289 |
Java Security Implementation | p. 291 |
Java Language Safety | p. 292 |
The Class Loader | p. 293 |
The Byte-Code Verifier | p. 294 |
The Security Manager | p. 296 |
Breaches in Java Security | p. 297 |
Forged E-mail | p. 299 |
Denial of Service and Antagonism | p. 300 |
Managing Applet Security | p. 300 |
Safe Java at Home | p. 300 |
Eating Out - Java Obtained over the Internet | p. 301 |
Stay on Top of Security News | p. 302 |
Theft of Intellectual Property | p. 302 |
Cryptographic Security for Electronic Commerce | p. 304 |
Crytography Concepts | p. 306 |
Java Security API | p. 308 |
What the Security API Provides | p. 309 |
Signed Applets Using JAR Files | p. 309 |
The Network Computer--a Java Machine | p. 317 |
Reducing the Cost of Computing | p. 319 |
Sun's JavaStation and Netra J | p. 320 |
JavaOS | p. 321 |
Other Network Computers | p. 323 |
IBM's Network Station | p. 323 |
Oracle's NCI Subsidiary | p. 323 |
Microsoft's Response to the NC | p. 323 |
What Is an NC After All? | p. 324 |
What's Old Is New Again | p. 324 |
Internet Appliances | p. 325 |
Interpreted Execution Performance | p. 325 |
Sun's picoJava I | p. 326 |
How Fast, Did You Ask? | p. 327 |
Obstacles to the NC | p. 328 |
Conclusions: Java for Enterprise Computing | p. 331 |
Java Limitations | p. 332 |
Java and Requirements for IS Providers | p. 335 |
Index | p. 339 |
Table of Contents provided by Syndetics. All Rights Reserved. |