Thinking in Java: [the definitive introduction to object-oriented programming in the language of the world wide web]
Gespeichert in:
1. Verfasser: | |
---|---|
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
Upper Saddle River, NJ [u.a.]
Prentice Hall
2006
|
Ausgabe: | 4. ed. |
Schlagworte: | |
Online-Zugang: | Inhaltsverzeichnis Klappentext |
Beschreibung: | 1482 S. Ill. |
ISBN: | 0131872486 9780131872486 |
Internformat
MARC
LEADER | 00000nam a2200000 c 4500 | ||
---|---|---|---|
001 | BV021289894 | ||
003 | DE-604 | ||
005 | 20120228 | ||
007 | t | ||
008 | 060112s2006 xxua||| |||| 00||| eng d | ||
020 | |a 0131872486 |9 0-13-187248-6 | ||
020 | |a 9780131872486 |9 978-0-13-187248-6 | ||
035 | |a (OCoLC)315240821 | ||
035 | |a (DE-599)BVBBV021289894 | ||
040 | |a DE-604 |b ger |e rakwb | ||
041 | 0 | |a eng | |
044 | |a xxu |c US | ||
049 | |a DE-739 |a DE-29T |a DE-573 |a DE-Aug4 |a DE-898 |a DE-522 |a DE-2070s |a DE-523 | ||
084 | |a ST 250 |0 (DE-625)143626: |2 rvk | ||
100 | 1 | |a Eckel, Bruce |d 1957- |e Verfasser |0 (DE-588)112174876 |4 aut | |
245 | 1 | 0 | |a Thinking in Java |b [the definitive introduction to object-oriented programming in the language of the world wide web] |c Bruce Eckel |
250 | |a 4. ed. | ||
264 | 1 | |a Upper Saddle River, NJ [u.a.] |b Prentice Hall |c 2006 | |
300 | |a 1482 S. |b Ill. | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
650 | 0 | 7 | |a Java |g Programmiersprache |0 (DE-588)4401313-9 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Objektorientierte Programmierung |0 (DE-588)4233947-9 |2 gnd |9 rswk-swf |
689 | 0 | 0 | |a Java |g Programmiersprache |0 (DE-588)4401313-9 |D s |
689 | 0 | 1 | |a Objektorientierte Programmierung |0 (DE-588)4233947-9 |D s |
689 | 0 | |5 DE-604 | |
856 | 4 | 2 | |m Digitalisierung UBPassau |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=014610755&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
856 | 4 | 2 | |m Digitalisierung UB Passau |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=014610755&sequence=000002&line_number=0002&func_code=DB_RECORDS&service_type=MEDIA |3 Klappentext |
999 | |a oai:aleph.bib-bvb.de:BVB01-014610755 |
Datensatz im Suchindex
_version_ | 1804135081416065024 |
---|---|
adam_text | What s Inside
Preface
Java SE5 and SE6
Java SE6
The
Changes
Note on the cover design
Acknowledgements
2
3
3
■4
...6
7
Introduction
Prerequisites
Learning Java
Goals
Teaching from this book
JDK HTML
documentation
Exercises
Foundations for Java
Source code
Coding standards
Errors
14
14
15
16
17
17
18
18
21
21
Introduction to Objects
The progress
of abstraction
An object has
an interface...
An object
provides services
The hidden
implementation
Reusing the
implementation
Inheritance
Is-a vs. is-like-a relationships
Interchangeable objects
with polymorphism
The singly rooted
hierarchy.
Containers
Parameterized types (Generics)
Object creation
Exception handling:
dealing with errors
Concurrent programming
Java and the Internet
What is the Web?
Client-side programming
Server-side programming
Summary
jEveryiftingJsjin Object
You manipulate objects
with references
You must create
all the objects
Where storage lives
Special case: primitive types
Arrays in Java
You never need to
destroy an object
Scoping
Scope of
Creating new data types:
class
Helds and
Methods, arguments,
and return values
The argument list
Building
Name visibility
Using other components
The static keyword
Your first Java program
Compiling and running
Comments and embedded
documentation
Comment documentation
Syntax
Embedded HTML
Some example tags
Documentation example
Coding style
Summary
Exercises
Operators
Simpler print statements
Using Java operators
Precedence
Assignment
Aliasing during method calls
Mathematical operators
Unary minus
and plus operators
Auto increment and
decrement
Relational operators
Testing object equivalence
Logical operators
Short-circuiting
literals
Exponential notation
Bitwise operators
Shift operators
Ternary if-else operator
String operator
+
Common pitfalls
when using operators
Casting operators
Truncation and rounding
Promotion
Java has no sizeof*
A compendium
of operators
Summary
Controlling Execution
true and false
if-else
Iteration
do-while
for
The comma operator
Foreach syntax
return
break and continue
The infamous goto
switch
Summary
Initialization
Guaranteed initialization
with the constructor
Method overloading
Distinguishing
overloaded methods
Overloading with primitives
Overloading on return values
Default constructors
The this keyword
Calling constructors
from constructors
The meaning of static
Cleanup: finalization
and garbage collection
What is finalizeO for?
You must perform cleanup
The termination condition
How a garbage collector works
Member initialization
Specifying initialization
Constructor initialization...i85
Order of initialization
static data initialization
Explicit static initialization
Non-static
instance initialization
Array initialization
Variable argument lists
Enumerated types
Summary
Access Control
package:
the library unit
Code organization
Creating unique
package names
A custom tool library
Using imports
to change behavior
Package caveat
Java access specifiers
Package access
public: interface access
private: you can t touch that!
protected: inheritance access..
Interface
and implementation
Class access
Summary
Reusing Classes
Composition syntax
Inheritance syntax
Initializing the base class
Delegation
Combining composition
and inheritance
Guaranteeing proper cleanup
Name hiding
Choosing composition
vs. inheritance
protected
Upcasting
Why upcasting ?
Composition vs. inheritance
revisited
The final keyword
final data
final methods
final classes
final caution
Initialization
and class loading
Initialization with inheritance....
Summary
Polymorphism
Upcasting revisited
Forgetting the object type
The twist
Method-call binding
Producing the right behavior
Extensibility
Pitfall: overriding
private methods
Pitfall: fields
and static methods
Constructors and
polymorphism
Order of constructor calls
Inheritance and cleanup
Behavior of polymorphic
methods inside constructors
Covariant return types
Designing
with inheritance
Substitution vs. extension
Downcasting and runtime
type information
Summary
Interfaces
Abstract classes
and methods
Interfaces
Complete decoupling
Multiple inheritance
in Java
Extending an interface
with inheritance
Name collisions when
combining interfaces
Adapting to an interface
Fields in interfaces
Initializing fields in interfaces
Nesting interfaces
Interfaces and factories
Summary
Inner Classes
Creating inner classes
The link to
the outer class
Using .this and .new
Inner classes
and upcasting
Inner classes in
methods and scopes
Anonymous
inner classes
Factory Method revisited
Nested classes
Classes inside interfaces
Reaching outward from
a multiply nested class
Why inner classes?
Closures
Inner classes
control frameworks
Inheriting from
inner classes
Can inner classes
be overridden?
Local inner classes
Inner-class identifiers
Summary
Holding Your Objects
Generics and
type-safe containers
Basic concepts
Adding groups
of elements....
Printing containers
list
Iterator
Iistlterator
Linkedlist
Stack
Set
Map
Queue
PriorityQueue
Collection vs. Iterator
Foreach and iterators
The Adapter Method idiom
Summary
Error Handling
with Exceptions
Concepts
Basic exceptions
Exception arguments
Catching an exception
The try block.
Exception handlers
Creating your
own exceptions
Exceptions and logging
The exception
specification
Catching any exception
The stack trace
Rethrowing an exception
Exception chaining
Standard Java
exceptions
Special case:
RuntimeException
Performing cleanup
with finally
What*
Using finally during return
Pitfall: the lost exception
Exception restrictions
Constructors
Exception matching
Alternative approaches
History.
Perspectives
Passing exceptions
to the console
Converting checked
to unchecked exceptions
Exception guidelines
Summary
Strings
Immutable Strings
Overloading
StringBuilder
Unintended recursion
Operations on Strings
Formatting output
printfO
System.out.formatO
The Formatter class
Format specifiers
Formatter conversions
String.formatO
Regular expressions
Basics
Creating regular expressions
Quantifiers
Pattern and Matcher
splitO
Replace operations
resetO
Regular expressions
and Java I/O
Scanning input
Scanner delimiters
Scanning with
regular expressions
StringTokenizer
Summary
Type Information
The need for RTTI
The Class object
Class literals
Generic class references
New cast syntax
Checking before a cast
Using class literals
A dynamic instanceof
Counting recursively.
Registered factories
instanceof vs. Class
equivalence
Reflection: runtime
class information
A class method extractor
Dynamic
Null
Mock Objects
Interfaces and
type information
Summary
Generics
Comparison with
Simple generics
A tuple library
A stack class
Randomlist
Generic interfaces
Generic methods
Leveraging type
argument inference
Varargs and generic methods
A generic method
to use with Generators
A general-purpose Generator
Simplifying tuple use
A Set utility
Anonymous
inner classes
Building
complex models
The mystery of erasure
The
Migration compatibility
The problem with erasure
The action at the boundaries
Compensating
for erasure
Creating instances of types
Arrays of generics
Bounds
Wildcards
How smart is the compiler?
Contravariance
Unbounded wildcards
Capture conversion
Issues
No primitives
as type parameters
Implementing
parameterized interfaces
Casting and warnings
Overloading
Base class hijacks an interface
Self-bounded types
Curiously-recurring generics
Self-bounding
Argument (»variance
Dynamic type safety
Exceptions
Mixins
Mbdns in
Mixing with interfaces
Using the Decorator pattern
Mixins with dynamic proxies
Latent typing
Compensating for
the lack of latent typing
Reflection
Applying a method
to a sequence
When you don t happen
to have the right interface
Simulating latent typing
-
Using function objects
as strategies
Summary: Is casting
really so bad?
Further reading
Arrays
Why arrays are special
Arrays are
first-class objects
Returning an array
Multidimensional
arrays
Arrays and generics
Creating test data
Arrays.fillO
Data Generators
Creating arrays
from Generators
Arrays utilities
Copying an array
Comparing arrays
Array element comparisons
Sorting an array
Searching a sorted array
Summary
Containers in Depth
Full container taxonomy....
Filling containers
A Generator solution
Map generators
Using Abstract classes
Collection
functionality
Optional operations
Unsupported operations
list functionality
Sets and storage order
SortedSet
Queues
Priority queues
Deques
Understanding Maps
Performance
SortedMap
IinkedHashMap
Hashing and hash codes
Understanding hashCodeO
Hashing for speed
Overriding hashCodeO
Choosing
an implementation
A performance
test framework
Choosing between lists
MicrobenchmarMng dangers
Choosing between Sets
Choosing between Maps
Utilities
Sorting and searching lists
Making a Collection
or Map unmodiflable
Synchronizing a
Collection or Map
Holding references
TheWeakHashMap
Java
Vector
Hashtable
Stack
BitSet
Summary
I/O
The File class
A directory lister
Directory utilities
Checking for
and creating directories
Input and output
Types of InputStream
Types of OutputStream
Adding attributes
and useful interfaces
Reading from an InputStream
with FilterlnputStream
Writing to an OutputStream
with FilterOutputStream
Readers
Sources and sinks of data
Modifying stream behavior
Unchanged classes
Off by itself:
RandomAccessFile
Typical uses
of I/O streams
Buffered input file
Input from memory
Formatted memory input
Basic file output
Storing and recovering data
Reading and writing
random-access files
Piped streams..
File reading
&
Reading binary files
Standard I/O
Reading from standard input
Changing System.out
to a PrintWriter
Redirecting standard I/O
Process control
New I/O
Converting data
Fetching primitives
View buffers
Data manipulation
with buffers
Buffer details
Memory-mapped files
File locking
Compression
Simple compression
with GZIP
Multifile storage with Zip
Java ARchives (JARs)
Object serialization
Finding the class
Controlling serialization
Using persistence
XML
Preferences
Summary
Enumerated Types
Basic enum features
Using static imports
with enums
Adding methods
to an enum
Overriding enum methods
enums in
switch statements
The mystery
ofvaluesO
Implements,
not inherits
Random selection
Using interfaces
for organization
Using EnumSet
instead of flags
Using EnumMap
Constant-specific
methods
Giain of Responsibility
with enums
State machines with enums
Multiple dispatching
Dispatching with enums
Using
constant-specific methods
Dispatching
with EnumMaps
Using a 2-D array
Summary
Annotations
Basic syntax
Defining annotations
Meta-annotations
Writing
annotation processors
Annotation
Default value constraints
Generating external files
Annotations don t
support inheritance
Implementing the processor
Using apt to
process annotations
Using the Visitor pattern
with apt
Annotation-based
unit testing
Using @Unit with generics
No suites necessary
Implementing @Unit
Removing test code
Summary
Concurrency
The many faces of
concurrency
Faster execution
Improving code design
Basic threading
Defining tasks
The Thread class
Using Executor«
Producing return values
from tasks
Sleeping
Priority
Yielding
Daemon threads
Coding variations
Terminology
Joining a thread
Creating responsive
user interfaces
Thread groups
Catching exceptions
Sharing resources
Improperly
accessing resources
Resolving shared
resource contention
Atomicity and volatility
Atomic classes
Critical sections
Synchronizing on
other objects
Thread local storage
Terminating tasks
The ornamental garden
Terminating when blocked
Interruption
Checking for an interrupt
Cooperation
between tasks
waitO and notifyAllO
notifyO vs. notifyAllO
Producers and consumers
Producer-consumers
and queues
Using pipes for I/O
between tasks
Deadlock
New library
components
CountDownLatch
CyclicBarrier
DelayQueue
PriorifyBlockiiigQueue
The greenhouse controller
with ScheduledExecutor
Semaphore
Exchanger...
Simulation
Bank teller simulation
The restaurant simulation
Distributing work
Performance tuning
Comparing
mutex technologies
Lock-free containers
Optimistic locking
ReadWriteLocks
Active objects
Summary
Further reading
Graphical
User Interfaces
Applets
Swing basics
A display framework
Making a button
Capturing an event
Text areas
Controlling layout
BorderLayoiJt
FlowLayout
GridLayout
GridBagLayout
Absolute positioning
BoxLayout
The best approach?
The Swing event model....
Event and listener types
Tracking multiple events
A selection of
Swing components
Buttons
Icons
Tool tips
Text fields
Borders
A mini-editor
Check boxes
Radio buttons
Combo boxes
(drop-down lists)
list boxes
Tabbed panes
Message boxes
Menus
Pop-up menus
Drawing
Dialog boxes
File dialogs
HTML on
Swing components
Sliders and progress bars
Selecting look
Trees, tables
JNLPand
Java Web Start
Concurrency
Ix>ng-running tasks
Visual threading
Visual programming
and JavaBeans
What is a JavaBean?
Extracting Beanlnfo
with the Introspector
A more sophisticated Bean
JavaBeans
and synchronization
...................1412
More complex Bean support.
More to Beans
Alternatives to Swing
Building Flash Web
clients with Flex
Hello, Hex
Compiling MXML
MXML and ActionScript
Containers and controls
Effects and styles
Events
Connecting to Java
Data models
and data binding
Building and deploying
Creating SWT
applications
Installing SWT
Hello, SWT
Eliminating redundant code
Menus
Tabbed panes, buttons,
and events
Graphics
Concurrency in SWT
SWT vs. Swing?
Summary
Resources
A: Supplements ____1449
Downloadable
supplements
Thinking in C:
Foundations for Java
Thinking in Java
seminar
Hands-On Java
seminar-on-CD
Thinking in Objects
seminar
Thinking in
Enterprise Java
Thinking in Patterns
(with Java)
Thinking in Patterns
seminar
Design consulting
and reviews
B: Resources
Software
Editors
Books
Analysis
Python
My own list of books
Index
BRUCE
2003
Magazine Jolt Award for Best Book
• 2003
Reader s Choice Award for Best
Book
Choice Award for Best Book
JavaWorld
for Best Book
Development Magazine
Productivity Award
Developer s Journal Editor s Choree
Award for Best Book
Thinking in Java has earned
raves from programmers
worldwide for its extraordinary
clarity, careful organization, and
small, direct programming
examples. From
of Java syntax to its most
advanced features, Thinking
in
simple step at a time.
^ The classic object-oriented introduction for
beginners and experts alike, fuiy updated for
Java SE5/6 with many new examples and chapters!
*§*
f
examples throughout: Adapter, Bridge, Chain
of Responsibiity, Command, Decorator, Facade,
Factory Method, Flyweight, Iterator, Data
Transfer Object, Nfuil Object, Proxy, Singleton,
State, Strategy, Template Method, and Visitor.
V Introduction to XML for data transfer; SWT,
Flash for user interfaces.
*§
you a solid grasp of threading fundamentals.
f
files, rewritten for this edition
W Companion web site includes ad source code,
annotated solution guide, weblog, and
multimedia seminars.
f
demonstrates advanced topics,
W Explains sound object-oriented principles.
T Hands-On Java Seimw CD available online,
with fuU multimedia seminar by Bruce Eckel.
■*
See vmwMindVkw.neL
|
adam_txt |
What's Inside
Preface
Java SE5 and SE6
Java SE6
The
Changes
Note on the cover design
Acknowledgements
2
3
3
■4
.6
7
Introduction
Prerequisites
Learning Java
Goals
Teaching from this book
JDK HTML
documentation
Exercises
Foundations for Java
Source code
Coding standards
Errors
14
14
15
16
17
17
18
18
21
21
Introduction to Objects
The progress
of abstraction
An object has
an interface.
An object
provides services
The hidden
implementation
Reusing the
implementation
Inheritance
Is-a vs. is-like-a relationships
Interchangeable objects
with polymorphism
The singly rooted
hierarchy.
Containers
Parameterized types (Generics)
Object creation
Exception handling:
dealing with errors
Concurrent programming
Java and the Internet
What is the Web?
Client-side programming
Server-side programming
Summary
jEveryiftingJsjin Object
You manipulate objects
with references
You must create
all the objects
Where storage lives
Special case: primitive types
Arrays in Java
You never need to
destroy an object
Scoping
Scope of
Creating new data types:
class
Helds and
Methods, arguments,
and return values
The argument list
Building
Name visibility
Using other components
The static keyword
Your first Java program
Compiling and running
Comments and embedded
documentation
Comment documentation
Syntax
Embedded HTML
Some example tags
Documentation example
Coding style
Summary
Exercises
Operators
Simpler print statements
Using Java operators
Precedence
Assignment
Aliasing during method calls
Mathematical operators
Unary minus
and plus operators
Auto increment and
decrement
Relational operators
Testing object equivalence
Logical operators
Short-circuiting
literals
Exponential notation
Bitwise operators
Shift operators
Ternary if-else operator
String operator
+
Common pitfalls
when using operators
Casting operators
Truncation and rounding
Promotion
Java has no "sizeof*
A compendium
of operators
Summary
Controlling Execution
true and false
if-else
Iteration
do-while
for
The comma operator
Foreach syntax
return
break and continue
The infamous "goto"
switch
Summary
Initialization
Guaranteed initialization
with the constructor
Method overloading
Distinguishing
overloaded methods
Overloading with primitives
Overloading on return values
Default constructors
The this keyword
Calling constructors
from constructors
The meaning of static
Cleanup: finalization
and garbage collection
What is finalizeO for?
You must perform cleanup
The termination condition
How a garbage collector works
Member initialization
Specifying initialization
Constructor initialization.i85
Order of initialization
static data initialization
Explicit static initialization
Non-static
instance initialization
Array initialization
Variable argument lists
Enumerated types
Summary
Access Control
package:
the library unit
Code organization
Creating unique
package names
A custom tool library
Using imports
to change behavior
Package caveat
Java access specifiers
Package access
public: interface access
private: you can't touch that!
protected: inheritance access.
Interface
and implementation
Class access
Summary
Reusing Classes
Composition syntax
Inheritance syntax
Initializing the base class
Delegation
Combining composition
and inheritance
Guaranteeing proper cleanup
Name hiding
Choosing composition
vs. inheritance
protected
Upcasting
Why "upcasting"?
Composition vs. inheritance
revisited
The final keyword
final data
final methods
final classes
final caution
Initialization
and class loading
Initialization with inheritance.
Summary
Polymorphism
Upcasting revisited
Forgetting the object type
The twist
Method-call binding
Producing the right behavior
Extensibility
Pitfall: "overriding"
private methods
Pitfall: fields
and static methods
Constructors and
polymorphism
Order of constructor calls
Inheritance and cleanup
Behavior of polymorphic
methods inside constructors
Covariant return types
Designing
with inheritance
Substitution vs. extension
Downcasting and runtime
type information
Summary
Interfaces
Abstract classes
and methods
Interfaces
Complete decoupling
"Multiple inheritance"
in Java
Extending an interface
with inheritance
Name collisions when
combining interfaces
Adapting to an interface
Fields in interfaces
Initializing fields in interfaces
Nesting interfaces
Interfaces and factories
Summary
Inner Classes
Creating inner classes
The link to
the outer class
Using .this and .new
Inner classes
and upcasting
Inner classes in
methods and scopes
Anonymous
inner classes
Factory Method revisited
Nested classes
Classes inside interfaces
Reaching outward from
a multiply nested class
Why inner classes?
Closures
Inner classes
control frameworks
Inheriting from
inner classes
Can inner classes
be overridden?
Local inner classes
Inner-class identifiers
Summary
Holding Your Objects
Generics and
type-safe containers
Basic concepts
Adding groups
of elements.
Printing containers
list
Iterator
Iistlterator
Linkedlist
Stack
Set
Map
Queue
PriorityQueue
Collection vs. Iterator
Foreach and iterators
The Adapter Method idiom
Summary
Error Handling
with Exceptions
Concepts
Basic exceptions
Exception arguments
Catching an exception
The try block.
Exception handlers
Creating your
own exceptions
Exceptions and logging
The exception
specification
Catching any exception
The stack trace
Rethrowing an exception
Exception chaining
Standard Java
exceptions
Special case:
RuntimeException
Performing cleanup
with finally
What*
Using finally during return
Pitfall: the lost exception
Exception restrictions
Constructors
Exception matching
Alternative approaches
History.
Perspectives
Passing exceptions
to the console
Converting checked
to unchecked exceptions
Exception guidelines
Summary
Strings
Immutable Strings
Overloading
StringBuilder
Unintended recursion
Operations on Strings
Formatting output
printfO
System.out.formatO
The Formatter class
Format specifiers
Formatter conversions
String.formatO
Regular expressions
Basics
Creating regular expressions
Quantifiers
Pattern and Matcher
splitO
Replace operations
resetO
Regular expressions
and Java I/O
Scanning input
Scanner delimiters
Scanning with
regular expressions
StringTokenizer
Summary
Type Information
The need for RTTI
The Class object
Class literals
Generic class references
New cast syntax
Checking before a cast
Using class literals
A dynamic instanceof
Counting recursively.
Registered factories
instanceof vs. Class
equivalence
Reflection: runtime
class information
A class method extractor
Dynamic
Null
Mock Objects
Interfaces and
type information
Summary
Generics
Comparison with
Simple generics
A tuple library
A stack class
Randomlist
Generic interfaces
Generic methods
Leveraging type
argument inference
Varargs and generic methods
A generic method
to use with Generators
A general-purpose Generator
Simplifying tuple use
A Set utility
Anonymous
inner classes
Building
complex models
The mystery of erasure
The
Migration compatibility
The problem with erasure
The action at the boundaries
Compensating
for erasure
Creating instances of types
Arrays of generics
Bounds
Wildcards
How smart is the compiler?
Contravariance
Unbounded wildcards
Capture conversion
Issues
No primitives
as type parameters
Implementing
parameterized interfaces
Casting and warnings
Overloading
Base class hijacks an interface
Self-bounded types
Curiously-recurring generics
Self-bounding
Argument (»variance
Dynamic type safety
Exceptions
Mixins
Mbdns in
Mixing with interfaces
Using the Decorator pattern
Mixins with dynamic proxies
Latent typing
Compensating for
the lack of latent typing
Reflection
Applying a method
to a sequence
When you don't happen
to have the right interface
Simulating latent typing
-
Using function objects
as strategies
Summary: Is casting
really so bad?
Further reading
Arrays
Why arrays are special
Arrays are
first-class objects
Returning an array
Multidimensional
arrays
Arrays and generics
Creating test data
Arrays.fillO
Data Generators
Creating arrays
from Generators
Arrays utilities
Copying an array
Comparing arrays
Array element comparisons
Sorting an array
Searching a sorted array
Summary
Containers in Depth
Full container taxonomy.
Filling containers
A Generator solution
Map generators
Using Abstract classes
Collection
functionality
Optional operations
Unsupported operations
list functionality
Sets and storage order
SortedSet
Queues
Priority queues
Deques
Understanding Maps
Performance
SortedMap
IinkedHashMap
Hashing and hash codes
Understanding hashCodeO
Hashing for speed
Overriding hashCodeO
Choosing
an implementation
A performance
test framework
Choosing between lists
MicrobenchmarMng dangers
Choosing between Sets
Choosing between Maps
Utilities
Sorting and searching lists
Making a Collection
or Map unmodiflable
Synchronizing a
Collection or Map
Holding references
TheWeakHashMap
Java
Vector
Hashtable
Stack
BitSet
Summary
I/O
The File class
A directory lister
Directory utilities
Checking for
and creating directories
Input and output
Types of InputStream
Types of OutputStream
Adding attributes
and useful interfaces
Reading from an InputStream
with FilterlnputStream
Writing to an OutputStream
with FilterOutputStream
Readers
Sources and sinks of data
Modifying stream behavior
Unchanged classes
Off by itself:
RandomAccessFile
Typical uses
of I/O streams
Buffered input file
Input from memory
Formatted memory input
Basic file output
Storing and recovering data
Reading and writing
random-access files
Piped streams.
File reading
&
Reading binary files
Standard I/O
Reading from standard input
Changing System.out
to a PrintWriter
Redirecting standard I/O
Process control
New I/O
Converting data
Fetching primitives
View buffers
Data manipulation
with buffers
Buffer details
Memory-mapped files
File locking
Compression
Simple compression
with GZIP
Multifile storage with Zip
Java ARchives (JARs)
Object serialization
Finding the class
Controlling serialization
Using persistence
XML
Preferences
Summary
Enumerated Types
Basic enum features
Using static imports
with enums
Adding methods
to an enum
Overriding enum methods
enums in
switch statements
The mystery
ofvaluesO
Implements,
not inherits
Random selection
Using interfaces
for organization
Using EnumSet
instead of flags
Using EnumMap
Constant-specific
methods
Giain of Responsibility
with enums
State machines with enums
Multiple dispatching
Dispatching with enums
Using
constant-specific methods
Dispatching
with EnumMaps
Using a 2-D array
Summary
Annotations
Basic syntax
Defining annotations
Meta-annotations
Writing
annotation processors
Annotation
Default value constraints
Generating external files
Annotations don't
support inheritance
Implementing the processor
Using apt to
process annotations
Using the Visitor pattern
with apt
Annotation-based
unit testing
Using @Unit with generics
No "suites" necessary
Implementing @Unit
Removing test code
Summary
Concurrency
The many faces of
concurrency
Faster execution
Improving code design
Basic threading
Defining tasks
The Thread class
Using Executor«
Producing return values
from tasks
Sleeping
Priority
Yielding
Daemon threads
Coding variations
Terminology
Joining a thread
Creating responsive
user interfaces
Thread groups
Catching exceptions
Sharing resources
Improperly
accessing resources
Resolving shared
resource contention
Atomicity and volatility
Atomic classes
Critical sections
Synchronizing on
other objects
Thread local storage
Terminating tasks
The ornamental garden
Terminating when blocked
Interruption
Checking for an interrupt
Cooperation
between tasks
waitO and notifyAllO
notifyO vs. notifyAllO
Producers and consumers
Producer-consumers
and queues
Using pipes for I/O
between tasks
Deadlock
New library
components
CountDownLatch
CyclicBarrier
DelayQueue
PriorifyBlockiiigQueue
The greenhouse controller
with ScheduledExecutor
Semaphore
Exchanger.
Simulation
Bank teller simulation
The restaurant simulation
Distributing work
Performance tuning
Comparing
mutex technologies
Lock-free containers
Optimistic locking
ReadWriteLocks
Active objects
Summary
Further reading
Graphical
User Interfaces
Applets
Swing basics
A display framework
Making a button
Capturing an event
Text areas
Controlling layout
BorderLayoiJt
FlowLayout
GridLayout
GridBagLayout
Absolute positioning
BoxLayout
The best approach?
The Swing event model.
Event and listener types
Tracking multiple events
A selection of
Swing components
Buttons
Icons
Tool tips
Text fields
Borders
A mini-editor
Check boxes
Radio buttons
Combo boxes
(drop-down lists)
list boxes
Tabbed panes
Message boxes
Menus
Pop-up menus
Drawing
Dialog boxes
File dialogs
HTML on
Swing components
Sliders and progress bars
Selecting look
Trees, tables
JNLPand
Java Web Start
Concurrency
Ix>ng-running tasks
Visual threading
Visual programming
and JavaBeans
What is a JavaBean?
Extracting Beanlnfo
with the Introspector
A more sophisticated Bean
JavaBeans
and synchronization
.1412
More complex Bean support.
More to Beans
Alternatives to Swing
Building Flash Web
clients with Flex
Hello, Hex
Compiling MXML
MXML and ActionScript
Containers and controls
Effects and styles
Events
Connecting to Java
Data models
and data binding
Building and deploying
Creating SWT
applications
Installing SWT
Hello, SWT
Eliminating redundant code
Menus
Tabbed panes, buttons,
and events
Graphics
Concurrency in SWT
SWT vs. Swing?
Summary
Resources
A: Supplements _1449
Downloadable
supplements
Thinking in C:
Foundations for Java
Thinking in Java
seminar
Hands-On Java
seminar-on-CD
Thinking in Objects
seminar
Thinking in
Enterprise Java
Thinking in Patterns
(with Java)
Thinking in Patterns
seminar
Design consulting
and reviews
B: Resources
Software
Editors
Books
Analysis
Python
My own list of books
Index
BRUCE
2003
Magazine Jolt Award for Best Book
• 2003
Reader's Choice Award for Best
Book
Choice Award for Best Book
JavaWorld
for Best Book
Development Magazine
Productivity Award
Developer's Journal Editor's Choree
Award for Best Book
Thinking in Java has earned
raves from programmers
worldwide for its extraordinary
clarity, careful organization, and
small, direct programming
examples. From
of Java syntax to its most
advanced features, Thinking
in
simple step at a time.
^ The classic object-oriented introduction for
beginners and experts alike, fuiy updated for
Java SE5/6 with many new examples and chapters!
*§*
f
examples throughout: Adapter, Bridge, Chain
of Responsibiity, Command, Decorator, Facade,
Factory Method, Flyweight, Iterator, Data
Transfer Object, Nfuil Object, Proxy, Singleton,
State, Strategy, Template Method, and Visitor.
V Introduction to XML for data transfer; SWT,
Flash for user interfaces.
*§"
you a solid grasp of threading fundamentals.
f
files, rewritten for this edition
W Companion web site includes ad source code,
annotated solution guide, weblog, and
multimedia seminars.
f
demonstrates advanced topics,
'W Explains sound object-oriented principles.
T Hands-On Java Seimw CD available online,
with fuU multimedia seminar by Bruce Eckel.
"■*
See vmwMindVkw.neL |
any_adam_object | 1 |
any_adam_object_boolean | 1 |
author | Eckel, Bruce 1957- |
author_GND | (DE-588)112174876 |
author_facet | Eckel, Bruce 1957- |
author_role | aut |
author_sort | Eckel, Bruce 1957- |
author_variant | b e be |
building | Verbundindex |
bvnumber | BV021289894 |
classification_rvk | ST 250 |
ctrlnum | (OCoLC)315240821 (DE-599)BVBBV021289894 |
discipline | Informatik |
discipline_str_mv | Informatik |
edition | 4. ed. |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>01826nam a2200385 c 4500</leader><controlfield tag="001">BV021289894</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20120228 </controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">060112s2006 xxua||| |||| 00||| eng d</controlfield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">0131872486</subfield><subfield code="9">0-13-187248-6</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9780131872486</subfield><subfield code="9">978-0-13-187248-6</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)315240821</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BVBBV021289894</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rakwb</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="044" ind1=" " ind2=" "><subfield code="a">xxu</subfield><subfield code="c">US</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-739</subfield><subfield code="a">DE-29T</subfield><subfield code="a">DE-573</subfield><subfield code="a">DE-Aug4</subfield><subfield code="a">DE-898</subfield><subfield code="a">DE-522</subfield><subfield code="a">DE-2070s</subfield><subfield code="a">DE-523</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 250</subfield><subfield code="0">(DE-625)143626:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Eckel, Bruce</subfield><subfield code="d">1957-</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)112174876</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Thinking in Java</subfield><subfield code="b">[the definitive introduction to object-oriented programming in the language of the world wide web]</subfield><subfield code="c">Bruce Eckel</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">4. ed.</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Upper Saddle River, NJ [u.a.]</subfield><subfield code="b">Prentice Hall</subfield><subfield code="c">2006</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">1482 S.</subfield><subfield code="b">Ill.</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Java</subfield><subfield code="g">Programmiersprache</subfield><subfield code="0">(DE-588)4401313-9</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Objektorientierte Programmierung</subfield><subfield code="0">(DE-588)4233947-9</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Java</subfield><subfield code="g">Programmiersprache</subfield><subfield code="0">(DE-588)4401313-9</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="1"><subfield code="a">Objektorientierte Programmierung</subfield><subfield code="0">(DE-588)4233947-9</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">Digitalisierung UBPassau</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=014610755&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">Digitalisierung UB Passau</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=014610755&sequence=000002&line_number=0002&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Klappentext</subfield></datafield><datafield tag="999" ind1=" " ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-014610755</subfield></datafield></record></collection> |
id | DE-604.BV021289894 |
illustrated | Illustrated |
index_date | 2024-07-02T13:49:33Z |
indexdate | 2024-07-09T20:34:50Z |
institution | BVB |
isbn | 0131872486 9780131872486 |
language | English |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-014610755 |
oclc_num | 315240821 |
open_access_boolean | |
owner | DE-739 DE-29T DE-573 DE-Aug4 DE-898 DE-BY-UBR DE-522 DE-2070s DE-523 |
owner_facet | DE-739 DE-29T DE-573 DE-Aug4 DE-898 DE-BY-UBR DE-522 DE-2070s DE-523 |
physical | 1482 S. Ill. |
publishDate | 2006 |
publishDateSearch | 2006 |
publishDateSort | 2006 |
publisher | Prentice Hall |
record_format | marc |
spelling | Eckel, Bruce 1957- Verfasser (DE-588)112174876 aut Thinking in Java [the definitive introduction to object-oriented programming in the language of the world wide web] Bruce Eckel 4. ed. Upper Saddle River, NJ [u.a.] Prentice Hall 2006 1482 S. Ill. txt rdacontent n rdamedia nc rdacarrier Java Programmiersprache (DE-588)4401313-9 gnd rswk-swf Objektorientierte Programmierung (DE-588)4233947-9 gnd rswk-swf Java Programmiersprache (DE-588)4401313-9 s Objektorientierte Programmierung (DE-588)4233947-9 s DE-604 Digitalisierung UBPassau application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=014610755&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis Digitalisierung UB Passau application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=014610755&sequence=000002&line_number=0002&func_code=DB_RECORDS&service_type=MEDIA Klappentext |
spellingShingle | Eckel, Bruce 1957- Thinking in Java [the definitive introduction to object-oriented programming in the language of the world wide web] Java Programmiersprache (DE-588)4401313-9 gnd Objektorientierte Programmierung (DE-588)4233947-9 gnd |
subject_GND | (DE-588)4401313-9 (DE-588)4233947-9 |
title | Thinking in Java [the definitive introduction to object-oriented programming in the language of the world wide web] |
title_auth | Thinking in Java [the definitive introduction to object-oriented programming in the language of the world wide web] |
title_exact_search | Thinking in Java [the definitive introduction to object-oriented programming in the language of the world wide web] |
title_exact_search_txtP | Thinking in Java [the definitive introduction to object-oriented programming in the language of the world wide web] |
title_full | Thinking in Java [the definitive introduction to object-oriented programming in the language of the world wide web] Bruce Eckel |
title_fullStr | Thinking in Java [the definitive introduction to object-oriented programming in the language of the world wide web] Bruce Eckel |
title_full_unstemmed | Thinking in Java [the definitive introduction to object-oriented programming in the language of the world wide web] Bruce Eckel |
title_short | Thinking in Java |
title_sort | thinking in java the definitive introduction to object oriented programming in the language of the world wide web |
title_sub | [the definitive introduction to object-oriented programming in the language of the world wide web] |
topic | Java Programmiersprache (DE-588)4401313-9 gnd Objektorientierte Programmierung (DE-588)4233947-9 gnd |
topic_facet | Java Programmiersprache Objektorientierte Programmierung |
url | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=014610755&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=014610755&sequence=000002&line_number=0002&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT eckelbruce thinkinginjavathedefinitiveintroductiontoobjectorientedprogramminginthelanguageoftheworldwideweb |