5 days Advanced Training in Java

Registrations are closed


The objective of this course is to help developers hone in very strong Object-Oriented and Functional Programming Skills using modern Java, to be able to apply automated testing techniques, and overall become better developers on the Java platform.

trainer Venkat Subramaniam 

 The objective of this course is to help developers hone in very strong Object-Oriented and Functional Programming Skills using modern Java, to be able to apply automated testing techniques, and overall become better developers on the Java platform. The topics covered include design principles, design patterns, functional programming, and automated testing.

The course has a good balance of interactive lectures and hands-on exercises. The attendees are expected to pair-up and work on the lab exercises. The instructor will assist the attendees as they work in the labs. The objective of the course is for the attendees to gain an in-depth practical knowledge of the concepts so they can put them to immediate use on their real projects.

  •  Code using the functional style in Java and apply style to other languages

  • Apply new Java 8 concepts

  •  Know when to use imperative vs. functional style

  • Prudently mix OO and functional concepts

  •  Discover and make good use of the new functional APIs

  • Good Practices, Principles, and Design Patterns

* SOLID Principles

* Honoring Encapsulation

* Keeping the code DRY

* Following SRP

* Powerful Design Patterns

* Exercises

  • Programming with Generics

* Using Generics

* Creating Generic Methods

* Creating Generic Classes

* Specifying Parameterized Types

* Generics, covariants, and contravariants

 * Generics—things to avoid

* Limitations of Generics

* Exercises

  • The Next Big Thing in Java

* The evolution of Java

* Major changes in the language

* What’s in it for you?

* Exercises

  • Starting with Lambda Expressions

* What are Lambda Expressions?

* Why change the way we think and code?

* The paradigm shift

* Benefits of the paradigm shift

* Adapting the functional style of programming

* Exercises

  • Thinking in Functional Style

* From imperative to functional style

* Change to everyday tasks

* Reading files and listing directories

* Iterating Strings

* Discovering declarative style

* Programming with immutability

* Evolving code in functional style

* Exercises

  • Using Method References

* Making the code concise and expressive

* When and how to use method references

* Dealing with ambiguity

* Exploring the Comparators

* Using fluent comparisons

* Exercises

  • Working with Collections

* Iterating lists

* Transforming lists

* Finding elements in a list

* Map and reduce operations on list

* Joining values

* Exercises

  • Design Patterns in Functional Style

* Change to common OO patterns when adapting functional style

* Patterns native to functional style

* Designing with lambda expressions

Agile Developer, Inc. http://www.agiledeveloper.com

* Using default methods

* Creating fluent interfaces

* Exercises

  • Function Composition

* Composing with functions

* Expressing problems using function composition

* Performance concerns

* Lazy evaluation

* Intermediate and terminal operations

* Programming with lazy collections

* Exercises

  • Exploiting Concurrency

* Concurrency as a master switch

* Turning operations into concurrent operations

* Words of caution

* Designing to exploit concurrency

* Exercises

  • Java 8 Idiomatic Style

* Idioms of programing

* Declarative Style as First Step

* Function pipeline pattern

* Vertically align dots

* Using Range to iterate

* Treat Lambdas as Glue Code

* Use method references where possible

* Prefer type inference over type specification

* Get used to cascading lambda

* Avoid shared mutability

* Keep lambdas pure

* Exercises

  • Refactoring to Functional Style

* Transitioning from Imperative Style

* How to approach

* Using range

* Using streams

* Using flatMap

* Using infinite streams

* Exercises

  • Automated Testing of Functional Style Code

* Functional Programming and Testing Benefits

* Challenges that lambdas and lazy evaluations introduce

 * Testing approaches and methods

* Writing Automated Tests

* Type of tests to write

* Checking for exceptions

* Reducing tests without compromising quality

* Dynamic tests

* Exercises

Programmers who are already familiar with Java but are keenly interested in learning about better software development practices, to learn about applying some design patterns, and to get deep understanding of functional programming using Java 8.

Date & Time
Monday
February 5, 2018
Start - 9:00 AM
Friday
February 9, 2018
End - 4:00 PM Europe/Tallinn
Location

DevTraining

Aia 7
Tallinn 10111
Estonia
+372 680 68 80
+372 56825958
train@devtraining.ee
Trainer

Venkat Subramaniam

--Venkat Subramaniam--
SHARE

Find out what people see and say about this event, and join the conversation.