This Book (9E) 
What's New 
Previous Book (8E) 
Global Changes 
 This edition provides many new examples and exercises to
motivate and stimulate student interest in programming.
 Updated to JDK 7 (string expression in the switch
statement in Chapter 3, multicatch in Chapter 14, generic
type inference in Chapter 21, forkjoin framework for
parallel processing in Chapter 31.) All the JDK 7 new features are
presented in separate sections. Instructors can choose to
skip it.
 Key Point is provided at the beginning of each section
to summarize the important concepts and materials for the
section.
 Check Point is provided at the end of the section
to check student's understanding of the material covered in
the section.
 Links to Test questions are provided at the end of
chapter to test student's understanding for the whole
chapter.
 Links to authordeveloped animations to demonstrate how
algorithms (such as linear search, binary search, selection
sort, binary search tree, heap, hashing, etc.) work.
 The numeric wrapper classes, BigInteger, and BigDecimal
are now introduced in Chapter 10 to enable students to write
code using these classes early.
 Use the @Override annotation throughout the book consistently to improve program quality.
 Simple use of generics is introduced along with
ArrayList in Chapter 11 and with Comparable in Chapter 15
while the complex detail on generics is still kept in
Chapter 21.
 Chapter 22 is split into two chapters (Chapter 22 and Chapter 23) to make rooms for incorporating three new case studies to demonstrate effective use of data structures.
 Chapter 24 is expanded to introduce algorithmic techniques: dynamic programming, divideandconquer, backtracking, and greedy algorithm with new examples to design efficient algorithms.
 Visual animations are created to show how data structures and algorithms work.
 Chapters 3550 are bonus Web chapters that cover a wide
variety of advanced topics on Java 2D, JavaBeans, MVC, threads, database
programming, web (Servlets, JSP, JSF), web service,
networking, RMI, JUnit, etc.


Chapter 1 Introduction to Computers,
Programs, and Java 
 The introduction to computers and programming languages
has been updated.
 Move the section on syntax errors, runtime errors, and logic errors from Chapter 2 to Chapter 1 to
introduce programming errors early on.
 Move programming style and doc here from Chapter 2 to Chapter 1 to foster good programming style early.
 New exercises 1.81.15.

Chapter 1 
Chapter 2 Elementary Programming 
 New introductory problem to motivate students.
 Add software development process section to introduce analysis and design as well coding.
 Expand the coverage on debugging.
 Move the section on syntax errors, runtime errors, and logic errors to Chapter 1 to
introduce programming errors early on.

Chapter 2 
Chapter 3 Selections 
 New Chinese Zodiac example for switch statements.
 New figure to show multiplealternative if statements
 Use string expression in the switch statement (JDK 7).
 Exercises 3.323.35.
 Added debugging in this chapter.

Chapter 3 
Chapter 4 Loops 
 New AdditionQuiz example to terminate the loop until a correct answer is
entered.
 Use a new and more effective example for introducing the break statement.

Chapter 4 
Chapter 5 Methods 
 New Exercises 5.37–3.39.
 Revised several diagrams.

Chapter 5 
Chapter 6 SingleDimensional Arrays 
 New Exercises 6.35–6.37.
 Revised several diagrams.

Chapter 6 
Chapter 7 Multidimensional Arrays 
 Two math exercises are replaced by new game exercises.
 New exercises 7.35–7.37.

Chapter 7 
Chapter 8 Objects and Classes 

Chapter 8 
Chapter 9 Strings 
 Moved Text I/O to Chapter 13 along with exception
handling.
 The Calculator example has been revised to take the
expression as a string to avoid the * argument in the
command line.

Chapter 9 
Chapter 10 Thinking in Objects 
 The sections on wrapper classes, BigInteger and
BigDecimal are moved here from Chapter 15 so students can
write code using these classes early.
 New exercises 10.14–10.15.

Chapter 10 
Chapter 11 Inheritance and Polymorphism 
 Use the @Override annotation to improve program quality.
 Simple use of generics is introduced along with
ArrayList while the complex detail on generics is still kept
in Chapter 21.
 JDK 7 generic type inference.
 New case study using ArrayList.
 New Exercises 11.9–11.10.

Chapter 11 
Chapter 12 GUI Basics 
 Move JButton, JCheckBox, JRadioButton, JLabel, and
JTextField here from Chapter 17 so these popular GUI
components can be used in the examples and exercises early.
 Introduce customizing mouse cursor as a Swing common
feature.
 New exercises 12.11–12.14.

Chapter 12 
Chapter 13 Graphics 
 GUI programming is an excellent example for demonstrating inheritance and
polymorphism and for stimulating student interests in programming. That is why
we moved this chapter earlier in this new edition. Instructors can still delay
it later.
 New Exercises 15.2715.32.

Chapter 15 
Chapter 14 Exception
Handling and Text I/O 
 Move I/O here from Chapter 9.
 Read a file from the Web.
 New exercises involving processing large datasets from the Web.
 JDK 7 multicatch.

Chapter 13 
Chapter 15 Abstract Classes and Interfaces 
 Remove the section on eventdriven programming. It will be covered in
Chapter 16.
 Simple use of generics is introduced along with ArrayList in Chapter 11 and
with Comparable in Chapter 15 while the complex detail on generics is still kept
in Chapter 21.
 New example using Comparable.
 The sections on wrapper classes, BigInteger and BigDecimal are moved to
Chapter 11.
 New exercises 15.21–12.26.

Chapter 14 
Chapter 16 EventDriven Programming 
 Replace WindowEvent with new examples.
 New bouncing ball example.
 New Exercises 16.3716.40.

Chapter 16 
Chapter 17 GUI Components 

This chapter is designed for selfstudy. This chapter serves as a reference for creating GUI. Since no new concepts are introduced, students can read this chapter on their own.

Chapter 17 
Chapter 18 Applets and Multimedia 
 New exercises 18.3518.35.

Chapter 18 
Chapter 19 Binary I/O 
 Moved the AddressBook case study to the companion Website.
 New exercises 19.1619.21.

Chapter 19 
Chapter 20 Recursion 
 Revise several programs to make them easier to comprehend by new programmers.
 Remove the recursive Eight Queens problem. A more intuitive nonrecursive
Eight Queens solution was given in Chapter 23.
 New game Exercises 20.31–20.39.

Chapter 20 
Chapter 21 Generics 

Chapter 21 
Chapter 22 Lists, Stacks,
Queues, and Priority Queues 
 New introductory problem.
 New example on using comparators.
 New case study on displaying multiple bouncing balls.
 New case study on evaluating expressions.
 Revised several new class diagrams.

Chapter 22 
Chapter 23 Sets and Maps 
 New introductory problem.
 New example for comparing performance of sets and lists.
 New case study for counting the number of keywords in a
file using a set.
 Revised several new class diagrams.

Chapter 22 
Chapter 24 Developing Efficient
Algorithms 
 Introduce algorithmic approaches: dynamic programming,
divideandconquer, backtracking.
 New backtracking Eight Queens example.
 New convex hall problems with two algorithms.
 New exercises 24.21–20.29.

Chapter 23 
Chapter 25 Sorting 
 Improved merge sort implementation.
 New Exercises 24.15–24.19.

Chapter 24 
Chapter 26 Implementing Lists, Stacks, Queues,
and Priority Queues 
 Use the standard Stack class (rather than the GenericStack class provided by
the book) for the EvaluateExpression example.
 The EvaluateExpression example has been revised to take the expression as a
string to avoid the * argument in the command line.
 New exercises 25.18, 28.19.

Chapter 25 
Chapter 27 Binary Search Trees 
 Simplified the TreeView class.
 Use new analogy for tree traversals.
 Use the standard PriorityQueue class (rather than the
heap class provided by the book) for the HuffmanTree
example.

Chapter 26 
Chapter 28 Hashing 
 This was a Web chapter in the 8E and now moved here
because it is covered in many DS courses.

Chapter 48 
Chapter 29 AVL Trees 
 This was a Web chapter in the 8E and now moved here
because it is covered in many DS courses. The coverage on
Splay Trees in the 8E is now a supplement in the companion
Website.

Chapter 45 
Chapter 30 Graph Applications 
 New introductory problem.
 Modified the Graph interface by adding the methods
clear(), addVertex, and addEdge.
 New case study: the connected circles problem.
 Move the Knight's tour problem to supplement.
 New exercises 28.21–28.25.

Chapter 27 
Chapter 31 Weighted Graph Applications 
 Weighted graph visualization is provided.
 Implement addVertex and addEdge for weighted graphs.
 New exercises 29.17–29.18.

Chapter 28 
Chapter 32 Multithreading and
Parallel Programming 
 Chapter title has changed to highlight parallel
programming.
 New JDK 7 Fork/Join Framework is introduced to develop
parallel programs.
 New exercises 32.17–32.25.

Chapter 29 
Chapter 33 Networking 

Chapter 30 
Chapter 34 Java Database Programming 

Chapter 37 
Chapter 35 Internationalization 

Chapter 31 
Chapter 36 JavaBeans and Bean Events 

Chapter 32 
Chapter 37 Containers, Layout Managers,
and Borders 

Chapter 33 
Chapter 38 Menus, Toolbars, and
Dialogs 

Chapter 34 
Chapter 39 MVC and Swing Models 

Chapter 35 
Chapter 40 JTable and JTree 

Chapter 36 
Chapter 41 Advanced Java Database
Programming 

Chapter 38 
Chapter 42 Servlets 

Chapter 39 
Chapter 43 JavaServer Pages 

Chapter 40 
Chapter 44 JSF 2.0 
 Brand new chapter to introduce standard JSF 2.0.
 The old chapter on Visual Web Development (using
Woodstock framework) in the 8E is now a
supplement in the companion Website.


Chapter 45 Web Services 

Chapter 42 
Chapter 46 Remote Method Invocation 

Chapter 43 
Chapter 47 24 Trees and BTrees 

Chapter 46 
Chapter 48 RedBlack Trees 

Chapter 47 
Chapter 49 Java 2D 

Chapter 44 
Chapter 50 Testing Using JUnit 

