SlideShare a Scribd company logo
Java 8 -12: da Oracle a Eclipse. Due anni e una rivoluzione
#TOPWorkshop
Java 8 - 12
0
1
2
3
4
5
6
7
a cura di Theodor Augustin Dumitrescu
Pleased to meet you
JDK Technical Roadmap and Licenses
Highlights JDK 9
Highlights JDK 10
Highlights JDK 11
Highlights JDK 12
OpenJDK Projects
Questions
#TOPWorkshop
Java 8 - 12
0
1
2
3
4
5
6
7
00
WHOAREWE?
00 - Pleased to meet you
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
00 - Theodor Augustin Dumitrescu
00
#TOPWorkshop
Java 8 - 12
0
1
2
3
4
5
6
7
01
JDKTechnicalRoadmapandLicenses
01.1 - JDK Technical Roadmap
01.2 - JDKs Greenwood
01.3 - Which JDK Binary
01.4 - From JavaEE to JakartaEE
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
01.1 - JDK Technical Roadmap
01.1
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
01.1 - JDK Technical Roadmap
01.1
Moving Java Forward Faster
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
01.1 - JDK Technical Roadmap
01.1
© Oracle
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
01.2 - JDKs Greenwood
01.2
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
01.3 - Which JDK Binary
01.3 ● java.oralce.com: traditional Oracle binary
○ Oracle Binary Code License
○ FoU restrictions
● jdk.java.net: OpenJDK binary
○ GPLv2 with CPE license
○ Security and bug fix updates only until next JDK release
● adoptopenjdk.net
○ OpenJDK binary based on HotSpot or OpenJ9
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
01.3 - Which JDK Binary
01.3
O
Java SE
OpenJDK
Oracle JDK
Java SE
and OpenJDK
Oracle JDK
Before JDK 11 Since JDK 11
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
01.4 - From JavaEE to JakartaEE
01.4
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
01 - Recaptiluation
01 ● A new LTS release every three years
○ this does not mean three years of free updates
● From JDK 11, the Oracle JDK can only be used in production with a commercial
support contract
○ the only free JDK 11 and later will be OpenJDK binaries
● to receive free updates to the JDK you must update your JDK every six months
● JDK 8 and older are still available completely free
○ but from January, without security patches and bug fixes
○ you have to pay an license for them
#TOPWorkshop
Java 8 - 12
0
1
2
3
4
5
6
7
02
02.1 - JMPS
02.2 - Onwards and compatibility
HighlightsJDK9
02.3- Jigsaw
02.4- JEPs
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
02.1 - JPMS
02.1
● JEP 220: Modular Run-Time Images
○ 75 OpenJDK modules
■ 27 Java SE modules + 48 JDK modules
○ 99 Oracle JDK
■ 75 + 14 additional + 8 for JavaFX + 2 Oracle specific
● JEP 260: Encapsulate Most Internal APIs
○ ie sun.misc.Unsafe
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
02.2 - Onwards and compatibility
02.2
“Clean applications that just depend on java.se should just work”
Oracle
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
02.2 JDK 9: the clean Up Starts
● deprecated APIs were removed for the first time
● redundant features eliminated
● significant command line changes
○ removed 187 --XX flags
02.2 - Onwards and compatibility
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
02.2
JDK 9: the clean Up Starts
● deprecated APIs were removed for the first time
○ six methods and one class
○ in JDK 11
■ Applets, Browser Plugin, Web Start, JavaFx
■ java.se.ee meta-module
● redundant features eliminated
● significant command line changes
○ removed 187 --XX flags
02.2 - Onwards and compatibility
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
02.2
“New versions of Java may include breaking changes” - Oracle
● anything for removal will be deprecated first
○ JEP 277 @Deprecated(forRemoval=true)
○ minimum of one release warning (just six months)
02.2 - Onwards and compatibility
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
02.3 - Jigsaw
02.3
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
02.3
module module {
requires requires;
exports exports;
}
02.3 - Jigsaw
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
02.3
public to everyone
public, but only to specific modules
public only within a module
protected
<package>
private
from JDK9 public != accessible
02.3 - Jigsaw
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
02.3
Your App
packages &
classes
JDK/javac
Your App package
distributable
Any JRE/JDK
JVM
Java
packages and
classes
compiles
creates
needs
torun
Pre-JDK9
02.3 - Jigsaw
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
02.3
Since JDK9
JDK
Your App
modules
JDK
modules
compiles
JLink creates
JVM
JDK
modules
Your App
modules
02.3 - Jigsaw
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
02.4 - JEP 222: jshell
02.4
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
02.4 - JEP 213: Milling Project Coin
02.4
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
02.4 - JEP 213: Milling Project Coin
02.4
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
02.4 - JEP 269: Convenience Factory
Methods for Collections
02.4
#TOPWorkshop
Java 8 - 12
0
1
2
3
4
5
6
7
03
HighlightsJDK10
03.1 - JEP 286 Local Variable Type
03.2 - JEPs
03.3 - Docker awareness
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
03.1 - JEP 286 Local Variable Type
03.1
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
03.2 - JEPs
03.2
● JEP 296: Consolidate JDK forests into single repo
● JEP 304: Garbage Collector Interface (Red Hat)
● JEP 307: Parallel Full GC for G1
● JEP 310: Application Class-Data Sharing
● JEP 312: Thread-Local Handshakes
● JEP 316: Heap allocation on alternative devices (Intel)
● JEP 317: Experimental Java-based JIT compiler (GraalVM)
● JEP 319: Root Certificates
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
03.3 - Docker awareness
03.3
● adhering to memory limits set in the container
● setting available cpus in the container
● setting cpu constraints in the container
● -XX:-UseContainerSupport
#TOPWorkshop
Java 8 - 12
0
1
2
3
4
5
6
7
04
HighlightsJDK11
04.1 - JEPs
04.1.1 - JEP 318: Epsilon GC
04.1.5 - JEP 330: Launch Single File
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
04.1 - JEPs
04
● 17 JEPs
● 3 from outside Oracle
○ JEP 315 Red Hat
○ JEP 318 Red Hat
○ JEP 331 Google
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
04.1.1 - JEP 318: Epsilon GC
04
● A non-collecting garbage collector
● When memory is exhausted JVM will exit
○ OutOfMemoryExpection
○ Heap dump
● Useful for
○ GC algorithm testing
○ Memory pressure testing
○ Short-lived latency sensitive tasks
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
04.1.2 - JEP 321: HTTP Client
04
● Incubator module for HTTP/2 support
○ java.net.http module and package
■ HttpClient
■ HttpRequest
■ HttpResponse
■ WebSocket
○ Synchronous and asynchronous
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
04.1.3 - JEP 323: Extend Local-Variable
Syntax
04
● list.stream().map(s -> s.toString())
● list.stream().map((var s) -> s.toString())
● list.stream().map((@Notnull var s) -> s.toString())
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
04.1.4 - JEP 327: Unicode 10 Support
04
● 8_518 new characters
○ Bitcoin symbol
○ Nishu
○ Soyombo, Zanabazar Square
● Colbert emoji
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
04.1.5 - JEP 330: Launch Single File
Source Code
04
● In JDK 10 Three modes for the Java launcher
○ Launch a class file
○ Launch the main class of a JAR file
○ Launch the main class of a module
● Since JDK 11
○ launch a class declared in a source file
■ $ java TopWorkshop.java arg1 argN
○ single file source code shebang
■ #!$JAVA_HOME/bin/java --source 11
■ $ ./TopWorkshop arg1 argN
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
04.1.6 - Other JEPs
● JEP 315: Improve Aarch64 intrinsics
● JEP 324: Ket Agreement with Curve25519 and Curve448
● JEP 329: ChaCha20 and Poly1305 Cryptographic Algorithms
● JEP 331: Low-Overhead HEap Profiling
● JEP 332: Transport Layer Security 1.3
● JEP 333: ZGC
● JEP 335: Deprecate the Nashorn JavaScript Engine
● JEP 336: Deprecate the Pack200 Tools and API
04
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
● New I/O methods
○ InputStream nullInputStream()
○ OutputStream nullOutputStream()
○ Reader nullReader()
○ Writer nullWriter()
● Optional
○ boolean isEmpty()
● Predicate
○ Predicate not(Predicate)
● Character
○ toString(int)
04
04.1.7 - New API
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
04.5
● New String methods
○ inBlack()
○ Stream lines()
○ String repeat()
○ String strip()
○ String stripLeading()
○ String stripTrailing()
04.1.7 - New API
#TOPWorkshop
Java 8 - 12
0
1
2
3
4
5
6
7
05
HighlightsJDK12
05.2 - JEP 325: Switch Expressions
05.1 - JEPs
05.3 - JEP 326: Raw string literals
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
05.1 - JEPs
● 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
● 230: Microbenchmark Suite
● 325: Switch Expressions (Preview)
● 334: JVM Constants API
● 340: One AArch64 Port, Not Two
● 341: Default CDS Archives
● 344: Abortable Mixed Collections for G1
● 346: Promptly Return Unused Committed Memory from G1
05.1
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
05.2 - JEP 325: Switch Expressions
T result = switch (arg) {
case L1, L2 -> e1;
case L3 -> e2;
default -> e3;
};
05.2
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
05.3 - JEP 326: Raw string literals
var daysInAWeekStr =
"Days in a week n" +
"tttSundayn" +
"tttMondayn" +
"tttTuesdayn" +
"tttWednesdayn" +
"tttThursdayn" +
"tttFridayn" +
"tttSaturdayn";
var daysInAWeekStr = `Days in a week
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday`.align();
05.3
#TOPWorkshop
Java 8 - 12
0
1
2
3
4
5
6
7
06 OpenJDkProjects
06.2 - Loom: continuations and fibers
06.1 - Amber: rightsizing language ceremony
06.3 - Panama: foreign-function/data interface
06.4 - Valhalla: value types and specialized generics
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
06.1 - Project Amber
● JEP 286 Local-Variable Type Inference (var) (JDK 10)
● JEP 301 Enhanced Enums
● JEP 305 Pattern Matching
● JEP 323 Local-Variable Syntax for Lambda Parameters (JDK 11)
● JEP 325 Switch Expressions (preview, JDK 12)
● JEP 326 Raw String Literals
● JEP 348 Java Compiler Intrinsics for JDK APIs
06.1
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
06.1 - Project Amber
final class Point {
public final int x;
public final int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
// state-based implementations of
equals, hashCode, toString
// nothing else
record Point(int x, int y);
06.1
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
06.2 - Project Loom
“The goal of this Project is to explore and incubate Java VM features and APIs built
on top of them for the implementation of lightweight user-mode threads (fibers),
delimited continuations (of some form), and related features, such as explicit
tail-call.” - OpenJDK
06.2
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
06.2 - Project Loom
06.2
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
06.3 - Project Panama
● native function calling from JVM (C, C++), specifically per JEP 191
○ jextract tool
● native data access from JVM or inside JVM heap
● new data layouts in JVM heap
● native metadata definition for JVM
● header file API extraction tools (see below)
● native library management APIs
● native-oriented interpreter and runtime “hooks”
● class and method resolution “hooks”
● native-oriented JIT optimizations
● tooling or wrapper interposition for safety
● exploratory work with difficult-to-integrate native libraries
06.3
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
06.4 - Project Valhalla
● Value Types
● Generic Specialization
● And possibly other related topics
06.4
#TOPWorkshop
Java 8 -12
0
1
2
3
4
5
6
7
(c) @mreinhold
06.4 - Project Valhalla
06.4
#TOPWorkshop
Java 8 - 12
0
1
2
3
4
5
6
7
Q&A
07 - Questions?
07

More Related Content

What's hot (20)

PDF
Advanced Oracle Troubleshooting
Hector Martinez
 
PDF
Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 2
Tanel Poder
 
PDF
Oracle Linux and Oracle Database - A Trusted Combination
Guatemala User Group
 
PDF
Dsi 11g convert_to RAC
Anil Kumar
 
PPTX
Moving Towards JDK 12
Simon Ritter
 
PPTX
Modern Java Workshop
Simon Ritter
 
PPTX
PostgreSQL and JDBC: striving for high performance
Vladimir Sitnikov
 
PPT
Cloug Troubleshooting Oracle 11g Rac 101 Tips And Tricks
Scott Jenner
 
PDF
Tanel Poder - Scripts and Tools short
Tanel Poder
 
PDF
Embedded systems
Katy Anton
 
PDF
A meta model supporting both hardware and smalltalk-based execution of FPGA c...
ESUG
 
PDF
De Java 8 a Java 17
Víctor Leonel Orozco López
 
PDF
2 P Seminar
Linkiby Belarus
 
PDF
openark-kit: MySQL utilities for everyday use
Shlomi Noach
 
PPTX
Oracle Database 12c - The Best Oracle Database 12c Tuning Features for Develo...
Alex Zaballa
 
PPTX
Flex Cluster e Flex ASM - GUOB Tech Day - OTN TOUR LA Brazil 2014
Alex Zaballa
 
PDF
配置Golden gate同步ddl语句
maclean liu
 
PDF
Improving PySpark Performance - Spark Beyond the JVM @ PyData DC 2016
Holden Karau
 
PDF
Code lifecycle in the jvm - TopConf Linz
Ivan Krylov
 
PPTX
Oracle real application clusters system tests with demo
Ajith Narayanan
 
Advanced Oracle Troubleshooting
Hector Martinez
 
Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 2
Tanel Poder
 
Oracle Linux and Oracle Database - A Trusted Combination
Guatemala User Group
 
Dsi 11g convert_to RAC
Anil Kumar
 
Moving Towards JDK 12
Simon Ritter
 
Modern Java Workshop
Simon Ritter
 
PostgreSQL and JDBC: striving for high performance
Vladimir Sitnikov
 
Cloug Troubleshooting Oracle 11g Rac 101 Tips And Tricks
Scott Jenner
 
Tanel Poder - Scripts and Tools short
Tanel Poder
 
Embedded systems
Katy Anton
 
A meta model supporting both hardware and smalltalk-based execution of FPGA c...
ESUG
 
De Java 8 a Java 17
Víctor Leonel Orozco López
 
2 P Seminar
Linkiby Belarus
 
openark-kit: MySQL utilities for everyday use
Shlomi Noach
 
Oracle Database 12c - The Best Oracle Database 12c Tuning Features for Develo...
Alex Zaballa
 
Flex Cluster e Flex ASM - GUOB Tech Day - OTN TOUR LA Brazil 2014
Alex Zaballa
 
配置Golden gate同步ddl语句
maclean liu
 
Improving PySpark Performance - Spark Beyond the JVM @ PyData DC 2016
Holden Karau
 
Code lifecycle in the jvm - TopConf Linz
Ivan Krylov
 
Oracle real application clusters system tests with demo
Ajith Narayanan
 

Similar to Java 8 -12: da Oracle a Eclipse. Due anni e una rivoluzione (20)

PDF
Preparing your code for Java 9
Deepu Xavier
 
PDF
Alive and Well with Java 8
Adam Pelsoczi
 
PDF
Whats new in Java 9,10,11,12
Rory Preddy
 
PPTX
Java n-plus-1-incl-demo-slides
Michel Schudel
 
PDF
Haj 4344-java se 9 and the application server-1
Kevin Sutter
 
PDF
Jozi-JUG JDK 9 Unconference
Heather VanCura
 
PPTX
Keeping Up with Java: Look at All These New Features!
VMware Tanzu
 
PDF
Java >= 9
Benjamin Pack
 
PPTX
DevNexus 2020: Discover Modern Java
Henri Tremblay
 
PPTX
New Features in JDK 8
Martin Toshev
 
PDF
Illia shestakov - The Future of Java JDK #9
Anna Shymchenko
 
PDF
JDK 11
Ilya Lapitan
 
PDF
Java 24 - The Key Updates You Need to Know.pdf
Oleh Melnyk
 
PDF
Java 23 and Beyond - A Roadmap Of Innovations
Ana-Maria Mihalceanu
 
PPTX
JDK 9, 10, 11 and Beyond
Simon Ritter
 
PDF
What's New in Java 9 KCDC
Billy Korando
 
PPTX
Migrating to Java 11
Arto Santala
 
PDF
JDKs 10 to 14 (and beyond)
Scott Leberknight
 
PPT
Java user group 2015 02-09-java8
Marc Tritschler
 
PPT
Java user group 2015 02-09-java8
marctritschler
 
Preparing your code for Java 9
Deepu Xavier
 
Alive and Well with Java 8
Adam Pelsoczi
 
Whats new in Java 9,10,11,12
Rory Preddy
 
Java n-plus-1-incl-demo-slides
Michel Schudel
 
Haj 4344-java se 9 and the application server-1
Kevin Sutter
 
Jozi-JUG JDK 9 Unconference
Heather VanCura
 
Keeping Up with Java: Look at All These New Features!
VMware Tanzu
 
Java >= 9
Benjamin Pack
 
DevNexus 2020: Discover Modern Java
Henri Tremblay
 
New Features in JDK 8
Martin Toshev
 
Illia shestakov - The Future of Java JDK #9
Anna Shymchenko
 
JDK 11
Ilya Lapitan
 
Java 24 - The Key Updates You Need to Know.pdf
Oleh Melnyk
 
Java 23 and Beyond - A Roadmap Of Innovations
Ana-Maria Mihalceanu
 
JDK 9, 10, 11 and Beyond
Simon Ritter
 
What's New in Java 9 KCDC
Billy Korando
 
Migrating to Java 11
Arto Santala
 
JDKs 10 to 14 (and beyond)
Scott Leberknight
 
Java user group 2015 02-09-java8
Marc Tritschler
 
Java user group 2015 02-09-java8
marctritschler
 
Ad

More from ThinkOpen (20)

PDF
Discover Facilitation: gestire le riunioni in modo efficace
ThinkOpen
 
PDF
Infrastructure as a code: a cloud approach
ThinkOpen
 
PDF
Smart Signage: la nuova digital experience
ThinkOpen
 
PDF
I Graph Database: analisi del comportamento degli utenti
ThinkOpen
 
PDF
2019: Odissea nell'e-commerce
ThinkOpen
 
PDF
Guida galattica a Javascript
ThinkOpen
 
PDF
Amazon Alexa vs Google Home. Quale scegliere? Funzionalità e usi
ThinkOpen
 
PDF
Amazon Web Services - Le potenzialità di AWS e il mondo di Amazon Alexa by Ni...
ThinkOpen
 
PPTX
Polymer 3.0 by Michele Gallotti
ThinkOpen
 
PDF
"Java 8, Lambda e la programmazione funzionale" by Theodor Dumitrescu
ThinkOpen
 
PDF
"Odoo: l'open source che fa tremare SAP" by Davide Davin e Nicola Napolitano
ThinkOpen
 
PDF
"Configuration Manager: il ruolo nel ciclo di vita del software" by Omar Rossini
ThinkOpen
 
PDF
"Google Home: how to make Google do it" by Theodor Dumitrescu e Gianfranco Bo...
ThinkOpen
 
PDF
"ThinkOpen Agile Days - #Day3" by Donato Andrisani e Giuseppe Trotta
ThinkOpen
 
PDF
"Reactive programming" by Theodor Dumitrescu & Gianfranco Bottiglieri
ThinkOpen
 
PDF
"GDPR: cos'è e come funziona" by Francesco Puglisi
ThinkOpen
 
PDF
"ThinkOpen Agile Days - #Day2" by Donato Andrisani e Giuseppe Trotta
ThinkOpen
 
PDF
"ThinkOpen Agile Days - #Day" by Giuseppe Trotta
ThinkOpen
 
PDF
"React Native" by Vanessa Leo e Roberto Brogi
ThinkOpen
 
PDF
"How to... React" by Luca Perna
ThinkOpen
 
Discover Facilitation: gestire le riunioni in modo efficace
ThinkOpen
 
Infrastructure as a code: a cloud approach
ThinkOpen
 
Smart Signage: la nuova digital experience
ThinkOpen
 
I Graph Database: analisi del comportamento degli utenti
ThinkOpen
 
2019: Odissea nell'e-commerce
ThinkOpen
 
Guida galattica a Javascript
ThinkOpen
 
Amazon Alexa vs Google Home. Quale scegliere? Funzionalità e usi
ThinkOpen
 
Amazon Web Services - Le potenzialità di AWS e il mondo di Amazon Alexa by Ni...
ThinkOpen
 
Polymer 3.0 by Michele Gallotti
ThinkOpen
 
"Java 8, Lambda e la programmazione funzionale" by Theodor Dumitrescu
ThinkOpen
 
"Odoo: l'open source che fa tremare SAP" by Davide Davin e Nicola Napolitano
ThinkOpen
 
"Configuration Manager: il ruolo nel ciclo di vita del software" by Omar Rossini
ThinkOpen
 
"Google Home: how to make Google do it" by Theodor Dumitrescu e Gianfranco Bo...
ThinkOpen
 
"ThinkOpen Agile Days - #Day3" by Donato Andrisani e Giuseppe Trotta
ThinkOpen
 
"Reactive programming" by Theodor Dumitrescu & Gianfranco Bottiglieri
ThinkOpen
 
"GDPR: cos'è e come funziona" by Francesco Puglisi
ThinkOpen
 
"ThinkOpen Agile Days - #Day2" by Donato Andrisani e Giuseppe Trotta
ThinkOpen
 
"ThinkOpen Agile Days - #Day" by Giuseppe Trotta
ThinkOpen
 
"React Native" by Vanessa Leo e Roberto Brogi
ThinkOpen
 
"How to... React" by Luca Perna
ThinkOpen
 
Ad

Recently uploaded (20)

PPTX
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PPT
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PDF
Human-centred design in online workplace learning and relationship to engagem...
Tracy Tang
 
PDF
Wojciech Ciemski for Top Cyber News MAGAZINE. June 2025
Dr. Ludmila Morozova-Buss
 
PDF
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
PDF
TrustArc Webinar - Data Privacy Trends 2025: Mid-Year Insights & Program Stra...
TrustArc
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PDF
Complete Network Protection with Real-Time Security
L4RGINDIA
 
PDF
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
PDF
Blockchain Transactions Explained For Everyone
CIFDAQ
 
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
Human-centred design in online workplace learning and relationship to engagem...
Tracy Tang
 
Wojciech Ciemski for Top Cyber News MAGAZINE. June 2025
Dr. Ludmila Morozova-Buss
 
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
TrustArc Webinar - Data Privacy Trends 2025: Mid-Year Insights & Program Stra...
TrustArc
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
Complete Network Protection with Real-Time Security
L4RGINDIA
 
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
Blockchain Transactions Explained For Everyone
CIFDAQ
 

Java 8 -12: da Oracle a Eclipse. Due anni e una rivoluzione

  • 2. #TOPWorkshop Java 8 - 12 0 1 2 3 4 5 6 7 a cura di Theodor Augustin Dumitrescu Pleased to meet you JDK Technical Roadmap and Licenses Highlights JDK 9 Highlights JDK 10 Highlights JDK 11 Highlights JDK 12 OpenJDK Projects Questions
  • 3. #TOPWorkshop Java 8 - 12 0 1 2 3 4 5 6 7 00 WHOAREWE? 00 - Pleased to meet you
  • 4. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 00 - Theodor Augustin Dumitrescu 00
  • 5. #TOPWorkshop Java 8 - 12 0 1 2 3 4 5 6 7 01 JDKTechnicalRoadmapandLicenses 01.1 - JDK Technical Roadmap 01.2 - JDKs Greenwood 01.3 - Which JDK Binary 01.4 - From JavaEE to JakartaEE
  • 6. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 01.1 - JDK Technical Roadmap 01.1
  • 7. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 01.1 - JDK Technical Roadmap 01.1 Moving Java Forward Faster
  • 8. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 01.1 - JDK Technical Roadmap 01.1 © Oracle
  • 10. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 01.3 - Which JDK Binary 01.3 ● java.oralce.com: traditional Oracle binary ○ Oracle Binary Code License ○ FoU restrictions ● jdk.java.net: OpenJDK binary ○ GPLv2 with CPE license ○ Security and bug fix updates only until next JDK release ● adoptopenjdk.net ○ OpenJDK binary based on HotSpot or OpenJ9
  • 11. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 01.3 - Which JDK Binary 01.3 O Java SE OpenJDK Oracle JDK Java SE and OpenJDK Oracle JDK Before JDK 11 Since JDK 11
  • 12. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 01.4 - From JavaEE to JakartaEE 01.4
  • 13. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 01 - Recaptiluation 01 ● A new LTS release every three years ○ this does not mean three years of free updates ● From JDK 11, the Oracle JDK can only be used in production with a commercial support contract ○ the only free JDK 11 and later will be OpenJDK binaries ● to receive free updates to the JDK you must update your JDK every six months ● JDK 8 and older are still available completely free ○ but from January, without security patches and bug fixes ○ you have to pay an license for them
  • 14. #TOPWorkshop Java 8 - 12 0 1 2 3 4 5 6 7 02 02.1 - JMPS 02.2 - Onwards and compatibility HighlightsJDK9 02.3- Jigsaw 02.4- JEPs
  • 15. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 02.1 - JPMS 02.1 ● JEP 220: Modular Run-Time Images ○ 75 OpenJDK modules ■ 27 Java SE modules + 48 JDK modules ○ 99 Oracle JDK ■ 75 + 14 additional + 8 for JavaFX + 2 Oracle specific ● JEP 260: Encapsulate Most Internal APIs ○ ie sun.misc.Unsafe
  • 16. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 02.2 - Onwards and compatibility 02.2 “Clean applications that just depend on java.se should just work” Oracle
  • 17. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 02.2 JDK 9: the clean Up Starts ● deprecated APIs were removed for the first time ● redundant features eliminated ● significant command line changes ○ removed 187 --XX flags 02.2 - Onwards and compatibility
  • 18. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 02.2 JDK 9: the clean Up Starts ● deprecated APIs were removed for the first time ○ six methods and one class ○ in JDK 11 ■ Applets, Browser Plugin, Web Start, JavaFx ■ java.se.ee meta-module ● redundant features eliminated ● significant command line changes ○ removed 187 --XX flags 02.2 - Onwards and compatibility
  • 19. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 02.2 “New versions of Java may include breaking changes” - Oracle ● anything for removal will be deprecated first ○ JEP 277 @Deprecated(forRemoval=true) ○ minimum of one release warning (just six months) 02.2 - Onwards and compatibility
  • 21. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 02.3 module module { requires requires; exports exports; } 02.3 - Jigsaw
  • 22. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 02.3 public to everyone public, but only to specific modules public only within a module protected <package> private from JDK9 public != accessible 02.3 - Jigsaw
  • 23. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 02.3 Your App packages & classes JDK/javac Your App package distributable Any JRE/JDK JVM Java packages and classes compiles creates needs torun Pre-JDK9 02.3 - Jigsaw
  • 24. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 02.3 Since JDK9 JDK Your App modules JDK modules compiles JLink creates JVM JDK modules Your App modules 02.3 - Jigsaw
  • 26. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 02.4 - JEP 213: Milling Project Coin 02.4
  • 27. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 02.4 - JEP 213: Milling Project Coin 02.4
  • 28. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 02.4 - JEP 269: Convenience Factory Methods for Collections 02.4
  • 29. #TOPWorkshop Java 8 - 12 0 1 2 3 4 5 6 7 03 HighlightsJDK10 03.1 - JEP 286 Local Variable Type 03.2 - JEPs 03.3 - Docker awareness
  • 30. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 03.1 - JEP 286 Local Variable Type 03.1
  • 31. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 03.2 - JEPs 03.2 ● JEP 296: Consolidate JDK forests into single repo ● JEP 304: Garbage Collector Interface (Red Hat) ● JEP 307: Parallel Full GC for G1 ● JEP 310: Application Class-Data Sharing ● JEP 312: Thread-Local Handshakes ● JEP 316: Heap allocation on alternative devices (Intel) ● JEP 317: Experimental Java-based JIT compiler (GraalVM) ● JEP 319: Root Certificates
  • 32. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 03.3 - Docker awareness 03.3 ● adhering to memory limits set in the container ● setting available cpus in the container ● setting cpu constraints in the container ● -XX:-UseContainerSupport
  • 33. #TOPWorkshop Java 8 - 12 0 1 2 3 4 5 6 7 04 HighlightsJDK11 04.1 - JEPs 04.1.1 - JEP 318: Epsilon GC 04.1.5 - JEP 330: Launch Single File
  • 34. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 04.1 - JEPs 04 ● 17 JEPs ● 3 from outside Oracle ○ JEP 315 Red Hat ○ JEP 318 Red Hat ○ JEP 331 Google
  • 35. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 04.1.1 - JEP 318: Epsilon GC 04 ● A non-collecting garbage collector ● When memory is exhausted JVM will exit ○ OutOfMemoryExpection ○ Heap dump ● Useful for ○ GC algorithm testing ○ Memory pressure testing ○ Short-lived latency sensitive tasks
  • 36. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 04.1.2 - JEP 321: HTTP Client 04 ● Incubator module for HTTP/2 support ○ java.net.http module and package ■ HttpClient ■ HttpRequest ■ HttpResponse ■ WebSocket ○ Synchronous and asynchronous
  • 37. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 04.1.3 - JEP 323: Extend Local-Variable Syntax 04 ● list.stream().map(s -> s.toString()) ● list.stream().map((var s) -> s.toString()) ● list.stream().map((@Notnull var s) -> s.toString())
  • 38. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 04.1.4 - JEP 327: Unicode 10 Support 04 ● 8_518 new characters ○ Bitcoin symbol ○ Nishu ○ Soyombo, Zanabazar Square ● Colbert emoji
  • 39. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 04.1.5 - JEP 330: Launch Single File Source Code 04 ● In JDK 10 Three modes for the Java launcher ○ Launch a class file ○ Launch the main class of a JAR file ○ Launch the main class of a module ● Since JDK 11 ○ launch a class declared in a source file ■ $ java TopWorkshop.java arg1 argN ○ single file source code shebang ■ #!$JAVA_HOME/bin/java --source 11 ■ $ ./TopWorkshop arg1 argN
  • 40. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 04.1.6 - Other JEPs ● JEP 315: Improve Aarch64 intrinsics ● JEP 324: Ket Agreement with Curve25519 and Curve448 ● JEP 329: ChaCha20 and Poly1305 Cryptographic Algorithms ● JEP 331: Low-Overhead HEap Profiling ● JEP 332: Transport Layer Security 1.3 ● JEP 333: ZGC ● JEP 335: Deprecate the Nashorn JavaScript Engine ● JEP 336: Deprecate the Pack200 Tools and API 04
  • 41. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 ● New I/O methods ○ InputStream nullInputStream() ○ OutputStream nullOutputStream() ○ Reader nullReader() ○ Writer nullWriter() ● Optional ○ boolean isEmpty() ● Predicate ○ Predicate not(Predicate) ● Character ○ toString(int) 04 04.1.7 - New API
  • 42. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 04.5 ● New String methods ○ inBlack() ○ Stream lines() ○ String repeat() ○ String strip() ○ String stripLeading() ○ String stripTrailing() 04.1.7 - New API
  • 43. #TOPWorkshop Java 8 - 12 0 1 2 3 4 5 6 7 05 HighlightsJDK12 05.2 - JEP 325: Switch Expressions 05.1 - JEPs 05.3 - JEP 326: Raw string literals
  • 44. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 05.1 - JEPs ● 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental) ● 230: Microbenchmark Suite ● 325: Switch Expressions (Preview) ● 334: JVM Constants API ● 340: One AArch64 Port, Not Two ● 341: Default CDS Archives ● 344: Abortable Mixed Collections for G1 ● 346: Promptly Return Unused Committed Memory from G1 05.1
  • 45. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 05.2 - JEP 325: Switch Expressions T result = switch (arg) { case L1, L2 -> e1; case L3 -> e2; default -> e3; }; 05.2
  • 46. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 05.3 - JEP 326: Raw string literals var daysInAWeekStr = "Days in a week n" + "tttSundayn" + "tttMondayn" + "tttTuesdayn" + "tttWednesdayn" + "tttThursdayn" + "tttFridayn" + "tttSaturdayn"; var daysInAWeekStr = `Days in a week Sunday Monday Tuesday Wednesday Thursday Friday Saturday`.align(); 05.3
  • 47. #TOPWorkshop Java 8 - 12 0 1 2 3 4 5 6 7 06 OpenJDkProjects 06.2 - Loom: continuations and fibers 06.1 - Amber: rightsizing language ceremony 06.3 - Panama: foreign-function/data interface 06.4 - Valhalla: value types and specialized generics
  • 48. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 06.1 - Project Amber ● JEP 286 Local-Variable Type Inference (var) (JDK 10) ● JEP 301 Enhanced Enums ● JEP 305 Pattern Matching ● JEP 323 Local-Variable Syntax for Lambda Parameters (JDK 11) ● JEP 325 Switch Expressions (preview, JDK 12) ● JEP 326 Raw String Literals ● JEP 348 Java Compiler Intrinsics for JDK APIs 06.1
  • 49. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 06.1 - Project Amber final class Point { public final int x; public final int y; public Point(int x, int y) { this.x = x; this.y = y; } // state-based implementations of equals, hashCode, toString // nothing else record Point(int x, int y); 06.1
  • 50. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 06.2 - Project Loom “The goal of this Project is to explore and incubate Java VM features and APIs built on top of them for the implementation of lightweight user-mode threads (fibers), delimited continuations (of some form), and related features, such as explicit tail-call.” - OpenJDK 06.2
  • 52. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 06.3 - Project Panama ● native function calling from JVM (C, C++), specifically per JEP 191 ○ jextract tool ● native data access from JVM or inside JVM heap ● new data layouts in JVM heap ● native metadata definition for JVM ● header file API extraction tools (see below) ● native library management APIs ● native-oriented interpreter and runtime “hooks” ● class and method resolution “hooks” ● native-oriented JIT optimizations ● tooling or wrapper interposition for safety ● exploratory work with difficult-to-integrate native libraries 06.3
  • 53. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 06.4 - Project Valhalla ● Value Types ● Generic Specialization ● And possibly other related topics 06.4
  • 54. #TOPWorkshop Java 8 -12 0 1 2 3 4 5 6 7 (c) @mreinhold 06.4 - Project Valhalla 06.4
  • 55. #TOPWorkshop Java 8 - 12 0 1 2 3 4 5 6 7 Q&A 07 - Questions? 07