Talk de Simon Ritter @speakjava, CTO Azul system.
Abstract
The new six-month release cadence for the JDK has seen more major releases of Java in the last eighteen months than in the previous ten years. In this session, we’ll look at how Java is changing, both from a technical perspective and from that of changes to release schedule, binary distributions and availability of updates. We’ll discuss the major new features in JDK 9, 10, 11 and 12 . We’ll also look at some of the larger, longer-term projects to improve Java: Amber, Valhalla and Loom.
Notes
86 features in jdk 9
Module: group of class logically connected JPMS : Java plateform Module System
Internal API -> not visible of application code
JEP 282
- Jlink : java linker
- les modules à rajouter
- Java —list-modules :
- permet de lister les modules de java
Release model
- 6 mois
- Mode agile
- Add feature in gradual æy
- Get very quickly
- Feature included when ready
- Before : when they have big feature —> delay release
- Release more things quickly
- LTS every 3 years (Long term support release)
- No more support on JDK 8
- JDK 9, 10 et 10 : Feature release
- Oracle Open JDK : jdk.java.net
- JDK11 and later
- Pas de différence entre OpenJDk and Oracle JDK
- Remove
- Browser plugin
- Java Web Start
- JavaFX
- JDK 9
- Significant change
- Fix Lot of features / technical debt in Java
- Remove 6 methods & 1 class
- JDK 10
- Removes 1 package, 6 classes & 1 methods
- Removes GC options
- JDK 10 … continues to remove unused
- CMS GC will be removed
- May include breaking changes
- Need to adapt (Warning)
- JDK 11
- Free use of java 11 in test / dev
- For java 11 in prod —> need Commertial
- Technical features JDK 10
- Local type inference (var)
- Parallel Full GC for G1
- Graal JIT Compiler
- Application Class-Data Sharing
- Heap allocation on alternative devises (Intel)
- Collections CopyOf
- ToUnmodifiableCollection
- Optional.orElseThrow
- Java launcher
- Class file
- Main class of jar file
- Class or module
- Technical Feature JDK 11
- Local variable lambda parameters
- If you want to add annotation in lambda parameters
- See
@NotNull
- Java launcher (Code shebang)
- A class declared in a source file
- Only one source file
- Dunamic class-file constants
- Epsilon GC (used for example in AWS lambda)
- HTTP client
- Transport layer security (TLS 1.3)
- ZGC : Experimental Low-latency GC
- New API:
- nullOutputStream
- Optional.isEmpty
- Character : toString(int)
- Stream
- isBlank
- Lines() : stream of lines
- repeat
- Strip () : defintion of « white spaces »
- stripLeading()
- StringTrailing()
- Not Predicate
- String::isBleank
- Filter (not(String::isBlank))
- Removes :
- Corba
- Jaxb
- Java.xml.ws
JDK 12
- Switch
- Can break with the value
- Shenandoah GC (experimental Red Hat GC)
- GC updates
- JVM contant API : File structure
- Default CDS Archive
- Stream : teeing
- Takes 2 collections
- Run Bifunction
- 17 removed / 66 added
Amber project
- java sytntax
- Lambda leftovers
- Pattern matching : Switch on type
Valhalla :
- primitives for performances
- Fixed values to improve
Loom (fibers)
- continuation in JVM
Clean application that just depends on java.se should just work. - Oracle