Effective Java

מק"ט: #3822 | משך קורס: 24 שעות אק'

This course is based on the 2nd edition of the best selling "Effective Java" book by Joshua Bloch, Distinguished Engineer at Sun and Chief Java Architect at Google. The course teaches best practices of Java programming - how to write clear, robust and flexible programs that take advantage of the language features while avoiding known pitfalls.

The content of the course is up to date with Java SE 6.

הקורס פעיל לקבוצות מטעם ארגונים בלבד, ניתן לשלוח פנייה רק אם מדובר בקבוצה
*שדות חובה

קהל יעד

Beginners and experienced JavaSE developers


Upon completion of the course, participants will be able to:

  • Avoid common pitfalls of Java programming
  • Make the most of new Java features
  • Learn new styles and patterns of Java programming

תנאי קדם

Before attending this course, participants should have:

  • Experience in Java Programming (1 year)

משך הקורס

משך הקורס הינו 24 שעות


Module 1 - All about Objects

  • Object creation with Factories
  • Object creation with Builder
  • Singletons in Java
  • Comparing Objects: equals, Comparable, Comparator, hashCode
  • De-referencing and finalization
  • Cloning objects
  • Object serialization


Module 2 - Primitives and Strings

  • Boxing and un-boxing
  • Using float and double
  • Numeric overflows
  • String concatenation


Module 3 - Classes and methods

  • Minimize accessibility, mutability, scope
  • Accessor methods
  • Composition over inheritance
  • Design for inheritance
  • Using interfaces
  • Nested classes
  • Object initialization
  • Overloading
  • Varargs
  • Methods - best practices


Module 4 – Exceptions

  • Exception performance and use-cases
  • Checked vs. runtime exceptions
  • Standard exceptions
  • Leaky abstractions with exceptions
  • Documenting exceptions
  • Ensuring failure atomicity
  • Catching exceptions


Module 5 – Generics

  • Generics vs. raw types
  • Unchecked warnings
  • Lists vs. arrays
  • Generic types
  • Generic methods
  • Wildcards
  • Type tokens and heterogeneous containers


Module 6 - Enums and Annotations

  • Using enums
  • Enum ordinals
  • EnumSet and EnumMap
  • Enum extensibility with interfaces
  • Annotations use-cases
  • @Override annotation


Module 7 – Concurrency

  • Protect shared mutable data with synchronization
  • Synchronization price, alternatives
  • Executors and Tasks
  • Conditions and Barriers
  • Documenting thread-safety
  • Double-checked locking
  • Obsolete threading primitives