Effective Java

Course Number:



This course is appropriate for experience Java developers who want to improve the quality of their code and general knowledge of Java best practices.
Course Duration:
5 Days


At least 6 months of Java programming experience or a Java Bootcamp is required.

Course Objectives:
  • Chiefly, learn to program effectively in the Java language
  • Learn object creation best practices
  • Understand when to implement Object methods
  • Practice designing and implementing interfaces that encapsulate type
  • Learn scoping practices and principles like, “hide by convention, reveal by need”
  • Understand Generics and bounded wildcards better
  • Implement enums properly
  • Code Lamdas and Streams with purpose
  • Design better classes and methods
  • Eliminate improper syntax and practices from your code
  • Gain a deeper understanding of Exception best practices
  • Improve your concurrency paradigm
  • Rethink Serialization
Course Outline:
  • • Creating and Destroying Objects
    • Factories
    • Builders
    • Singleton with Enum
    • Obsolete References
    • Finalizers
  • Lessons for Common Methods
    • The equals contract
    • Overriding hashCode
    • Why toString
    • Options to clone
    • Comparables
  • Classes and Interfaces
    • Accessibility Concerns
    • Accessors and Mutators
    • Favor Composition Over Inheritance
    • Interfaces Over Abstract Classes
    • Interfaces as Types
    • Static vs non-Static
    • Code to the Interface, not the Implementation
  • Generics
    • Raw Types
    • Unchecked Warnings
    • Lists vs Arrays
    • Generic Types and Methods
    • Bounded WildCards
    • Typesafe Containers
    • TypeErrasure
  • Enums and Annotations
    • Enums vs constants
    • Instance Fields vs Oridinals
    • Annotations vs Naming Patterns
    • Extensible Enums
    • @Override
    • Marker Interfaces
  • Lambdas and Streams
    • Lambdas over Anonymous Classes
    • Method References vs Lambdas
    • Functional Interfaces
    • Judicious Use of Streams
    • Side-effect free functions
    • Collection vs Stream
    • Parallel Streams
  • Methods
    • Parameter Guidelines
    • Defensive Copies
    • Signatures Matter
    • Overloading
    • Varargs
    • Empty  Collections vs Null
    • Using Optional
    • Doc Comments
  • General Programming
    • Local Variables
    • For vs for-each loops
    • Libraries in 10 minutes a day
    • When float and double are trouble
    • To Box or Not To Box
    • Proper Strings
    • Naming Conventions
  • Exceptions
    • Exceptional Conditions
    • Checked vs Runtime Exceptions
    • Favor Standard Exceptions
    • Documenting Exceptions
    • Strive for Failure Atomoicity
    • Don’t Ignore Exceptions
  • Concurrency
    • Handling Shared Mutable Data
    • Executors, tasks and streams over threads
    • Avoiding wait and notify
    • Lazy Initialization
  • Serialization
    • Serialization Options
    • Defensive readObject methods
    • Consider Proxies

Related Posts

About Us

IT Training, Agile Ways of Working and High Impact Talent Development Strategies

Let Us Come to You!

Classes recently delivered in: Atlanta, Boston, Chicago, Columbus, Dallas, Detroit, Indianapolis, Jerusalem, London, Milan, New York, Palo Alto, Phoenix, Pittsburgh, Portland, Raleigh, San Antonio, San Diego, San Francisco, San Jose, Seattle, Springfield, Mass., St. Louis, Tampa and more!