Correlation to the Previous Edition

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, multi-catch in Chapter 14, generic type inference in Chapter 21, fork-join 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 author-developed 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, divide-and-conquer, backtracking, and greedy algorithm with new examples to design efficient algorithms.
  • Visual animations are created to show how data structures and algorithms work.
  • Chapters 35-50 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.8-1.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 multiple-alternative if statements
  • Use string expression in the switch statement (JDK 7).
  • Exercises 3.32-3.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 Single-Dimensional 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
  • New exercises 8.13–8.14.
 
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.27-15.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 multi-catch.
Chapter 13
Chapter 15 Abstract Classes and Interfaces
  • Remove the section on event-driven 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 Event-Driven Programming
  • Replace WindowEvent with new examples.
  • New bouncing ball example.
  • New Exercises 16.37-16.40.
Chapter 16
Chapter 17 GUI Components
  • This chapter is designed for self-study. 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.35-18.35.
Chapter 18
Chapter 19 Binary I/O
  • Moved the AddressBook case study to the companion Website.
  • New exercises 19.16-19.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 non-recursive Eight Queens solution was given in Chapter 23.
  • New game Exercises 20.31–20.39.
Chapter 20
Chapter 21 Generics
  • No major revision.
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, divide-and-conquer, 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
  • New exercises.
Chapter 30
Chapter 34 Java Database Programming
  • New exercises.
Chapter 37
Chapter 35 Internationalization
  • No major revisions.
Chapter 31
Chapter 36 JavaBeans and Bean Events
  • No major revisions.
Chapter 32
Chapter 37 Containers, Layout Managers, and Borders
  • No major revisions.
Chapter 33
Chapter 38 Menus, Toolbars, and Dialogs
  • No major revisions.
Chapter 34
Chapter 39 MVC and Swing Models
  • No major revisions.
Chapter 35
Chapter 40 JTable and JTree
  • New exercises.
Chapter 36
Chapter 41 Advanced Java Database Programming
  • New exercises.
Chapter 38
Chapter 42 Servlets
  • New exercises.
Chapter 39
Chapter 43 JavaServer Pages
  • New exercises.
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
  • New exercises.
Chapter 42
Chapter 46 Remote Method Invocation
  • No major revisions.
Chapter 43
Chapter 47 2-4 Trees and B-Trees
  • No major revisions.
Chapter 46
Chapter 48 Red-Black Trees
  • No major revisions.
Chapter 47
Chapter 49 Java 2D
  • No major revisions.
Chapter 44
Chapter 50 Testing Using JUnit
  • Brand new chapter.