T2941

Ladda ner som PDF

Effective Core Java

Take the next step in your career and become a serious Java developer! You will learn how to implement a number of design patterns and follow best practices in order to produce high quality code in terms of performance, maintainability and readability. Code examples/exercises will be presented in UML and correct robust Java code, complemented by a great number of predefined unit tests.

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 get a thorough understanding of the power of unit testing, thereby avoiding common errors and pitfalls. Core Java APIs will be covered in detail. The course expands on the many new features introduced in Java 8 such as the Date & Time API, functional programming using lambda expressions, enhanced interface definitions and the new Stream API. As an extra feature you will get an understanding of how to create modern concurrent applications using modern Java tools.

Audience

  • Java programmers who want to enhance his/her competence in Java programing aiming for producing robust code of great quality.
  • Developers having skills from a previous Java version, who need an update and want to get a deeper knowledge of the Java programing language and its core APIs.
  • Experienced C++ / C# programmers who want an introduction to Java at full speed!

Prior knowledge

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

Language

The course is taught in Swedish (Contact us if you prefer English).

Courseware

  • Copies of course slides

  • Complete code for all examples/exercises

Recommended reference literature:

- “Effective Java 2nd ed” Joshua Bloch

- “Java SE 8 for the Really Impatient” Cay S. Horstmann

Informator Training Cloud

Our training portal supports your development throughout the training. The portal saves you time and is designed to give you a more effective learning experience - leading to better results and greater knowledge enforcement after the course. Read more >

Note! The course in November will be held in English!

Hands-On

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.

Java 8

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

1. Unit Testing

  • Overview of unit testing
    * Test Framework Architecture
        - Design Pattern Composite
    * Basic Test Case
    * Test suite
    * Negative Tests
    * Data Driven Tests
    * Performance Tests
    * Code Coverage

2. Overriding Object Methods

  • equals
  • hashCode
  • toString
  • clone
  • finalize
  • Implementation of interface Comparable<T>

3. 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
    * Design Pattern Singleton
    * Design Pattern Builder
    * Utility Classes

4. Software Design – Interfaces

  • Class design
    * Interfaces defines contracts
    * Abstract Classes
    * Interface vs. Abstract class
  • Java 8 additions
    * Interfaces supporting static... Läs mer

Note! The course in November will be held in English!

Hands-On

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.

Java 8

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

1. Unit Testing

  • Overview of unit testing
    * Test Framework Architecture
        - Design Pattern Composite
    * Basic Test Case
    * Test suite
    * Negative Tests
    * Data Driven Tests
    * Performance Tests
    * Code Coverage

2. Overriding Object Methods

  • equals
  • hashCode
  • toString
  • clone
  • finalize
  • Implementation of interface Comparable<T>

3. 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
    * Design Pattern Singleton
    * Design Pattern Builder
    * Utility Classes

4. Software Design – Interfaces

  • Class design
    * Interfaces defines contracts
    * Abstract Classes
    * Interface vs. Abstract class
  • Java 8 additions
    * Interfaces supporting static methods
    * Interfaces supporting default methods
    * Default methods vs. Inheritance

5. 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
  • Using Formatter for textual output

6. Generics and Typesafe Collections

  • Generics
    * Parameterized types
    * Arrays vs. Generics
  • Type safety in collection classes
    * Erasure guarantees backwards compatibility

7. 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
  • 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
  • Java 8 enhancements to the Collections Framework

8. 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
  • Enum in Design Pattern State

9. Annotations

  • Annotation as a Java type
  • Rules for usage
  • Retention policies
  • Annotations usage in Java frameworks

10. Exception handling

  • Errors vs. Exceptions
  • Overview exceptions
    * Runtime exceptions
    * Checked exceptions
    * Chained exceptions
  • Exception handling using java.io
  • Exception usage best practice

11. Serialization

  • Serialization mechanism in Java
  • Customization of serialization
  • Externalizable for special purposes
  • Version handling for Serializable classes

12. Date & Time API

  • Scientific Time
    * Instant
    * Duration
  • Calendar Time
    * LocalTime, LocalDate, LocalDateTime
    * Period
  • Zone-based Calendar Time
    * ZoneID
    * ZonedDateTime
  • Formatting Date & Time

13. 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

14. The Streams API

  • Stream creation from existing sources
    * Arrays, Collections, Files
  • Iterations using stream operations
  • Streams using lambda expressions
  • Filtering, transforming and reducing streams
    * Optional<T> handling existing/missing return value
    * Collectors for statistics
    * Collectors for storing of output
  • Bulk operations for collections
    * Piping operations for enhanced performance
  • Enabling parallel processing of streams

15. Concurrency

  • Concurrency support for aggregates
    * Arrays supporting parallelism
    * Interface Collection added support for parallel streams
    * Interface Spliterator
    * Concurrent collections
  • Concurrent tools in Java
    * Basic thread programming
       - Thread, Runnable
  • Executor Framework
    * Executors, Callable, Future
  • Asynchronous signaling
    * CompletionService
  • Java 8 Enhancements
    * New types in java.util.atomic
    *ConcurrentHashMap improvements
    * CompletableFuture
"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." 
/ en nöjd deltagare 23/3-2016
Citat från tidigare deltagare
"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." 
/ en nöjd deltagare 23/3-2016
Citat från tidigare deltagare
"Tumme upp för två skärmar!" 
/ en nöjd deltagare 30/9-2015
Citat från tidigare deltagare
"Very good exercises with all unit tests! And everything worked without any problems." 
/ en nöjd deltagare 22/4-2015
Citat från tidigare deltagare
Kurs-ID: T2941
Längd: 4 dagar
Pris exkl moms: 31 450 kr

Frågor om kursen!?

Har du frågor om kursens innehåll, leveransdatum/ort eller behöver en företagsanpassad variant? Fyll i formuläret nedan!


Kan betalas med:
TRAINING CARD

Ort och datum

Stockholm
7 nov – 10 nov
Boka nu!
12 dec – 15 dec
Boka nu!
Göteborg
7 nov – 10 nov R
Boka nu!
12 dec – 15 dec R
Boka nu!
Malmö
7 nov – 10 nov R
Boka nu!
12 dec – 15 dec R
Boka nu!

Tipsa