| help | account  


Java Cookbook, 2nd Edition
View Larger Image
Ian F. Darwit
O'Reilly Media, Paperback, 2nd edition, Published June 2004, 829 pages, ISBN 0596007019
List Price: $49.95
Our Price: $31.50
You Save: $18.45 (37% Off)


FREE Shipping on Orders over $40!*
Availability: Out-Of-Stock

Be the First to Write a Review and tell the world about this title!

People who purchase this book frequently purchase:

Books on similar topics, in best-seller order:Books from the same publisher, in best-seller order:

You have a choice: you can wade your way through lengthy Java tutorials and figure things out by trial and error, or you can pick up Java Cookbook, 2nd Edition and get to the heart of what you need to know when you need to know it.

With the completely revised and thoroughly updated Java Cookbook, 2nd Edition, Java developers like you will learn by example, try out new features, and use sample code to understand how new additions to the language and platform work--and how to put them to work for you.

This comprehensive collection of problems, solutions, and practical examples will satisfy Java developers at all levels of expertise. Whether you're new to Java programming and need something to bridge the gap between theory-laden reference manuals and real-world programs or you're a seasoned Java programmer looking for a new perspective or a different problem-solving context, this book will help you make the most of your Java knowledge.

Packed with hundreds of tried-and-true Java recipes covering all of the major APIs from the 1.4 version of Java, this book also offers significant first-look recipes for the most important features of the new 1.5 version, which is in beta release. You get practical solutions to everyday problems, and each is followed by a detailed, ultimately useful explanation of how and why the technology works.

Java Cookbook, 2nd Edition includes code segments covering many specialized APIs--like those for working with Struts, Ant and other new popular Open Source tools. It also includes expanded Mac OS X Panther coverage and serves as a great launching point for Java developers who want to get started in areas outside of their specialization.

In this major revision, you'll find succinct pieces of code that can be easily incorporated into other programs. Focusing on what's useful or tricky--or what's useful and tricky--Java Cookbook, 2nd Edition is the most practical Java programming book on the market.

Table of Contents

Preface

1. Getting Started: Compiling, Running, and Debugging

      1.1 Compiling and Running Java: JDK
      1.2 Editing and Compiling with a Color-Highlighting Editor
      1.3 Compiling, Running, and Testing with an IDE
      1.4 Using CLASSPATH Effectively
      1.5 Using the com.darwinsys API Classes from This Book
      1.6 Compiling the Source Code Examples from This Book
      1.7 Automating Compilation with Ant
      1.8 Running Applets
      1.9 Dealing with Deprecation Warnings
      1.10 Conditional Debugging Without #ifdef
      1.11 Debugging Printouts
      1.12 Maintaining Program Correctness with Assertions (JDK 1.4)
      1.13 Debugging with JDB
      1.14 Unit Testing: Avoid the Need for Debuggers
      1.15 Getting Readable Tracebacks
      1.16 Finding More Java Source Code
      1.17 Program: Debug

2. Interacting with the Environment

      2.1 Getting Environment Variables
      2.2 System Properties
      2.3 Writing JDK Release-Dependent Code
      2.4 Writing Operating System-Dependent Code
      2.5 Using Extensions or Other Packaged APIs
      2.6 Parsing Command-Line Arguments

3. Strings and Things

      3.1 Taking Strings Apart with Substrings
      3.2 Taking Strings Apart with StringTokenizer
      3.3 Putting Strings Together with +, StringBuilder (JDK 1.5), and StringBuffer
      3.4 Processing a String One Character at a Time
      3.5 Aligning Strings
      3.6 Converting Between Unicode Characters and Strings
      3.7 Reversing a String by Word or by Character
      3.8 Expanding and Compressing Tabs
      3.9 Controlling Case
      3.10 Indenting Text Documents
      3.11 Entering Nonprintable Characters
      3.12 Trimming Blanks from the End of a String
      3.13 Parsing Comma-Separated Data
      3.14 Program: A Simple Text Formatter
      3.15 Program: Soundex Name Comparisons

4. Pattern Matching with Regular Expressions

      4.1 Regular Expression Syntax
      4.2 Using regexes in Java: Test for a Pattern
      4.3 Finding the Matching Text
      4.4 Replacing the Matched Text
      4.5 Printing All Occurrences of a Pattern
      4.6 Printing Lines Containing a Pattern
      4.7 Controlling Case in Regular Expressions
      4.8 Matching "Accented" or Composite Characters
      4.9 Matching Newlines in Text
      4.10 Program: Apache Logoff Parsing
      4.11 Program: Data Mining
      4.12 Program: Full Grep

5. Numbers

      5.1 Checking Whether a String Is a Valid Number
      5.2 Storing a Larger Number in a Smaller Number
      5.3 Converting Numbers to Objects and Vice Versa
      5.4 Taking a Fraction of an Integer Without Using Floating Point
      5.5 Ensuring the Accuracy of Floating-Point Numbers
      5.6 Comparing Floating-Point Numbers
      5.7 Rounding Floating-Point Numbers
      5.8 Formatting Numbers
      5.9 Converting Between Binary, Octal, Decimal, and Hexadecimal
      5.10 Operating on a Series of Integers
      5.11 Working with Roman Numerals
      5.12 Formatting with Correct Plurals
      5.13 Generating Random Numbers
      5.14 Generating Better Random Numbers
      5.15 Calculating Trigonometric Functions
      5.16 Taking Logarithms
      5.17 Multiplying Matrixes
      5.18 Using Complex Numbers
      5.19 Handling Very Large Numbers
      5.20 Program: TempConverter
      5.21 Program: Number Palindromes

6. Dates and Times

      6.1 Finding Today's Date
      6.2 Printing Date/Time in a Given Format
      6.3 Representing Dates in Other Epochs
      6.4 Converting YMDHMS to a Calendar or Epoch Seconds
      6.5 Parsing Strings into Dates
      6.6 Converting Epoch Seconds to DMYHMS
      6.7 Adding to or Subtracting from a Date or Calendar
      6.8 Difference Between Two Dates
      6.9 Comparing Dates
      6.10 Day of Week/Month/Year or Week Number
      6.11 Creating a Calendar Page
      6.12 Measuring Elapsed Time
      6.13 Sleeping for a While
      6.14 Program: Reminder Service

7. Structuring Data with Java

      7.1 Using Arrays for Data Structuring
      7.2 Resizing an Array
      7.3 Like an Array, but More Dynamic
      7.4 Using Iterators for Data-Independent Access
      7.5 Structuring Data in a Linked List
      7.6 Mapping with Hashtable and HashMap
      7.7 Storing Strings in Properties and Preferences
      7.8 Sorting a Collection
      7.9 Avoiding the Urge to Sort
      7.10 Eschewing Duplication
      7.11 Finding an Object in a Collection
      7.12 Converting a Collection to an Array
      7.13 Rolling Your Own Iterator
      7.14 Stack
      7.15 Multidimensional Structures
      7.16 Finally, Collections
      7.17 Program: Timing Comparisons

8. Data Structuring with Generics, foreach, and Enumerations (JDK 1.5)

      8.1 Using Generic Collections
      8.2 Using "foreach" Loops
      8.3 Avoid Casting by Using Generics
      8.4 Let Java Convert with AutoBoxing and AutoUnboxing
      8.5 Using Typesafe Enumerations
      8.6 Program: MediaInvoicer

9. Object-Oriented Techniques

      9.1 Printing Objects: Formatting with toString( )
      9.2 Overriding the Equals Method
      9.3 Overriding the hashCode Method
      9.4 The Clone Method
      9.5 The Finalize Method
      9.6 Using Inner Classes
      9.7 Providing Callbacks via Interfaces
      9.8 Polymorphism/Abstract Methods
      9.9 Passing Values
      9.10 Enforcing the Singleton Pattern
      9.11 Roll Your Own Exceptions
      9.12 Program: Plotter

10. Input and Output

      10.1 Reading Standard Input
      10.2 Writing Standard Output
      10.3 Printing with the 1.5 Formatter
      10.4 Scanning a File with StreamTokenizer
      10.5 Scanning Input with the 1.5 Scanner Class
      10.6 Opening a File by Name
      10.7 Copying a File
      10.8 Reading a File into a String
      10.9 Reassigning the Standard Streams
      10.10 Duplicating a Stream as It Is Written
      10.11 Reading/Writing a Different Character Set
      10.12 Those Pesky End-of-Line Characters
      10.13 Beware Platform-Dependent File Code
      10.14 Reading "Continued" Lines
      10.15 Binary Data
      10.16 Seeking
      10.17 Writing Data Streams from C
      10.18 Saving and Restoring Java Objects
      10.19 Preventing ClassCastExceptions with SerialVersionUID
      10.20 Reading and Writing JAR or Zip Archives
      10.21 Reading and Writing Compressed Files
      10.22 Program: Text to PostScript

11. Directory and Filesystem Operations

      11.1 Getting File Information
      11.2 Creating a File
      11.3 Renaming a File
      11.4 Deleting a File
      11.5 Creating a Transient File
      11.6 Changing File Attributes
      11.7 Listing a Directory
      11.8 Getting the Directory Roots
      11.9 Creating New Directories
      11.10 Program: Find

12. Programming External Devices: Serial and Parallel Ports

      12.1 Choosing a Port
      12.2 Opening a Serial Port
      12.3 Opening a Parallel Port
      12.4 Resolving Port Conflicts
      12.5 Reading and Writing: Lock-Step
      12.6 Reading and Writing: Event-Driven
      12.7 Reading and Writing: Threads
      12.8 Program: Penman Plotter

13. Graphics and Sound

      13.1 Painting with a Graphics Object
      13.2 Testing Graphical Components
      13.3 Drawing Text
      13.4 Drawing Centered Text in a Component
      13.5 Drawing a Drop Shadow
      13.6 Drawing Text with 2D
      13.7 Drawing Text with an Application Font
      13.8 Drawing an Image
      13.9 Playing a Sound File
      13.10 Playing a Video Clip
      13.11 Printing in Java
      13.12 Program: PlotterAWT
      13.13 Program: Grapher

14. Graphical User Interfaces

      14.1 Displaying GUI Components
      14.2 Designing a Window Layout
      14.3 A Tabbed View of Life
      14.4 Action Handling: Making Buttons Work
      14.5 Action Handling Using Anonymous Inner Classes
      14.6 Terminating a Program with "Window Close"
      14.7 Dialogs: When Later Just Won't Do
      14.8 Catching and Formatting GUI Exceptions
      14.9 Getting Program Output into a Window
      14.10 Choosing a Value with JSpinner (JDK 1.4)
      14.11 Choosing a File with JFileChooser
      14.12 Choosing a Color
      14.13 Formatting JComponents with HTML
      14.14 Centering a Main Window
      14.15 Changing a Swing Program's Look and Feel
      14.16 Enhancing Your GUI for Mac OS X
      14.17 Program: Custom Font Chooser
      14.18 Program: Custom Layout Manager

15. Internationalization and Localization

      15.1 Creating a Button with I18N Resources
      15.2 Listing Available Locales
      15.3 Creating a Menu with I18N Resources
      15.4 Writing Internationalization Convenience Routines
      15.5 Creating a Dialog with I18N Resources
      15.6 Creating a Resource Bundle
      15.7 JILTing Your Code
      15.8 Using a Particular Locale
      15.9 Setting the Default Locale
      15.10 Formatting Messages
      15.11 Program: MenuIntl
      15.12 Program: BusCard

16. Network Clients

      16.1 Contacting a Server
      16.2 Finding and Reporting Network Addresses
      16.3 Handling Network Errors
      16.4 Reading and Writing Textual Data
      16.5 Reading and Writing Binary Data
      16.6 Reading and Writing Serialized Data
      16.7 UDP Datagrams
      16.8 Program: TFTP UDP Client
      16.9 Program: Telnet Client
      16.10 Program: Chat Client

17. Server-Side Java: Sockets

      17.1 Opening a Server for Business
      17.2 Returning a Response (String or Binary)
      17.3 Returning Object Information
      17.4 Handling Multiple Clients
      17.5 Serving the HTTP Protocol
      17.6 Securing a Web Server with JSSE
      17.7 Network Logging
      17.8 Network Logging with log4j
      17.9 Network Logging with JDK 1.4
      17.10 Finding Network Interfaces (JDK 1.4)
      17.11 Program: A Java Chat Server

18. Network Clients II: Applets and Web Clients

      18.1 Embedding Java in a Web Page
      18.2 Applet Techniques
      18.3 Contacting a Server on the Applet Host
      18.4 Making an Applet Show a Document
      18.5 Making an Applet Run JavaScript
      18.6 Making an Applet Run a CGI Script
      18.7 Reading the Contents of a URL
      18.8 URI, URL, or URN?
      18.9 Extracting HTML from a URL
      18.10 Extracting URLs from a File
      18.11 Converting a Filename to a URL
      18.12 Program: MkIndex
      18.13 Program: LinkChecker

19. Java and Electronic Mail

      19.1 Sending Email: Browser Version
      19.2 Sending Email: For Real
      19.3 Mail-Enabling a Server Program
      19.4 Sending MIME Mail
      19.5 Providing Mail Settings
      19.6 Sending Mail Without Using JavaMail
      19.7 Reading Email
      19.8 Program: MailReaderBean
      19.9 Program: MailClient

20. Database Access

      20.1 Easy Database Access with JDO
      20.2 Text-File Databases
      20.3 DBM Databases
      20.4 JDBC Setup and Connection
      20.5 Connecting to a JDBC Database
      20.6 Sending a JDBC Query and Getting Results
      20.7 Using JDBC Parameterized Statements
      20.8 Using Stored Procedures with JDBC
      20.9 Changing Data Using a ResultSet
      20.10 Storing Results in a Rowset
      20.11 Changing Data Using SQL
      20.12 Finding JDBC Metadata
      20.13 Program: SQLRunner

21. XML

      21.1 Generating XML from Objects
      21.2 Transforming XML with XSLT
      21.3 Parsing XML with SAX
      21.4 Parsing XML with DOM
      21.5 Verifying Structure with a DTD
      21.6 Generating Your Own XML with DOM
      21.7 Program: xml2mif

22. Distributed Java: RMI

      22.1 Defining the RMI Contract
      22.2 Creating an RMI Client
      22.3 Creating an RMI Server
      22.4 Deploying RMI Across a Network
      22.5 Program: RMI Callbacks
      22.6 Program: NetWatch

23. Packages and Packaging

      23.1 Creating a Package
      23.2 Documenting Classes with Javadoc
      23.3 Beyond JavaDoc: Annotations/Metadata (JDK 1.5) and XDoclet
      23.4 Archiving with jar
      23.5 Running an Applet from a JAR
      23.6 Running an Applet with a JDK
      23.7 Running a Main Program from a JAR
      23.8 Preparing a Class as a JavaBean
      23.9 Pickling Your Bean into a JAR
      23.10 Packaging a Servlet into a WAR File
      23.11 "Write Once, Install Anywhere"
      23.12 "Write Once, Install on Mac OS X"
      23.13 Java Web Start
      23.14 Signing Your JAR File

24. Threaded Java

      24.1 Running Code in a Different Thread
      24.2 Displaying a Moving Image with Animation
      24.3 Stopping a Thread
      24.4 Rendezvous and Timeouts
      24.5 Synchronizing Threads with synchronized
      24.6 Synchronizing Threads with wait( ) and notifyAll( )
      24.7 Background Saving in an Editor
      24.8 Program: Threaded Network Server
      24.9 Simplifying Threading Using the Concurrency Utilities (JDK 1.5)

25. Introspection, or "A Class Named Class"

      25.1 Getting a Class Descriptor
      25.2 Finding and Using Methods and Fields
      25.3 Loading and Instantiating a Class Dynamically
      25.4 Constructing a Class from Scratch
      25.5 Performance Timing
      25.6 Printing Class Information
      25.7 Program: CrossRef
      25.8 Program: AppletViewer

26. Using Java with Other Languages

      26.1 Running a Program
      26.2 Running a Program and Capturing Its Output
      26.3 Mixing Java and Scripts with BSF
      26.4 Marrying Java and Perl
      26.5 Blending in Native Code (C/C++)
      26.6 Calling Java from Native Code
      26.7 Program: DBM

Afterword

Index

About the Author

Ian F. Darwin has worked in the computer industry for three decades: with Unix since 1980, Java since 1995, and OpenBSD since 1998. He wrote the freeware file(1) command used on Linux and BSD and is the author of Checking C Programs with Lint, Java Cookbook, and over seventy articles and several courses (both university and commercial) on C and Unix. In addition to programming and consulting, Ian teaches Unix, C, and Java for Learning Tree International, one of the world's largest technical training companies. He runs OpenBSD on most of his computers, and he runs a mirror of The Unix History Society archive.




Forgot your password?
FAQs
Shipping Options
Returns
Your Orders
Your Account