Book description
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
- Java Cookbook, 2nd Edition
- A Note Regarding Supplemental Files
- Preface
-
1. Getting Started: Compiling, Running, and Debugging
- Introduction
- 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
- 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
-
3. Strings and Things
- Introduction
- 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
- Introduction
- 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 Logfile Parsing
- 4.11. Program: Data Mining
- 4.12. Program: Full Grep
-
5. Numbers
- Introduction
- 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 Matrices
- 5.18. Using Complex Numbers
- 5.19. Handling Very Large Numbers
- 5.20. Program: TempConverter
- 5.21. Program: Number Palindromes
-
6. Dates and Times
- Introduction
- 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 Dateor 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
- Introduction
- 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)
-
9. Object-Oriented Techniques
- Introduction
- 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
- Introduction
- 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
- 12. Programming External Devices: Serial and Parallel Ports
-
13. Graphics and Sound
- Introduction
- 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
- Introduction
- 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
- 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
- Introduction
- 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. Extracting Strings from 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
- Introduction
- 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
- Introduction
- 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 SSL and JSSE
- 17.7. Network Logging
- 17.8. Network Logging with log4j
- 17.9. Network Logging with JDK 1.4
- 17.10. Finding Network Interfaces
- 17.11. Program: A Java Chat Server
-
18. Network Clients II: Applets and Web Clients
- Introduction
- 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
-
20. Database Access
- Introduction
- 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 Prepared 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
- 22. Distributed Java: RMI
-
23. Packages and Packaging
- Introduction
- 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 Modern 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
- Introduction
- 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 the synchronized Keyword
- 24.6. Simplifying Synchronization with 1.5 Locks
- 24.7. Synchronizing Threads with wait( ) and notifyAll( )
- 24.8. Simplifying Producer-Consumer with the 1.5 Queue Interface
- 24.9. Background Saving in an Editor
- 24.10. Program: Threaded Network Server
- 24.11. Simplifying Servers Using the Concurrency Utilities (JDK 1.5)
- 25. Introspection, or “A Class Named Class”
- 26. Using Java with Other Languages
- Afterword
- Index
- About the Author
- Colophon
- Copyright
Product information
- Title: Java Cookbook, 2nd Edition
- Author(s):
- Release date: June 2004
- Publisher(s): O'Reilly Media, Inc.
- ISBN: 9780596007010
You might also like
book
Designing Large Language Model Applications
Transformer-based language models are powerful tools for solving a variety of language tasks and represent a …
book
Deciphering Data Architectures
Data fabric, data lakehouse, and data mesh have recently appeared as viable alternatives to the modern …
book
CORS in Action: Creating and consuming cross-origin APIs
Summary CORS in Action introduces Cross-Origin Resource Sharing (CORS) from both the server and the client …
book
Generative Deep Learning, 2nd Edition
Generative AI is the hottest topic in tech. This practical book teaches machine learning engineers and …