The book opens with an overview of Java's stream capabilities. (The author defends Java's lack of support for console input/output (I/O) since today's applications use graphical user interfaces anyway.) He shows how to open, read, and write local files in Java applications. His file viewer example presents data in a variety of formats. (This example is improved several times until it winds up supporting different international character sets by the end of the book.)
Next the author covers network programming using URL and network streams, including sockets. Sections on filters show how classes can filter out characters within streams. The tour moves forward to cover data streams, which permit streaming of Java's primitive data types. Details on how to communicate within Java programs using pipes follow. In a notable chapter, the author thoroughly explicates Java's support for encryption, including hashing, the Data Encryption Standard (DES) algorithm, and ciphers.
The last portion of the book explains object serialization, which allows Java objects to save and restore their state, plus it includes sections on Java's support for data compression (and ZIP files) and multilingual Unicode character sets. (Java is prepared to handle virtually any of the world's languages with its reader and writer classes.) Finally, the author shows how you can format output in Java using its support for width and numeric precision APIs.
In all, Elliotte makes a good case that Java streams are a flexible and powerful part of the language, and certainly not a limitation. --Richard Dragan
--このテキストは、絶版本またはこのタイトルには設定されていない版型に関連付けられています。
登録情報
|
After jumping around and reading about a third of it, I was already recommending to some of the newer Java programmers around me to pick it up and get a solid understanding of proper I/O use in Java. I very much recommend this as any Java programmer's second book. Right after learning the language itself, this book should be read followed closely by other O'Reilly titles such as Java Threads and Java Network Programming. Those three books will give an in-depth understanding of the core Java API's for any new Java programmer, and will be of use to you no matter how you are using Java.
Even after three years as a Java developer, I have learned from this book. The author often presents algorithms in clear steps and follows those clear steps with a correct implementation. Because of this clear presentation, the chapter on compression left me for the first time with an understanding of not only how to use the java.util.zip.* classes but how they work. What I learned there in one reading is immediately applicable to what I am working on now. The sections on Files is full of tips on how to use them in a cross platform fashion. Every new Java programmer needs to read that chapter before their applications actually get used.
I was also impressed that several I/O classes missing in the standard library which I have only recently developed myself were presented as well. The StreamCopier and the TeeOutputStream are extremely useful classes that should be incorporated in some fashion into the base API. I wish I had them a long time ago. (A hint: you can also use the TeeOutputStream as a 'Traitor' to peek at your I/O while your program is running and without affecting its execution.) If I have any complaint about this book, it is that there are not more of these types of utilities presented for use by the advanced Java programmer. However, I haven't finished the book yet, so they may still be hidden there.
This book clearly explains the theory and practice of Java I/O, and all the various features. It's the second most valuable Java book I own (Java in a Nutshell being the most frequently used). The book has led me to trying out facilities (such as compression and number formatting) that I otherwise shunned because of poor descriptions.
|