Beskrivning
The course kicks off with a full day focusing on Concurrent Programming. This subject stretches from a brief introduction of the basic implementation of low level Threads, lingering over the Executor Framework, with its vast number of concepts, to the enhancements provided by the introduction of lambda expressions and the Streams API in Java.
The second day of the course will cover numerous Design Patterns used heavily in the core Java APIs and of course frequent in complex applications. We will cover main parts of the
classical Design Patterns catalogue, but also introduce some new additions such as DRY, SOLID etc. Some patterns have gained considerably from the introduction of generics and the support of functional programming in modern Java. We will check out these possibilities!
State Machines are gaining more and more interest as digitalization moves on into almost every electronic device in our lives. In Java, state machines can easily be designed following a robust pattern implemented using modern Java technology.
Day three will cover some of the latest additions to the Java programming language. Modules in Java offer a new level of packaging and supports customization of deliverables needed for running an application.
Performance issues will always be important for complex applications. W will have a look at the Java Flight Recorder and Java Mission Control that now are fully available measuring
behavior of your applications.
Both the aforementioned parts are crucial when you set out to build a library. Apart from the pure technical aspects there are some other issues you have to address in order to deliver a library to please your potential clients.
Finally we take a look into the crystal ball, checking up what lies in the near future in the Java evolution, revealing features that will appear in upcoming Java releases.
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.
Documentation
- Digital copy of course slides
- Complete code for all examples/exercises
Contents:
1. Threads
 Sequential vs. parallel processing of data
o Utilizing available resources efficiently
o Order of output may differ from order of output
 Introduction to basic Thread programming
o Interface Runnable and class Thread
o synchronized code
o Thread Lifecycle
o Concurrent programming pitfalls
 Case Study – A Storage
o Consumer-Producer using low level Thread interaction
2. Concurrent Collections
 Concurrent Collections in Java
o CopyOnWriteArrayList
o ConcurrentHashMap
o BlockingQueue
o CountDownLatch
 Case Study – A Blocking Storage
o Consumer-Producer using a BlockingQueue
3. Executor Framework
 Executor Framework
o Callable, Future
 Replacing Runnable
o Executors
 SingleThreadExecutor
 FixedThreadPool
 CachedThreadPool
 Asynchronous signaling
o CompletionService
4. Concurrent Streams
 Concurrency in the Streams API
o stream() vs. parallelStream()
o Interface Spliterator
 CompletableFuture
o Supporting Executors using Supplier and Consumer
 Concurrency support for aggregates
o Arrays supporting parallelism
o ConcurrentHashMap improvements
5. Modern Software Patterns
 Object Oriented Development
o Design Patterns – The Catalogue
o MVC – Model View Controller
 General Advice Patterns
o SOLID
o Dependency Injection
o DRY
6. Modern Java Design Patterns
 Modern Java Creational Patterns
o Singleton
o Builder
o Factory Method
 Modern Java Structural Patterns
o Adapter
o Composite
o Case Study – Library using Generic Composite
 Enhanced pattern using Generics
o Decorator
 Modern Java Behavioral Patterns
7. State Machines
 FSM – Finite State Machine
o Supporting fixed number of states
o Separating Context from FSM
o Supporting multiple parallel FSMs
 Implementing FSM using Design Pattern State
o FSM as a shallow inheritance hierarchy
 Abstract top class defines common behavior
 Defining events as Enums
 Derived classes model individual states
 Singleton pattern applied
 Modeling support
o State Table covering all combinations of Events and States
o UML State Diagram, Class Diagram, Object Diagram
 Case Study – Construction Elevator
o Expanding existing FSM with new states/events
 HSM – Hierarchical State Machine
o Defining layers of state machines
o Dependent state machine designed as a pluggable component
 Case study – ATM
o Basic states of the ATM has a connection to dependent FSM
o PINFSM used as an independent component
8. Performance
 General aspects of performance tuning
o Footprint vs. execution speed
 G1 GC – The new default Java Garbage Collector
o Configuration and behavior
 JFR – Java Flight Recorder
o Setting up a JFR session
 JMC – Java Mission Control
o Presenting recordings produced by the JFR
9. Modules
 What are Modules?
o A new packaging level in Java
 Why Modules?
o Packaging limitations in classic Java
o JAR problems
 Modules grammar
o Special keywords reserved for use in module declarations
 module
 open, require, transitive, exports, opens, to uses, provides, with
o Observable modules
 Available for other parts of Java code to use and call
o Internal modules
 Required by module parts but not accessible for other code
10. Building a Library
 Types of libraries
o Broad and Shallow vs. Narrow and Deep
 Library technical design
o Internal Modules
o Observable Modules
 The Library API
o Documentation
11. Java in the Future
 Project Amber
o Small syntax feature enhancements in Java
 Project Valhalla
o Supporting value types in Java
 Project Panama
o Supporting native code calls
 Project Loom
o Introducing Fibers for enhanced concurrency performance
 
                        







 
                        
                      
Recensioner
Det finns inga recensioner än.