Visa som: Mobil

Effective Core Java

Kort om utbildningen
4 dagar
Företagsanpassad utbildning


Effective Core Java focuses on the huge steps taken in modern Java technology, now supporting functional programming by introducing lambda expressions widely used in the core APIs and as the basis for the new Streams API.

The course adheres to the guide lines defined by Joshua Bloch in ”Effective Java”, and systematically covers a number of areas within software development using core Java APIs. You will learn how to follow best practices in order to produce high quality code in terms of performance, maintainability and readability.

Core Java APIs will be covered in detail. The course expands on the many new features introduced in Java 8/9/10 e.g. the Date & Time API, functional programming, enhanced interface definitions and the new Stream API. As an extra feature you will get an introduction to creating concurrent applications using modern Java tools.

Code examples/exercises will be presented in UML and correct robust Java code, complemented by a great number of predefined unit tests.

Basic knowledge of Java or experienced C++ or C# programmers.

  • Digital copy of course slides

  • Complete code for all examples/exercises

Recommended reference literature:

“Effective Java 3rd ed” Joshua Bloch

  • Java programmers/testers who want to enhance their skills in modern Java programming aiming for producing robust code of great quality.

  • Developers having experience from a previous Java version, who need an update and want to get a deeper knowledge of the Java programming language and its core APIs.

  • Experienced C++ / C# programmers who want an introduction to Java at full speed!


Every chapter is backed by complete examples that are ready to run. In addition there are a number of exercises that will be addressed and discussed during the course. All Java code, examples and solutions, will be part of the documentation available for participants.


  1. Unit Testing
  • Overview of unit testing
    • Test Framework Architecture
    • Basic Test Case
    • Test suite
    • Negative Tests
    • Data Driven Tests
    • Performance Tests
    • Code Coverage
  1. Overriding Object Methods
  • Object class methods
    • equals
    • hashCode
    • toString
    • clone
    • finalize
  • Implementation of interface Comparable
  1. Exception handling
  • Errors vs. Exceptions
  • Overview exceptions
    • Runtime exceptions
    • Checked exceptions
    • Chained exceptions
  • Exception handling best practice
  1. Software Design - Classes
  • Level of access
    • Public methods  and private attributes
    • Immutable classes – value classes
  • Class design
    • Inheritance vs. composition
  • Nested classes
    • Static classes
    •  Inner classes
    • Anonymous classes
    • Local classes
  • Creating and destroying objects
    • Static factory methods vs. constructors
    • Utility Classes
  1. Software Design – Interfaces
  • Class design
    • Interfaces defines contracts
    • Abstract Classes
    • Interface vs. Abstract class
  • Enhanced Java interfaces
    • Interfaces supporting static methods
    • Interfaces supporting private methods
    • Interfaces supporting default methods
    • default methods vs. Inheritance
  1. General Programming Concepts
  • Know the core Java APIs
  • Avoid floating point types for exact calculations
  • Performance for wrapper classes vs. primitive types
  • Performance issues for String
  • Validating method arguments
  • Defensive copying of return values
  • Avoid returning null
  • Annotations vs. Naming Patterns
  • Using Format for textual output
  1. Generics and Typesafe Collections
  • Generics
    • Parameterized types
    • Arrays vs. Generics
  • Type safety in collection classes
    • Erasure guarantees backwards compatibility
  1. The Collections Framework in Detail
  • Basic interfaces
    • Iterable, Collection
    • List, Set, Queue
  • Basic implementation classes
    • ArrayList, HashSet, LinkedList
  • Iterator vs. for:each-loop
  • Interfaces defining comparison criteria
    • Comparable, Comparator
  • Specialized interfaces
    • Deque, SortedSet, NavigableSet
  • Implementation classes for specialized interfaces
    • ArrayDeque, PriorityQueue, TreeSet
    • Static factory methods for Collections
  • Interfaces defining associative data structures
    • Map, SortedMap, NavigableMap
  • Implementation classes for Maps
    • HashMap, TreeMap
  • Performance aspects for implementation classes
  • Utility classes Arrays and Collections
  • Special Collection classes
    • LinkedHashSet, LinkdedHashMap, WeakHashMap
  • Modern Java enhancements to the Collections Framework
    • static and default methods throughout the API
  1. Enums
  • Enum defining named constants
  • Enum as a Java type defining attributes and methods
  • Enum comparison pattern
  • Collection classes using Enum based keys
    • EnumSet, EnumMap
  1. Optional
  • Optional a safe wrapper for return values
    • Static factory for wrapping any type in an Optional
    • Prepared for empty return value
      • Eliminates the need for returning null
  • Optional handling existing/missing return value
    • Supporting default values
    • Supporting suppliers
  • Optional prepared for the Streams API
    • Supporting empty streams
    • Supporting streams of Optional
  1. Serialization
  • Serialization mechanism in Java
    • Version handling for Serializable classes
  • Customization of serialization
    • Producing your own protocol
  • Deserialization Filters
    • Guarding an application against overload attacks
  1. Lambda Expressions
  • Functional programming using lambda expressions
    • Syntax for Lambda Expressions
    • Deferred execution
    • Capture of variables
  • Functional Interfaces
    • Built in support in Java APIs
  • Predefined Interfaces supporting Lambda Expressions
    • Function
      • Operator
    • Supplier
    • Consumer
    • Predicate
  • Exception handling in lambda expressions
  • Method references
  1. Date & Time API
  • Scientific Time
    • Instant
    • Duration
  • Calendar Time
    • LocalTime, LocalDate, LocalDateTime
    • Period
  • Zone-based Calendar Time
    • ZoneID
    • ZonedDateTime
  • Formatting Date & Time
  1. The Streams API
  • Stream creation from existing sources
    • Arrays, Collections, Files
  • Iterations using stream operations
  • Streams supporting use of lambda expressions
  • Filtering, transforming and reducing streams
    • Collectors for statistics
    • Collectors for storing of output in List/Set
    • Grouping output in Map using keyMapper/valueMapper
    • Combining input from multiple sources using flatMap
    • Producing output from a Map using BiConsumer
  • Bulk operations for collections
    • Piping operations for enhanced performance
  • Enabling parallel processing of streams
  1. Concurrency
  • Concurrent tools in Java
    • Basic thread programming
      • Thread, Runnable
  • Executor Framework
    • Executors, Callable, Future
  • Asynchronous signaling
    • CompletionService
  • Modern Java Enhancements
    • New types in java.util.atomic
    • ConcurrentHashMap improvements
    • CompletableFuture supporting Supplier and Consumer
  • Concurrency support for aggregates
    • Arrays supporting parallelism
    • Interface Collection added support for parallel streams
    • Interface Spliterator

Vad tycker våra kursdeltagare

"Very good approach of "put your code here" as it will stay us focused on the new stuff. Good to work towards testcases, test driven education ;) Thanks! Will recommend to others within Ericsson."  "This training is very good for me, I learnt a lot Java 1.8 new futures and how to use them effectively. Thank you very much for your good instruction and patient explanation for my questions."  "Tumme upp för två skärmar!"  "Very good exercises with all unit tests! And everything worked without any problems." 


Fyll i formuläret för att få mer information om Effective Core Java, direkt från arrangören. Det är gratis och inte bindande!




Informator är utbildningsföretaget som stärker din konkurrenskraft genom att underhålla, uppdatera och tillföra relevant kunskap inom IT och management där och när du behöver det. Vi har vuxit tillsammans med svensk mjukvaruindustris ledande företag och utbildat utvecklare, tekniker, projektledare och chefer sedan...

Läs mer om Informator och visa alla utbildningar.



Karlavägen 108
115 26 Stockholm

 Visa telefonnummer

Bli den första att recensera Effective Core Java!

Baseras på 712 recensioner.
Alla recensioner för arrangören