Kurs i Java Programmering Avancerad

Fördjupningskurs i Java programmering

Denna fördjupningskurs i Java, lär dig mer om språket och plattformen på djupet. Du får lära dig om lambda uttryck, stream pipelines, programmering av både fler-trådade och asynkront exekverade applikationer, använda moduler och mycket mera.
Detta får du lära dig
  • Lambda uttryck
  • Stream pipelines
  • Flertrådade applicationer
  • Asynkront exekverade applikationer
  • Designa system med moduler
  • Förstå JVM:en
  • Sökerhetsmodellen i Java
Kursinnehåll

The Java Time-Line

  • Versions
  • Language evolution
  • New version twice a year
  • Oracle Java goes commercial
  • End of $free updates
  • JVM implementation
  • Usage of OpenJDK
  • Using AdoptOpenJDK
  • Using SDKMAN to install Java

Using JShell

  • What is JShell
  • Simple usage
  • Built-in commands
  • Snippets
  • Usage within a Java program

Misc. Features of Java 9/.../12

  • Experimental features activation
  • Switch expressions
  • Automatic type inference
  • Script-mode invocation of single-file source
  • Using Java in a shell script
  • System logger
  • Applets R.I.P.

Functional Interfaces

  • Single Abstract Method (SAM)
  • FunctionalInterface annotation
  • Static method reference
  • Instance method reference
  • Constructor method reference
  • Static methods in interfaces
  • Default methods
  • Overview of java.lang.function
  • Naming rules for interfaces in java.lang.function
  • Language evolution of interfaces, Java 7,8,9

Lambda Expressions

  • What is a lambda expression
  • Basic syntax
  • Lambdas with more than a single expression
  • Capturing lambdas
  • Limitations of the type system

Java API Class Updates

  • Collection factory methods
  • Lambda oriented methods in java.util
  • Understanding Optional<T>

Pipeline Data Streams

  • What is a pipeline data stream
  • The anatomy of a pipeline
  • Stream classes
  • Stream sources
  • Bounded streams
  • Unbounded streams
  • Parallel streams
  • Aggregators
  • Numeric aggregators
  • Using method collect()
  • Using class Collectors
  • Using method reduce()
  • Filters
  • Mappers
  • Sorting

Classic Threads

  • What is a multi-threaded program
  • Simple threads
  • Thread local storage (TLS)
  • Interrupting a thread

Synchronization

  • The ATM problem
  • Critical sections
  • Three conditions for a critical section
  • Understanding synchronized in Java
  • The SWIFT problem
  • Data race
  • Event/condition synchronization
  • Understanding wait and notify/notifyAll

Deadlocks

  • What is a deadlock
  • The Werner & Werner problem
  • The Dining Philophers problem
  • Coffmans four conditions for deadlock

Concurrent Data Structures

  • Atomic variables
  • Read/write locks
  • Barriers
  • Thread-safe collections
  • Using class BlockingQueue

Executors

  • The benefit of using thread pools
  • Using class ExecutorService
  • Callable<T>
  • Future<T>
  • Periodic tasks

Fork-Join Concurrency

  • What is Fork-Join concurrency
  • Extending class RecursiveTask<T>

OS Processes

  • Obtaning OS process info
  • Listing OS processes
  • Setting up a OS process pipeline

Asynchronous Computation

  • Limitations of Future<T>
  • Limitations of call-backs
  • Interface CompletionStage<T>
  • Understanding class CompletableFuture<T>
  • Consuming the result
  • Trasforming the result
  • Dealing with exceptions
  • Handling multiple async chains
  • Practical samples
  • Extracting links from several web pages

HTTP Client

  • Overview of the new HTTP client
  • Synchronous and asynchronous invocations
  • Simple REST-WS client

Modules

  • What is the Java Platform Module System (JPMS)
  • Changes to your source code directory organization
  • The module-info descriptor
  • Java API modules
  • Creating a moduels based project
  • Packing modules into JAR files
  • Creating a shrink-wrapped JRE

Understanding the JVM

  • JVM options
  • Memeory heap
  • Leakage
  • Briefly understanding the GC
  • Using Visual VM
  • JVM JMX beans

Class Loading

  • How the JVM load classes
  • Understanding class ClassLoader
  • Class loader hierachy
  • Byte code verification
  • How to replace selected API classes

The Java Security Model

  • The Java sandbox model
  • The role of a security manager
  • Security policies
  • Policy file syntax
  • Using the policytool
  • Writing a custom security manager
SnabbFakta
NamnJava Programmering Avancerad
Längd3 Dagar
NivåAdvanced
MålgruppJava programmerare
Förkunskaper Praktiska kunskaper i Java programmering
Verktyg
  • Java JDK, version 11+
  • JetBrains IntelliJ IDEA
KursDatum
DatumPlatsPris
2019-10-28Stockholm19 000 kr
2019-11-11Stockholm 19 000 kr
2019-12-09Stockholm 19 000 kr

Samma-Företags Rabatt

Vi ger 20% rabatt för tillkommande deltagare från samma företag vid samma kurs-tillfälle. Läs mer här.

Företagsintern Kurs

Om du beställer en företagsintern kurs kommer vi till er och håller kursen i era lokaler. Priset bestäms av vår prismodell och baseras på antalet kursdagar, antalet deltagare, samt i förekommande fall resa och logi.

Läs mer om vår prismodell och beställningsvillkor här.

Relaterade Kurser
KursDagarNivå
Java Programmering5BeginnerVisa
Java Programmering Fördjupning3IntermediateVisa
Threads och Concurrency med Java2Advanced Visa
Java för REST webbtjänster3IntermediateVisa