Home   FAQs   New Arrivals   Specials   Pricing & Shipping   Location   Corporate Services   Why Choose Bookware?  
 Search:   
Call our store: 9955 5567 (from within Sydney) or 1800 734 567 (from outside Sydney)
 View Cart   Check Out   
 
Browse by Subject
 TAFE Accounting
 TAFE I.T./Computing
 TAFE - Other
I.T
 .NET
 Windows 8
 Adobe CS6
 Cisco
 CCNA 2012
 CCNP 2012
 Java
 VB
 ASP
 Web Design
 E-Commerce
 Project Management
 ITIL
 Macintosh
 Mobile Devices
 Linux
 Windows Server 2012
 SQL Server 2012
 SAP
Certification
 MCITP
 MCTS
Economics and Business
 Accounting
 Business Information Systems
 Economics
 Finance
 Management
 Marketing
 TAX
 Human Resources
Academic
 Law
 Nursing
 Medical
 Psychology
 Engineering

Java for Programmers, Second Edition

by: Paul J. Deitel, Harvey M. Deitel

Notify me when in stock

On-line Price: $45.76 (includes GST)

Paperback package 1168

13%Off Retail Price

You save: $7.00

Usually ships within 4 - 5 business days.

Retail Price: $52.76

Publisher: PRENTICE HALL,09.08.11

Category: JAVA Level: B/I/A

ISBN: 0132821540
ISBN13: 9780132821544

Add to Shopping Cart

Written in the Deitels' proven style, this comprehensive guide to learning Java for working programmers now covers the brand new Java SE 7


  A comprehensive tutorial to the Java programming language, for programmers who are new to Java


  Uses the Deitels' signature 'live code' style, where every programming concept is explored in the context of a complete working program, not a code fragment


  Covers everything from the basics to advanced topics such as multithreading, as well as all the new features in Java SE 7



New To This Edition

top


- Strings in switch statements, the try-with-resources statement for managing AutoClosable objects, multi-catch for defining a single exception handler to replace multiple exception handlers that perform the same task, the NIO filesystem APIs and inferring the types of generic objects from the variable they're assigned to by using the <> notation. We also overview the new concurrency API features.

- Java SE 7 filesystem APIs. The authors provide an alternate online version of Chapter 17,

Files, Streams and Object Serialization, that's reimplemented with the new filesystem APIs from Java SE 7.

-

Java SE 7's AutoClosable versions of Connection, Statement and ResultSet. With the source code for Chapter 25, Accessing Databases with JDBC, we provide a version of the chapter's first example that's implemented using Java SE 7's AutoClosable versions of Connection, Statement and ResultSet. AutoClosable objects reduce the likelihood of resource leaks when you use them with Java SE 7's try-with-resources statement, which automatically closes the AutoClosable objects allocated in the parentheses following the try keyword.

- JDBC 4. Chapter 25, Accessing Databases with JDBC, covers JDBC 4 and uses the Java DB/Apache Derby and MySQL database management systems. The chapter features an OO case study on developing a database-driven address book that demonstrates prepared statements and JDBC 4's automatic driver discovery.

- Java Server Faces (JSF) 2.0. Chapters 26-27 have been updated to introduce JavaServer Faces (JSF) 2.0 technology, which greatly simplifies building JSF web applications. Chapter 26 includes examples on building web application GUIs, validating forms and session tracking. Chapter 27 discusses data-driven and Ajaxenabled JSF applications. The chapter features a database-driven multitier web address book that allows users to add and view contacts. This Ajax-enabled application gives the reader a nice sense of Web 2.0 software development.

- Web services. Chapter 28, Web Services, demonstrates creating and consuming SOAP- and REST-based web services. Case studies include developing blackjack and airline reservation web services.

- Java Web Start and the Java Network Launch Protocol (JNLP). The authors introduce Java Web Start and JNLP, which enable applets and applications to be launched via a web browser. Users can install locally for later execution. Programs can also request the user's permission to access local system resources such as files-enabling you to develop more robust applets and applications that execute safely using Java's sandbox security model, which applies to downloaded code.



Features and Benefits

top


Written in the Deitels' proven style, this comprehensive guide to learning Java now covers the brand new Java SE 7


  A comprehensive tutorial to the Java programming language, for programmers who are new to Java


  Uses the Deitels' signature 'live code' style, where every programming concept is explored in the context of a complete working program, not a code fragment


  Covers everything from the basics to advanced topics such as multithreading, as well as all the new features in Java SE 7



Table of Contents

top


Preface


              xxi

Before You Begin


            xxix

Chapter 1: Introduction


            1

1.1

Introduction


  2

1.2

Introduction to Object Technology


2

1.3

Open Source Software


5

1.4

Java and a Typical Java Development Environment


7

1.5

Test-Driving a Java Application


11

1.6

Web 2.0: Going Social


15

1.7

Software Technologies

18

1.8

Keeping Up to Date with Information Technologies


20

1.9

Wrap-Up


21

Chapter 2: Introduction to Java Applications


            22

2.1

Introduction


23

2.2

Your First Program in Java: Printing a Line of Text

23

2.3

Modifying Your First Java Program

27

2.4

Displaying Text with printf


29

2.5

Another Application: Adding Integers

30

2.6

Arithmetic


34

2.7

Decision Making: Equality and Relational Operators

35

2.8

Wrap-Up

38

Chapter 3: Introduction to Classes, Objects, Methods and Strings


            39

3.1

Introduction

40

3.2

Declaring a Class with a Method and Instantiating an Object of a Class 40

3.3

Declaring a Method with a Parameter 44

3.4

Instance Variables, set Methods and get Methods 47

3.5

Primitive Types vs. Reference Types 52

3.6

Initializing Objects with Constructors 53

3.7

Floating-Point Numbers and Type double

56

3.8

Wrap-Up 60

Chapter 4: Control Statements: Part 1


            61

4.1


Introduction


62

4.2


Control Structures


62

4.3


if Single-Selection Statement


64

4.4


if...else Double-Selection Statement


65

4.5


while Repetition Statement


68

4.6


Counter-Controlled Repetition


70

4.7


Sentinel-Controlled Repetition


73

4.8


Nested Control Statements


78

4.9


Compound Assignment Operators


81

4.10 Increment and Decrement Operators


82

4.11 Primitive Types 85 4.12 Wrap-Up


85

Chapter 5: Control Statements: Part 2


            86

5.1

Introduction


  87

5.2

Essentials of Counter-Controlled Repetition


87

5.3

for Repetition Statement


89

5.4

Examples Using the for Statement


92

5.5

do...while Repetition Statement


96

5.6

switch Multiple-Selection Statement


98

5.7

break and continue Statements


  105

5.8

Logical Operators


107

5.9

Wrap-Up


113

Chapter 6: Methods: A Deeper Look


              114

6.1


Introduction


115

6.2


Program Modules in Java

115

6.3


static Methods, static Fields and Class Math

115

6.4


Declaring Methods with Multiple Parameters

118

6.5


Notes on Declaring and Using Methods

121

6.6


Argument Promotion and Casting

122

6.7


Java API Packages

123

6.8


Case Study: Random-Number Generation

125

6.9


Case Study: A Game of Chance; Introducing Enumerations

130

6.10 Scope of Declarations


134

6.11 Method Overloading


137

6.12 Wrap-Up


139

Chapter 7: Arrays and ArrayLists


            140

7.1


Introduction


  141

7.2


Arrays


141

7.3


Declaring and Creating Arrays


143

7.4


Examples Using Arrays


  144

7.5


Case Study: Card Shuffling and Dealing Simulation


153

7.6


Enhanced for Statement


157

7.7


Passing Arrays to Methods


159

7.8


Case Study: Class GradeBook Using an Array to Store Grades


162

7.9


Multidimensional Arrays


167

7.10 Case Study: Class GradeBook Using a Two-Dimensional Array


171

7.11 Variable-Length Argument Lists


177

7.12 Using Command-Line Arguments


  178

7.13 Class Arrays


180

7.14 Introduction to Collections and Class ArrayList


  183

7.15 Wrap-Up


186

Chapter 8: Classes and Objects: A Deeper Look


            187

8.1


Introduction


188

8.2


Time Class Case Study


188

8.3


Controlling Access to Members


192

8.4


Referring to the Current Object's Members with the this Reference


193

8.5


Time Class Case Study: Overloaded Constructors


195

8.6


Default and No-Argument Constructors


201

8.7


Notes on Set and Get Methods


  202

8.8


Composition


  203

8.9


Enumerations


  206

8.10 Garbage Collection and Method finalize


  209

8.11 static Class Members


210

8.12 static Import


213

8.13 final Instance Variables


214

8.14 Time Class Case Study: Creating Packages


215

8.15 Package Access


221

8.16 Wrap-Up


222

Chapter 9: Object-Oriented Programming: Inheritance


            224

9.1

Introduction


  225

9.2

Superclasses and Subclasses


226

9.3

protected Members


228

9.4

Relationship between Superclasses and Subclasses


228

9.5

Constructors in Subclasses


250

9.6

Software Engineering with Inheritance


251

9.7

Class Object


252

9.8

Wrap-Up


253

Chapter 10: Object-Oriented Programming: Polymorphism


            254

10.1


Introduction


255

10.2


Polymorphism Examples


257

10.3


Demonstrating Polymorphic Behavior


  258

10.4


Abstract Classes and Methods


260

10.5


Case Study: Payroll System Using Polymorphism


262

10.6


final Methods and Classes


278

10.7


Case Study: Creating and Using Interfaces


279

10.8


Wrap-Up


290

Chapter 11: Exception Handling: A Deeper Look


              292

11.1


Introduction


293

11.2


Example: Divide by Zero without Exception Handling


293

11.3


Example: Handling ArithmeticExceptions and InputMismatchExceptions


296

11.4


When to Use Exception Handling


301

11.5


Java Exception Hierarchy


301

11.6


finally Block


304

11.7


Stack Unwinding and Obtaining Information from an Exception Object


308

11.8


Chained Exceptions


311

11.9


Declaring New Exception Types


313

11.10 Preconditions and Postconditions


314

11.11 Assertions


  315

11.12 (New in Java SE 7) Multi-catch: Handling Multiple Exceptions in One catch


316

11.13 (New in Java SE 7) try-with-Resources: Automatic Resource Deallocation


316

11.14 Wrap-Up


317

Chapter 12: ATM Case Study, Part 1: Object-Oriented Design with the UML


            318

12.1

Case Study Introduction


319

12.2

Examining the Requirements Document


319

12.3

Identifying the Classes in a Requirements Document


327

12.4

Identifying Class Attributes


333

12.5

Identifying Objects' States and Activities


338

12.6

Identifying Class Operations


342

12.7

Indicating Collaboration Among Objects


348

12.8

Wrap-Up


355

Chapter 13: ATM Case Study Part 2: Implementing an Object-Oriented Design


            359

13.1

Introduction 3

60

13.2

Starting to Program the Classes of the ATM System


360

13.3

Incorporating Inheritance and Polymorphism into the ATM System


365

13.4

ATM Case Study Implementation


371

13.5

Wrap-Up


395

Chapter 14: GUI Components: Part 1


              398

14.1


Introduction


399

14.2


Java's New Nimbus Look-and-Feel


400

14.3


Simple GUI-Based Input/Output with JOptionPane


401

14.4


Overview of Swing Components


404

14.5


Displaying Text and Images in a Window


406

14.6


Text Fields and an Introduction to Event Handling with Nested Classes


410

14.7


Common GUI Event Types and Listener Interfaces


416

14.8


How Event Handling Works


418

14.9


JButton


420

14.10 Buttons That Maintain State


423

14.11 JComboBox; Using an Anonymous Inner Class for Event Handling


429

14.12 JList 433

14.13 Multiple-Selection Lists


435

14.14 Mouse Event Handling


438

14.15 Adapter Classes


443

14.16 JPanel Subclass for Drawing with the Mouse


446

14.17 Key Event Handling


450

14.18 Introduction to Layout Managers


453

14.19 Using Panels to Manage More Complex Layouts


462

14.20 JTextArea

464

14.21 Wrap-Up


467

Chapter 15: Graphics and Java 2D


            468

15.1

Introduction


469

15.2

Graphics Contexts and Graphics Objects


471

15.3

Color Control


472

15.4

Manipulating Fonts


479

15.5

Drawing Lines, Rectangles and Ovals


484

15.6

Drawing Arcs


488

15.7

Drawing Polygons and Polylines


491

15.8

Java 2D API


494

15.9

Wrap-Up


501

Chapter 16: Strings, Characters and Regular Expressions


            502

16.1

Introduction


503

16.2

Fundamentals of Characters and Strings

503

16.3

Class String

504

16.4

Class StringBuilder


  517

16.5

Class Character


524

16.6

Tokenizing Strings


529

16.7

Regular Expressions, Class Pattern and Class Matcher


530

16.8

Wrap-Up


538

Chapter 17: Files, Streams and Object Serialization


            539

17.1

Introduction


540

17.2

Files and Streams


540

17.3

Class File


542

17.4

Sequential-Access Text Files


546

17.5

Object Serialization


562
17.6

Additional java.io Classes


571

17.7

Opening Files with JFileChooser


574

17.8

Wrap-Up


577

Chapter 18: Generic Collections


            578

18.1


Introduction


579

18.2


Collections Overview


579

18.3


Type-Wrapper Classes for Primitive Types


580

18.4


Autoboxing and Auto-Unboxing


581

18.5


Interface Collection and Class Collections


581

18.6


Lists


582

18.7


Collections Methods

590

18.8


Stack Class of Package java.util 602

18.9


Class PriorityQueue and Interface Queue

604

18.10 Sets


605

18.11 Maps


608

18.12


Properties Class 612

18.13 Synchronized Collections


615

18.14 Unmodifiable Collections


615

18.15 Abstract Implementations


616

18.16 Wrap-Up


616

Chapter 19: Generic Classes and Methods


            618

19.1


Introduction


619

19.2


Motivation for Generic Methods


619

19.3


Generic Methods: Implementation and Compile-Time Translation


622

19.4


Additional Compile-Time Translation Issues: Methods That Use a Type Parameter as the Return Type


625

19.5


Overloading Generic Methods


628

19.6


Generic Classes

628

19.7


Raw Types

636

19.8


Wildcards in Methods That Accept Type Parameters


640

19.9


Generics and Inheritance: Notes


644

19.10 Wrap-Up


645

Chapter 20: Applets and Java Web Start


            646

20.1

Introduction

647

20.2

Sample Applets Provided with the JDK

648

20.3

Simple Java Applet: Drawing a String

652

20.4

Applet Life-Cycle Methods


656

20.5

Initialization with Method init

657

20.6

Sandbox Security Model


659

20.7

Java Web Start and the Java Network Launch Protocol (JNLP)


661

20.8

Wrap-Up


666

Chapter 21: Multimedia: Applets and Applications


            667

21.1

Introduction


668

21.2

Loading, Displaying and Scaling Images

669

21.3

Animating a Series of Images


675

21.4

Image Maps


682

21.5

Loading and Playing Audio Clips


685

21.6

Playing Video and Other Media with Java Media Framework


688

21.7

Wrap-Up


692

21.8

Web Resources


692

Chapter 22: GUI Components: Part 2


            694

22.1


Introduction


695

22.2


JSlider


695

22.3


Windows: Additional Notes


699

22.4


Using Menus with Frames


700

22.5


JPopupMenu


708

22.6


Pluggable Look-and-Feel


711

22.7


JDesktopPane and JInternalFrame


716

22.8


JTabbedPane


720

22.9


Layout Managers: BoxLayout and GridBagLayout


722

22.10 Wrap-Up

734

Chapter 23: Multithreading


            735

23.1


Introduction


736

23.2


Thread States: Life Cycle of a Thread


738

23.3


Creating and Executing Threads with Executor Framework


741

23.4


Thread Synchronization


744

23.5


Producer/Consumer Relationship without Synchronization


752

23.6


Producer/Consumer Relationship: ArrayBlockingQueue


760

23.7


Producer/Consumer Relationship with Synchronization


763

23.8


Producer/Consumer Relationship: Bounded Buffers


769

23.9


Producer/Consumer Relationship: The Lock and Condition Interfaces


776

23.10 Concurrent Collections Overview


783

23.11 Multithreading with GUI


785

23.12 Interfaces Callable and Future


799

23.13 Java SE 7: Fork/Join Framework

799

23.14 Wrap-Up


800

Chapter 24: Networking


            801

24.1


Introduction


802

24.2


Manipulating URLs


803

24.3


Reading a File on a Web Server


808

24.4


Establishing a Simple Server Using Stream Sockets


811

24.5


Establishing a Simple Client Using Stream Sockets

813

24.6


Client/Server Interaction with Stream Socket Connections


813

24.7


Datagrams: Connectionless Client/Server Interaction


825

24.8


Client/Server Tic-Tac-Toe Using a Multithreaded Server


833

24.9


[Web Bonus] Case Study: DeitelMessenger


848

24.10 Wrap-Up


848

Chapter 25: Accessing Databases with JDBC


              849

25.1


Introduction


850

25.2


Relational Databases


851

25.3


Relational Database Overview: The books Database


852

25.4


SQL


855

25.5


Instructions for Installing MySQL and MySQL Connector/J


864

25.6


Instructions for Setting Up a MySQL User Account


865

25.7


Creating Database books in MySQL


866

25.8


Manipulating Databases with JDBC


867

25.9


RowSet Interface


885

25.10 Java DB/Apache Derby


887

25.11 PreparedStatements


889

25.12 Stored Procedures


904

25.13 Transaction Processing


905

25.14 Wrap-Up


905

25.15 Web Resources


906

Chapter 26: JavaServer Faces Web Apps: Part 1


            907

26.1 Introduction


908

26.2 HyperText Transfer Protocol (HTTP) Transactions


909

26.3 Multitier Application Architecture


912

26.4 Your First JSF Web App


913

26.5 Model-View-Controller Architecture of JSF Apps


922

26.6 Common JSF Components


922

26.7 Validation Using JSF Standard Validators


926

26.8 Session Tracking


933

26.9 Wrap-Up


941

Chapter 27: JavaServer Faces Web Apps: Part 2


            942

27.1 Introduction


943

27.2 Accessing Databases in Web Apps


943

27.3 Ajax


956

27.4 Adding Ajax Functionality to the Validation App


958

27.5 Wrap-Up


961

Chapter 28: Web Services


              962

28.1


Introduction


963

28.2


Web Service Basics


965

28.3


Simple Object Access Protocol (SOAP)


965

28.4


Representational State Transfer (REST)


965

28.5


JavaScript Object Notation (JSON)


966

28.6


Publishing and Consuming SOAP-Based Web Services


966

28.7


Publishing and Consuming REST-Based XML Web Services

978

28.8


Publishing and Consuming REST-Based JSON Web Services

983

28.9


Session Tracking in a SOAP Web Service

987

28.10 Consuming a Database-Driven SOAP Web Service

1002

28.11 Equation Generator: Returning User-Defined Types

1009

28.12 Wrap-Up

1020

Appendix A: Operator Precedence Chart


            1022

Appendix B: ASCII Character Set


            1024

Appendix C: Keywords and Reserved Words


            1025

Appendix D: Primitive Types


            1026

Appendix E: Using the Java API Documentation


              1027

E.1 Introduction


1027

E.2 Navigating the Java API


1028

Appendix F: Using the Debugger


            1036

F.1 Introduction


1037

F.2 Breakpoints and the run, stop, cont and print Commands


1037

F.3 The print and set Commands


1041

F.4 Controlling Execution Using the step, step up and next Commands


1043

F.5 The watch Command


1046

F.6 The clear Command


1049

F.7 Wrap-Up


1051

Appendix G: Formatted Output


          1052

G.1


Introduction


1053

G.2


Streams


1053

G.3


Formatting Output with printf


1053

G.4


Printing Integers


1054

G.5


Printing Floating-Point Numbers


1055

G.6


Printing Strings and Characters


1057

G.7


Printing Dates and Times


1058

G.8


Other Conversion Characters


1060

G.9


Printing with Field Widths and Precisions


1062

G.10 Using Flags in the printf Format String

1064

G.11 Printing with Argument Indices

1068

G.12 Printing Literals and Escape Sequences

1068

G.13 Formatting Output with Class Formatter


1069

G.14 Wrap-Up


1070

Appendix H: GroupLayout


            1071

H.1 Introduction


1071

H.2 GroupLayout Basics


1071

H.3 Building a ColorChooser


1072

H.4 GroupLayout Web Resources


1082

Appendix I: Java Desktop Integration Components


            1083

I.1 Introduction


1083

I.2 Splash Screens


1083

I.3 Desktop Class

1085

I.4 Tray Icons


1087

Appendix J: UML 2: Additional Diagram Types


            1089

J.1 Introduction

1089

J.2 Additional Diagram Types 1089

Index


            1091



About the Authors

top


Paul Deitel and Harvey Deitel are the founders of Deitel & Associates, Inc., the internationally recognized programming languages authoring and corporate-training organization. Millions of people worldwide have used Deitel books to master Java, C#, C++, C, iPhone app development, Internet and web programming, JavaScript, XML, Visual Basic, Visual C++, Perl, Python and more.