Mind Mind Mind Point to Share Knowlege  
 
   
  Add New Map Add New Map About us About us Help Help Contact us Contact us  

Thinking in Java

please flag with care:
best of
error
spam
 
2007-11-23No history Add My version 
download mind map 121808379.cdmm (mindmap file created by  ConceptDraw MINDMAP)

  
This is a map about Thinking in Java 
 
outline 
Thinking in Java
  Introduction to Objects
 >>Link: 1: Introduction to Objects \Introduction to Objects
  Everything is an Object
 >>Link: 2: Everything is an Object \Everything is an Object
  Controlling Program Flow
  Execution control
 >>Link: Execution control \Execution control
  Using Java operators
 >>Link: Using Java operators \Using Java operators
  Initialization & Cleanup
 >>Link: 4: Initialization & Cleanup \Initialization & Cleanup
  Hiding the Implementation
 >>Link: 5: Hiding the Implementation \Hiding the Implementation
  Reusing Classes
 >>Link: 6: Reusing Classes \Reusing Classes
  Polymorphism
 >>Link: 7: Polymorphism \Polymorphism
  Interfaces & Inner Classes
 >>Link: 8: Interfaces & Inner Classes \Interfaces & Inner Classes
  Supplements
 >>Link: C: Supplements \Supplements
  Error Handling with Exceptions
 >>Link: 9: Error Handling with Exceptions \Error Handling with Exceptions
  Detecting Types
 >>Link: 10: Detecting Types \Detecting Types
  Collections of Objects
 >>Link: 11: Collections of Objects \Collections of Objects
  The Java I/O System
 >>Link: 12: The Java I/O System \The Java I/O System
  Concurrency
 >>Link: 13: Concurrency \Concurrency
  Creating Windows & Applets
 >>Link: 14: Creating Windows & Applets \Creating Windows & Applets
  Discovering Problems
 >>Link: 15: Discovering Problems \Discovering Problems
  Analysis and Design
 >>Link: 16: Analysis and Design \Analysis and Design
  Passing & Returning Objects
 >>Link: A: Passing & Returning Objects \Passing & Returning Objects
  Java Programming Guidelines
  Implementation
  Design
 Thinking in Java
 Bruce Eckel
 >>New Map
 Introduction to Objects
 >>Link: Page-1\Thinking in Java\Introduction to Objects
  The progress of abstraction
  An object has an interface
  An object provides services
  The hidden implementation
  Reusing the implementation
  Inheritance: reusing the interface
  Is-a vs. is-like-a relationships
  Interchangeable objects with polymorphism
  Abstract base classes and interfaces
  Object creation, use & lifetimes
 >>Link: Object creation, use & lifetimes \Object creation, use & lifetimes
  Exception handling: dealing with errors
  Concurrency
  Persistence
  Java and the Internet
 >>Link: Java and the Internet \Java and the Internet
  Why Java succeeds
  Programming in the large
  Error handling
  Maximal leverage with libraries
  Systems are easier to express and understand
  Java vs. C++?
 Thinking in Java
 Bruce Eckel
 >>New Map
 Java and the Internet
 >>Link: 1: Introduction to Objects \Introduction to Objects \Java and the Internet
  What is the Web?
  Client/Server computing
  The Web as a giant server
  Applications
  Server-side programming
  Client-side programming
 >>Link:
  Java
  Internet vs. intranet
  Security
  Scripting languages
  .NET and C#
  Plug-ins
 Thinking in Java
 Bruce Eckel
 >>New Map
 Object creation, use & lifetimes
 >>Link: 1: Introduction to Objects \Introduction to Objects \Object creation, use & lifetimes
  Collections and iterators
  The singly rooted hierarchy
  Downcasting vs. templates/generics
  Ensuring proper cleanup
  Garbage collectors vs. efficiency and flexibility
 Thinking in Java
 Bruce Eckel
 >>New Map
 Everything is an Object
 >>Link: Page-1\Thinking in Java\Everything is an Object
  You manipulate objects with references
  You must create all the objects
  Arrays in Java
  Special case: primitive types
  High-precision numbers
  Where storage lives
  You never need to destroy an object
  Scoping
  Scope of objects
  Creating new data types: class
  Fields and methods
  Default values for primitive members
  Methods, arguments, and return values
  The argument list
  Building a Java program
  The static keyword
  Using other components
  Name visibility
  Your first Java program
  Compiling and running
  Comments and embedded documentation
 >>Link: Comments and embedded documentation \Comments and embedded documentation
  Coding style
 Thinking in Java
 Bruce Eckel
 >>New Map
 Initialization & Cleanup
 >>Link: Page-1\Thinking in Java\Initialization & Cleanup
  Guaranteed initialization with the constructor
  Method overloading
  The this keyword
  Calling constructors from constructors
  The meaning of static
  Default constructors
  Overloading on return values
  Distinguishing overloaded methods
  Overloading with primitives
  Cleanup: finalization and garbage collection
  How a garbage collector works
  The termination condition
  You must perform cleanup
  What is finalize( ) for?
  Array initialization
  Multidimensional arrays
  Member initialization
 >>Link:
  Constructor initialization
  Order of initialization
  Non-static instance initialization
  Explicit static initialization
  Static data initialization
  Specifying initialization
 Thinking in Java
 Bruce Eckel
 >>New Map
 Hiding the Implementation
 >>Link: Page-1\Thinking in Java\Hiding the Implementation
  package: the library unit
  A custom tool library
  Creating unique package names
  Collisions
  Using imports to change behavior
  Package caveat
  Interface and implementation
  Java access specifiers
  private: you can’t touch that!
  protected: inheritance access
  public: interface access
  The default package
  Package access
  Class access
 Thinking in Java
 Bruce Eckel
 >>New Map
 Reusing Classes
 >>Link: Page-1\Thinking in Java\Reusing Classes
  Inheritance syntax
  Initializing the base class
  Constructors with arguments
  Catching base constructor exceptions
  Combining composition and inheritance
  Guaranteeing proper cleanup
  Name hiding
  Choosing composition vs. inheritance
  Upcasting
  Why “upcasting”?
  Composition vs. inheritance revisited
  Initialization and class loading
  Initialization with inheritance
  Incremental development
  Composition syntax
  protected
  The final keyword
  Final caution
  Final classes
  Final methods
  final and private
  Final data
  Blank finals
  Final arguments
 Thinking in Java
 Bruce Eckel
 >>New Map
 Polymorphism
 >>Link: Page-1\Thinking in Java\Polymorphism
  Upcasting revisited
  Forgetting the object type
  The twist
  Pitfall: “overriding” private methods
  Extensibility
  Producing the right behavior
  Method-call binding
  Abstract classes and methods
  Constructors and polymorphism
  Behavior of polymorphic methods inside constructors
  Inheritance and cleanup
  Order of constructor calls
  Designing with inheritance
  Pure inheritance vs. extension
  Downcasting and run-time type identification
 Thinking in Java
 Bruce Eckel
 >>New Map
 Interfaces & Inner Classes
 >>Link: Page-1\Thinking in Java\Interfaces & Inner Classes
  Interfaces
  Nesting interfaces
  Initializing fields in interfaces
  Grouping constants
  “Multiple inheritance” in Java
  Name collisions when combining interfaces
  Extending an interface with inheritance
  Inner classes
 >>Link: Inner classes \Inner classes
  Why inner classes?
  Closures & Callbacks
  Inner classes & control frameworks
 Thinking in Java
 Bruce Eckel
 >>New Map
 Error Handling with Exceptions
 >>Link: Page-1\Thinking in Java\Error Handling with Exceptions
  Basic exceptions
  Exception arguments
  Catching an exception
  The try block
  Exception handlers
  Termination vs. resumption
  Creating your own exceptions
  The exception specification
  Catching any exception
  Rethrowing an exceptions
  Exception chaining
  Standard Java exceptions
  The special case of RuntimeException
  Performing cleanup with finally
  What’s finally for?
  Pitfall: the lost exception
  Exception restrictions
  Constructors
  Exception matching
  Alternative approaches
  Converting checked to unchecked exceptions
  Passing exceptions to the console
  Perspectives
  History
  Exception guidelines
 Thinking in Java
 Bruce Eckel
 >>New Map
 Detecting Types
 >>Link: Page-1\Thinking in Java\Detecting Types
  The need for RTTI
  Reflection: run time class information
  A class method extractor
  The Class object
  Class literals
  RTTI syntax
  Checking before a cast
  Using class literals
  A dynamic instanceof
  instanceof vs. Class equivalence
 Thinking in Java
 Bruce Eckel
 >>New Map
 Collections of Objects
 >>Link: Page-1\Thinking in Java\Collections of Objects
  Arrays
 >>Link: Arrays \Arrays
  Introduction to containers
  Printing containers
  Filling containers
  Container disadvantage: unknown type
  Sometimes it works anyway
  Making a type-conscious ArrayList
  Parameterized types
  Iterators
  Unintended recursion
  Container taxonomy
  Collection functionality
  List functionality
  Making a stack from a LinkedList
  Making a queue from a LinkedList
  Set functionality
  SortedSet
  Map functionality
 >>Link: Map functionality \Map functionality
  Holding references
  The WeakHashMap
  Iterators revisited
  Choosing an implementation
  Choosing between Lists
  Choosing between Sets
  Choosing between Maps
  Sorting and searching Lists
  Utilities
  Making a Collection or Map unmodifiable
  Synchronizing a Collection or Map
  Fail fast
  Unsupported operations
  Java 1.0/1.1 containers
 >>Link: Java 1.0/1.1 containers \Java 1.0/1.1 containers
 Thinking in Java
 Bruce Eckel
 >>New Map
 The Java I/O System
 >>Link: Page-1\Thinking in Java\The Java I/O System
  The File class
  A directory lister
  Anonymous inner classes
  Checking for and creating directories
  Input and output
  Types of InputStream
  Types of OutputStream
  Adding attributes and useful interfaces
  Reading from an InputStream with FilterInputStream
  Writing to an OutputStream with FilterOutputStream
  Compression
  Java ARchives (JARs)
  Multifile storage with Zip
  Simple compression with GZIP
  Readers & Writers
  Unchanged Classes
  Modifying stream behavior
  Sources and sinks of data
  File reading & writing utilities
  Off by itself: RandomAccessFile
  Typical uses of I/O streams
 >>Link: Typical uses of I/O streams \Typical uses of I/O streams
  I/O
 >>Link: New I/O \Input/Output
  Object serialization
 >>Link: Object serialization \Object serialization
  Preferences
  Regular expressions
 >>Link: Regular expressions \Regular expressions
 Thinking in Java
 Bruce Eckel
 >>New Map
 Concurrency
 >>Link: Page-1\Thinking in Java\Concurrency
  Motivation
  Basic threads
 >>Link: Basic threads \Basic threads
  Sharing limited resources
 >>Link: Sharing limited resources \Sharing limited resources
  Thread states
  Becoming blocked
  Cooperation between threads
  More sophisticated cooperation
  Using Pipes for I/O between threads
  Wait and notify
  Deadlock
  The proper way to stop
  Interrupting a blocked thread
  Thread groups
 Thinking in Java
 Bruce Eckel
 >>New Map
 Creating Windows & Applets
 >>Link: Page-1\Thinking in Java\Creating Windows & Applets
  The basic applet
 >>Link: The basic applet \The basic applet
  Running applets from the command line
  A display framework
  Making a button
  Capturing an event
  Text areas
  Controlling layout
 >>Link: Controlling layout \Controlling layout
  The Swing event model
  Event and listener types
  Using listener adapters for simplicity
  Tracking multiple events
  A catalog of Swing components
 >>Link: A catalog of Swing components \A catalog of Swing components
  Packaging an applet into a JAR file
  Signing applets
  JNLP and Java Web Start
  Programming techniques
  A canonical form
  Separating business logic from UI logic
  Binding events dynamically
  Concurrency & Swing
  Runnable revisited
  Managing concurrency
  Visual programming and JavaBeans
 >>Link: Visual programming and JavaBeans \Visual programming and JavaBeans
 Thinking in Java
 Bruce Eckel
 >>New Map
 Discovering Problems
 >>Link: Page-1\Thinking in Java\Discovering Problems
  Unit Testing
  A Simple Testing Framework
  JUnit
  Improving reliability with assertions
  Using Assertions for Design by Contract
 >>Link: Comments and embedded documentation \Comments and embedded documentation \Some example tags \@version
  Relaxing DBC
  Postconditions
  Preconditions
  Check instructions
  Invariants
  Example: DBC + white-box unit testing
  Assertion syntax
  Building with Ant
 >>Link: Building with Ant \Building with Ant
  Logging
 >>Link: Logging \Logging
  Debugging
  Debugging with JDB
  Graphical debuggers
  Profiling and optimizing
 >>Link: Profiling and optimizing \Profiling and optimizing
  Doclets
 Thinking in Java
 Bruce Eckel
 >>New Map
 Analysis and Design
 >>Link: Page-1\Thinking in Java\Analysis and Design
  Methodology
  Phase 0: Make a plan
  The mission statement
  Phase 1: What are we making?
  Phase 2: How will we build it?
  Five stages of object design
  Guidelines for object development
  Phase 3: Build the core
  Phase 4: Iterate the use cases
  Phase 5: Evolution
  Plans pay off
  Extreme Programming
  Write tests first
  Pair programming
  Strategies for transition
  Management obstacles
  Common design errors
  Performance issues
  Startup costs
  Guidelines
  Don’t rewrite existing code in Java
  Model from success
  Low-risk project
  Training
  Use existing class libraries
 Thinking in Java
 Bruce Eckel
 >>New Map
 Passing & Returning Objects
 >>Link: Page-1\Thinking in Java\Passing & Returning Objects
  Passing references around
  Aliasing
  Making local copies
 >>Link: Making local copies \Making local copies
  Controlling cloneability
  The copy constructor
  Why does it work in C++ and not Java?
  Read-only classes
  The drawback to immutability
  Strings are special
  The String and StringBuffer classes
  Immutable Strings
  Implicit constants
  Overloading ‘+’ and the StringBuffer
  Creating read-only classes
 Thinking in Java
 Bruce Eckel
 >>New Map
 Supplements
 >>Link: Page-1\Thinking in Java\Supplements
  Foundations for Java seminar-on-CD
  Thinking in Java seminar
  Hands-On Java seminar-on-CD 3rd edition
  Designing Objects & Systems seminar
  Thinking in Enterprise Java
  The J2EE seminar
  Thinking in Patterns (with Java)
  Thinking in Patterns seminar
  Design consulting and reviews
 Thinking in Java
 Bruce Eckel
 >>New Map
 Comments and embedded documentation
 >>Link: 2: Everything is an Object \Everything is an Object \Comments and embedded documentation
  Documentation example
  Comment documentation
  Syntax
  Embedded HTML
  Some example tags
  {@link package.class#member label}
  {@docRoot}
  {@inheritDoc}
  @version
  @author
  @since
  @param
  @return
  @throws
  @deprecated
  @see: referring to other classes
 Thinking in Java
 Bruce Eckel
 >>New Map
 Using Java operators
 >>Link: Page-1\Thinking in Java\Controlling Program Flow \Using Java operators
  Precedence
  Assignment
  Aliasing during method calls
  Mathematical operators
  Regular expressions
  Unary minus and plus operators
  Auto increment and decrement
  Relational operators
  Testing object equivalence
  Logical operators
  Short-circuiting
  Bitwise operators
  Shift operators
  Ternary if-else operator
  The comma operator
  String operator +
  Common pitfalls when using operators
  Casting operators
  Literals
  Promotion
  Java has no “sizeof”
  Precedence revisited
  A compendium of operators
 Thinking in Java
 Bruce Eckel
 >>New Map
 Execution control
 >>Link: Page-1\Thinking in Java\Controlling Program Flow \Execution control
  if-else
  return
  Iteration
  do-while
  for
  The comma operator
  break and continue
  The infamous “goto”
  switch
  Calculation details
  true and false
 Thinking in Java
 Bruce Eckel
 >>New Map
 Inner classes
 >>Link: 8: Interfaces & Inner Classes \Interfaces & Inner Classes \Inner classes
  Inheriting from inner classes
  Inner classes in methods and scopes
  Can inner classes be overridden?
  Referring to the outer class object
  Inner class identifiers
  Nested classes
  Local inner classes
  Reaching outward from a multiply-nested class
  Inner classes and upcasting
  Anonymous inner classes
  The link to the outer class
 Thinking in Java
 Bruce Eckel
 >>New Map
 Arrays
 >>Link: 11: Collections of Objects \Collections of Objects \Arrays
  Arrays are first-class objects
  Containers of primitives
  The Arrays class
  Filling an array
  Copying an array
  Returning an array
  Comparing arrays
  Array element comparisons
  Sorting an array
  Searching a sorted array
  Array summary
 Thinking in Java
 Bruce Eckel
 >>New Map
 Java 1.0/1.1 containers
 >>Link: 11: Collections of Objects \Collections of Objects \Java 1.0/1.1 containers
  Vector & Enumeration
  Hashtable
  Stack
  BitSet
 Thinking in Java
 Bruce Eckel
 >>New Map
 Map functionality
 >>Link: 11: Collections of Objects \Collections of Objects \Map functionality
  SortedMap
  LinkedHashMap
  Hashing and hash codes
  Understanding hashCode( )
  HashMap performance factors
  Overriding hashCode( )
 Thinking in Java
 Bruce Eckel
 >>New Map
 Making local copies
 >>Link: A: Passing & Returning Objects \Passing & Returning Objects \Making local copies
  Pass by value
  Cloning objects
  Adding cloneability to a class
  Using a trick with protected
  Implementing the Cloneable interface
  Successful cloning
  The effect of Object.clone( )
  Cloning a composed object
  A deep copy with ArrayList
  Deep copy via serialization
  Adding cloneability farther down a hierarchy
  Why this strange design?
 Thinking in Java
 Bruce Eckel
 >>New Map
 Building with Ant
 >>Link: 15: Discovering Problems \Discovering Problems \Building with Ant
  Automate everything
  Problems with make
  Ant: the defacto standard
  Ant extensions
  Version control with CVS
  Daily builds
 Thinking in Java
 Bruce Eckel
 >>New Map
 Logging
 >>Link: 15: Discovering Problems \Discovering Problems \Logging
  Logging Levels
  LogRecords
  Handlers
  Multiple Handlers
  Writing your own Handlers
  Filters
  Formatters
  Example: Sending email to report log messages
  Controlling Logging Levels through Namespaces
  Logging Practices for Large Projects
  Suggested practices
  Rotating log files
  Configuration files
 Thinking in Java
 Bruce Eckel
 >>New Map
 Profiling and optimizing
 >>Link: 15: Discovering Problems \Discovering Problems \Profiling and optimizing
  Tracking memory consumption
  Tracking CPU usage
  Coverage testing
  JVM Profiling Interface
  Using HPROF
  Thread performance
  Optimization guidelines
 Thinking in Java
 Bruce Eckel
 >>New Map
 Visual programming and JavaBeans
 >>Link: 14: Creating Windows & Applets \Creating Windows & Applets \Visual programming and JavaBeans
  What is a JavaBean?
  Extracting BeanInfo with the Introspector
  A more sophisticated Bean
  JavaBeans and synchronization
  Packaging a Bean
  More complex Bean support
  More to Beans
 Thinking in Java
 Bruce Eckel
 >>New Map
 A catalog of Swing components
 >>Link: 14: Creating Windows & Applets \Creating Windows & Applets \A catalog of Swing components
  Buttons
  Button groups
  Icons
  Tool tips
  Text fields
  Borders
  JScrollPanes
  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
  Trees
  Tables
  Selecting Look & Feel
  The clipboard
 Thinking in Java
 Bruce Eckel
 >>New Map
 The basic applet
 >>Link: 14: Creating Windows & Applets \Creating Windows & Applets \The basic applet
  Applet restrictions
  Applet advantages
  Application frameworks
  Running applets inside a Web browser
  Using Appletviewer
  Testing applets
 Thinking in Java
 Bruce Eckel
 >>New Map
 Controlling layout
 >>Link: 14: Creating Windows & Applets \Creating Windows & Applets \Controlling layout
  BorderLayout
  FlowLayout
  GridLayout
  GridBagLayout
  Absolute positioning
  BoxLayout
  The best approach?
 Thinking in Java
 Bruce Eckel
 >>New Map
 Basic threads
 >>Link: 13: Concurrency \Concurrency \Basic threads
  Yielding
  Sleeping
  Priority
  Daemon threads
  Joining a thread
  Coding variations
  Creating responsive user interfaces
 Thinking in Java
 Bruce Eckel
 >>New Map
 Sharing limited resources
 >>Link: 13: Concurrency \Concurrency \Sharing limited resources
  Improperly accessing resources
  A resource testing framework
  Colliding over resources
  Resolving shared resource contention
  Synchronizing the EvenGenerator
  Atomic operations
  Fixing Semaphore
  Critical sections
 Thinking in Java
 Bruce Eckel
 >>New Map
 Regular expressions
 >>Link: 12: The Java I/O System \The Java I/O System \Regular expressions
  Creating regular expressions
  Quantifiers
  CharSequence
  Pattern and Matcher
  Pattern flags
  start( ) and end( )
  Groups
  find( )
  split( )
  Replace operations
  reset( )
  Regular expressions and Java I/O
  Is StringTokenizer needed?
 Thinking in Java
 Bruce Eckel
 >>New Map
 Object serialization
 >>Link: 12: The Java I/O System \The Java I/O System \Object serialization
  Finding the class
  Controlling serialization
  Versioning
  An alternative to Externalizable
  The transient keyword
  Using persistence
 Thinking in Java
 Bruce Eckel
 >>New Map
 Input/Output
 >>Link: 12: The Java I/O System \The Java I/O System \I/O
  New I/O
  File locking
  Locking portions of a mapped file
  Memory-mapped files
  Performance
  Buffer details
  Data manipulation with buffers
  View buffers
  Endians
  Fetching primitives
  Converting data
  Standard I/O
  Redirecting standard I/O
  Changing System.out to a PrintWriter
  Reading from standard input
 Thinking in Java
 Bruce Eckel
 >>New Map
 Typical uses of I/O streams
 >>Link: 12: The Java I/O System \The Java I/O System \Typical uses of I/O streams
  Input streams
  Buffered input file
  File output
  Formatted memory input
  Input from memory
  Output streams
  Reading and writing random access files
  Storing and recovering data
  Piped streams
 Thinking in Java
 Bruce Eckel