Java 17 is an important milestone since this is slated as a long term support (LTS) release. Apart from this designation, more importantly, it is in Java 17 that we are starting to glimpse how the building blocks of earlier releases glue together to provide the pattern programming paradigms. Essentially, the "why" a particular feature/building block exists questions start finding the answers in this version. And this indeed is a huge step for Java as well as Java programmers.
Having read the specification at the evolution phases as a JSR member and then having implemented some of these language features in the Eclipse Java Compiler (ECJ) of Java Development Tools (JDT), I will be covering the features in detail alongwith a brief discussion of some changes in JVM specifications since the compiler at the end, produces the byte code and some of these features indeed had byte code changes - however, the discussion would just provide what an "ordinary" Java programmer would require and not for the byte-code-anlayser programmer. I may touch upon the non-compiler part of JDT only on a need basis for these features without delving too much into the details leaving that scope for another session.
Java 17 and 16 features would include Patterns - Array Patterns, Record Patterns, and Switch Patterns - these stand tall on some of the earlier building blocks of Records, Pattern InstanceOf, Sealed Types, and Switch Expressions. Each of these features will be explained with examples that would give insights into the feature - the building blocks will also be explained in the context of the new features. Time permitting, may touch upon additional features. Attendees are expected to have some prior programming experience with Java and no other pre-requisite is expected. After attending the session, attendees would have an overall understanding of the features discussed and would have an idea as to how and when to use them.