SlideShare a Scribd company logo
Summary of JDK10
and
What will come into JDK11
2018/5/28 Naoki Kishida
About me
•  Naoki Kishida
•  LINE Fukuoka
•  @kis
Agenda
•  New Release Model
•  About JDK 10
•  About JDK 11
•  About Java Support
New Release Model
6-monthly release
•  Oracle had announced they will
release Java every 6 months at
2017/9/6
Java new release cycle.
•  Feature release every 6 months
–  March and September(春分の⽇/秋分の⽇)
•  Maintenance release every 3 months
–  April and July for March release
–  October and January for September release
•  Long Term Support every 3 years
–  The first LTS is for JDK 11
•  Oracle JDK will be for only Oracle
customer
–  Use OpenJDK instead.
Version number
•  2018/03 Feature release JDK10
•  2018/04 Maintenance release JDK10.0.1
•  2018/07 Maintenance release JDK10.0.2
•  2018/09 Feature release JDK11 LTS
•  2018/10 Maintenance release JDK11.0.1
LTS
•  2019/01 Maintenance release JDK11.0.2
LTS
Java SE 8 support is extended
•  Oracle has extended Java SE 8
support at least until 2019/1
•  It is available for the personal use
until 2020/12
•  Java SE 8 support will finish after 3
months of JDK 11 release.
•  We should move to JDK 11 by 2019/1
http://www.oracle.com/technetwork/jp/java/eol-135779-ja.html
Desktop technology
•  Applet and Web Start is no longer
supported after JDK 11
•  JavaFX will not be bundled with JDK11
– So far OpenJDK had not bundled JavaFX
•  AWT and Swing will be supported
– There are many commits for JDK 11
About JDK 10
Java 10 JEPs
•  286 Local-Variable Type Inference
•  296 Consolidate the Repository
•  304 GC Interface
•  307 Parallel Full GC for G1
•  310 Application Class-Data Sharing
•  312 Thread-Local Handshakes
•  313 Remove the Native-Header Generation Tool(javah)
•  314 Additional Unicode Language-Tag Extensions
•  316 Heap Allocation on Alternative Momory Devices
•  317 Experimental Java-Based JIT Compiler
•  319 Root Certificates
•  322 Time-Based Release Versioning
286: Local-Variable Type
Inferences
•  var list = new ArrayList<String>()
•  `var` is not a keyword
– but a special type
•  We can use `var` as a variable name
•  We can use `var` as a method name
•  We can not use `var` as a class name
Where can we use `var`?
•  OK
– Right Oprand has the type
•  var strs = new ArrayList<String>();
•  var path = Path.of(“http://example.com”);
•  Should not
– Enclosing type
•  ex: Supplier<String>, Optional<String>
ListenableFuture<String>
•  var name = findName(id);
print(name.get()); // How should we care?
Another usage for `var`
•  Anonymous class become useful
– ex: defining a local method
•  var	m	=	new	Object()	{

		int	twice(int	x)	{

				return	x	*	2;

		}

};

print(m.twice(3));
304: Garbage-Collector
Interface
•  GC is modularized.
•  There are many GCs that will come.
– Epsilon GC
– ZGC
– Shenandoah
•  Not to control GC by user code
317: Experimental Java-Based
JIT Compiler
•  Project Metoropolis
– java-on-java
•  We can write JVM even with Scala?
– There is a possibility.
307: Parallel Full GC for G1
•  G1GC had been the default GC on JDK
9
•  Full GC for G1 was not parallel.
•  Until JDK 8, Parallel GC was the
default
•  To smooth migration, Full GC for
G1GC also parallelize.
•  But full GC should not occur.
– Ideally, it has no effect for us.
310: Application Class-Data
Sharing
•  CDS for system class is introduced in
JDK 5
•  Share class data between multiple
JVM
on the same machine
– startup performance
– reduce the resource footprint
•  JDK 10 allow to use CDS for
application class
312: Thread-Local Handshakes
•  JVM can stop an individual thread
– stop not just all thread
313:	Remove the Native-Header
Generation Tool(javah)	
•  javah	is	removed	
•  use	`javac	–h`	instead
314: Additional Unicode
Language-Tag Extensions
•  Enhance java.util.Locale
•  additional Unicode extensions
of BCP 47 language tag
– currency type
– the first day of the week
– region override
– time zone
316: Heap Allocation on
Alternative Memory Devices
•  Now we can use non-volatile RAM(不
揮発性メモリ) such as 3D XPoint
•  This will enable the JVM to use
different types of memory system
319: Root Certificates
•  OpenJDK doesnʼt have Root
Certificates so far
•  Oracle JDK have had it.
•  To smooth migration, OpenJDK have
had it.
API Changes
•  java.io.Reader
– long transferTo(Writer)
•  java.lang.mainagement.RuntimeMXBe
an
– long getPid()
•  java.util.List/Map/Set
– copyOf(Collection)
•  java.util.stream.Collectors
– toUnmodifiableList/Set/Map
Docker aware
•  Until JDK 9, JVM use the platform CPU
count/Memory size even if it is running
on Docker.
•  JDK 10, JVM can use Docker setting for
CPU count/ Memory size if it is running
on Docker.
•  VM Options
–  -XX:InitialRAMPercentage
–  -XX:MaxRAMPercentage
–  -XX:MinRAMPercentage
Other Changes
•  Kerberos configuration file krb5.conf
include *.conf in INCLUDEDIR
•  -d32 and –d64 has been removed
•  new JavaDoc tag. {@summary}
•  policytool has been removed
•  XMLInputFactory.newFactory() has
been “de-deprecated”
– it had been deprecated by mistake.
About JDK 11
Java 11 JEPs
•  309 Dynamic Class-File Constants
•  318 Epsilon: A No-Op Garbage Collector
•  320 Remove the Java EE and CORBA Modules
•  321 HTTP Client(Standard)
•  323 Local-Variable Syntax for Lambda Parameters
•  324 Key Agreement with Curve25519 and Curve448
•  327 Unicode 10
•  328 Flight Recorder
•  329 ChaCha20 and Poly1305 Cryptographic Algorithms
•  330 Launch Single-File Source-Code Programs
Expected JEPs for JDK11
•  326 Raw String Literals
•  325 Switch Expressions
•  181 Nest-Based Access Control
Launch Single-File Source-Code
Programs
•  java Hello.java
– The file name does not need to be related
with the class name
•  Shebang
– #! /usr/bin/java –source 10
– chmod +x hello
– ./hello
Raw String Literals
•  var	sql	=	```select	NAME

													from	MEMBER

													where	id=1```	
•  var	regexp	=	```hello¥¥n```

											//	same	as	“hello¥¥¥¥n”	
•  How to address indent
Switch Expressions
•  Now `switch` is a statement
•  int	i;

switch	(s)	{

		case	“start”:

		case	“begin”:

				i	=	0;

				break;

		case	“end”:

				i	=	1;

				break;

		default:

				i	=	2;
Switch Expressions
•  int	i	=	switch	(s)	{

		case	“start”,“begin”->	0;

		case	“end”	->	1;

		default	->	2;

}
Local-Variable Syntax for
Lambda Parameters
•  list.map(s	->	s.toUpperCase())

				.collect(toList())	
•  list.map((var	s)	->	s.toUpperCase())

				.collect(toList())	
•  list.map((@Nullable	var	s)

													->	s.toUpperCase())

				.collect(toList())
HTTP Client(Standard)
•  Graduate the incubator
•  var	client	HttpClient.newHttpClient();

var	url	=	URI.create(url);

var	req	=	HttpRequest.newBuilder(uri).build();

HttpResponse<String>	res	=	client.send(

		req,	HttpResponse.BodyHandlers.ofString(

				Charset.forName(“utf-8”));

return	res.body();
Epsilon: A No-Op Garbage
Collector
•  Do nothing!
•  For evaluate the performance of
another feature
– GC will make a noise
Remove the Java EE and
CORBA Modules
•  No one uses CORBA!
•  The size is large
•  Removing them, JDK will be smaller
Flight Recorder
•  Logging the performance
•  Now it is an open source
•  Caution
– for before JDK10 is still commercial
Unicode 10
•  Support Unicode 9 and Unicode 10
Dynamic Class-File Constants
•  Use	invokeDynamic	for	constant	initialization
Key Agreement with
Curve25519 and Curve440
•  RFC	7748	
•  More	efficient	and	secure	than	ECDH
ChaCha20 and Poly1305
Cryptographic Algorithms
•  RFC	7539	
•  Stream	cypher	
•  Not	support	for	TLS	
•  The	first	step	of	supporting	in	TLS
Nestmate
•  To address inner class accessibility
•  from Valhalla!
API changes in JDK11
•  String::repeat/lines/strip...
•  Predicate::not
•  Optional::isEmpty
•  Files
•  ArrayIndexOutOfBoundsException
– the message is changed
String
•  repeat
•  isBlank
•  lines
•  strip/stripLeading/stripTrailing
Predicate::not
•  lines.filter(s -> !s.isEmpty())
→
lines.filter(
Predicate.not(String::isEmpty))
Optional::isEmpty	
•  Optional	has	`isEmpty()`
Files
•  String Files.read(Path)
•  Path FIles.write(Path, String)
•  Files.isSameContent(Path, Path)
ArrayIndexOutOfBoundsException
•  jshell> new int[]{}[0]
| java.lang.ArrayIndexOutOfBoundsException thrown: 0
| at (#1:1)
->
jshell> new int[]{}[0]
| Exception java.lang.ArrayIndexOutOfBoundsException:
Index 0 out of bounds for length 0
| at (#8:1)
How about Stream#toList?
•  modifiable? unmodifiable?
•  What order?
•  “it nulls a property of the Stream API
we have take time to keep.
The whole Stream API doesn't
depends on the Collection API”
About Java Support
Oracle JDK
•  Same as the current support
•  Very expensive for web servicer
•  100 servers on AWS -> 1おくえん
OpenJDK
•  Official publishment says it has only 6
months support for each JDK release.
No LTS
•  Mark Reinhold said OpenJDK will have
LTS
– but not on the web site yet
– LTS support is for 3 years. No overlap.
AdoptOpenJDK
•  Project by London JUG
•  IBM supponsered
•  Provide pre-build JDK
•  LTS support for 4 years
Zulu
•  Provided by Azul System
•  Free to download and use
•  Enterprise support
– 100 servers $28,750/year
– unlimited servers $258,750/year
Support the new era
after Heisei
•  Start to support the new era as
NewEra
•  JDK12 will release 2019/3
•  The new era will release early 2019/4
•  JDK maintenance release will be late
2019/4
– JDK 12.0.1
•  The new era will start 2019/5
Summary
•  がんばろ

More Related Content

PDF
Java10 and Java11 at JJUG CCC 2018 Spr
PDF
Column Stride Fields aka. DocValues
PDF
DocValues aka. Column Stride Fields in Lucene 4.0 - By Willnauer Simon
PDF
JCR - Java Content Repositories
PPTX
The architecture of oak
PDF
JRuby with Java Code in Data Processing World
PPTX
Spark real world use cases and optimizations
KEY
Building Distributed Systems in Scala
Java10 and Java11 at JJUG CCC 2018 Spr
Column Stride Fields aka. DocValues
DocValues aka. Column Stride Fields in Lucene 4.0 - By Willnauer Simon
JCR - Java Content Repositories
The architecture of oak
JRuby with Java Code in Data Processing World
Spark real world use cases and optimizations
Building Distributed Systems in Scala

What's hot (19)

PDF
OSMC 2016 - Monitor your infrastructure with Elastic Beats by Monica Sarbu
PDF
Tuning Solr and its Pipeline for Logs: Presented by Rafał Kuć & Radu Gheorghe...
PDF
JCR In Action (ApacheCon US 2009)
PPTX
Level DB - Quick Cheat Sheet
PDF
Call me maybe: Jepsen and flaky networks
PDF
GemStone/64 product update and road map
PDF
Extending WildFly
PPTX
NYC Lucene/Solr Meetup: Spark / Solr
PPT
NYJavaSIG - Big Data Microservices w/ Speedment
PPTX
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
PDF
JVM Under the Hood
ODP
JCR and ModeShape
PPT
11. From Hadoop to Spark 2/2
PDF
PDF
Concurrency and Multithreading Demistified - Reversim Summit 2014
PPT
Scala io2013 : Our journey from UML/MDD to Scala macros
PDF
Bringing Concurrency to Ruby - RubyConf India 2014
PDF
Experiences with Evangelizing Java Within the Database
PDF
Debugging Your Production JVM
OSMC 2016 - Monitor your infrastructure with Elastic Beats by Monica Sarbu
Tuning Solr and its Pipeline for Logs: Presented by Rafał Kuć & Radu Gheorghe...
JCR In Action (ApacheCon US 2009)
Level DB - Quick Cheat Sheet
Call me maybe: Jepsen and flaky networks
GemStone/64 product update and road map
Extending WildFly
NYC Lucene/Solr Meetup: Spark / Solr
NYJavaSIG - Big Data Microservices w/ Speedment
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
JVM Under the Hood
JCR and ModeShape
11. From Hadoop to Spark 2/2
Concurrency and Multithreading Demistified - Reversim Summit 2014
Scala io2013 : Our journey from UML/MDD to Scala macros
Bringing Concurrency to Ruby - RubyConf India 2014
Experiences with Evangelizing Java Within the Database
Debugging Your Production JVM
Ad

Similar to Summary of JDK10 and What will come into JDK11 (20)

PDF
Summary of JDK10 and What will come into JDK11
PPTX
New thing in JDK10 even that scala-er should know
PDF
Whats new in Java 9,10,11,12
PDF
Highlights from Java 10, 11 and 12 and Future of Java at Javaland 2019 By Vad...
PDF
Java 40 versions_sgp
PDF
Highlights from Java 10, 11 and 12 and Future of Java at JUG Koblenz
PDF
JDK 10 Java Module System
PDF
JDK 9 Java Platform Module System
PDF
Javantura v6 - JDK 11 & JDK 12 - Dalibor Topic
PDF
Java jdk-update-nov10-sde-v3m
PDF
De Java 8 ate Java 14
PPTX
JDK 9, 10, 11 and Beyond
PDF
De Java 8 a Java 17
PDF
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
PDF
The features of java 11 vs. java 12
PPTX
Java On Speed
PPTX
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
PDF
What to expect from Java 9
PDF
What's in the Latest Java
PDF
De Java 8 a Java 11 y 14
Summary of JDK10 and What will come into JDK11
New thing in JDK10 even that scala-er should know
Whats new in Java 9,10,11,12
Highlights from Java 10, 11 and 12 and Future of Java at Javaland 2019 By Vad...
Java 40 versions_sgp
Highlights from Java 10, 11 and 12 and Future of Java at JUG Koblenz
JDK 10 Java Module System
JDK 9 Java Platform Module System
Javantura v6 - JDK 11 & JDK 12 - Dalibor Topic
Java jdk-update-nov10-sde-v3m
De Java 8 ate Java 14
JDK 9, 10, 11 and Beyond
De Java 8 a Java 17
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
The features of java 11 vs. java 12
Java On Speed
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
What to expect from Java 9
What's in the Latest Java
De Java 8 a Java 11 y 14
Ad

More from なおき きしだ (20)

PDF
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
PDF
GraalVM at Fukuoka LT
PDF
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
PDF
GraalVMについて
PDF
VRカメラが楽しいのでブラウザで見たくなった話
PDF
最近のJava事情
PDF
怖いコードの話 2018/7/18
PDF
Java新機能観察日記 - JJUGナイトセミナー
PDF
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
PDF
これからのコンピューティングの変化とこれからのプログラミング at 広島
PPTX
Java Release Model (on Scala Matsuri)
PDF
これからのJava言語と実行環境
PDF
JavaOne報告2017
PDF
JavaOne2017で感じた、Javaのいまと未来 in 大阪
PDF
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
PDF
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
PDF
JavaOne2016報告
PDF
コンピューティングとJava~なにわTECH道
PDF
Javaプログラミング入門
PPTX
人工知能に何ができないか
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
GraalVM at Fukuoka LT
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
GraalVMについて
VRカメラが楽しいのでブラウザで見たくなった話
最近のJava事情
怖いコードの話 2018/7/18
Java新機能観察日記 - JJUGナイトセミナー
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
これからのコンピューティングの変化とこれからのプログラミング at 広島
Java Release Model (on Scala Matsuri)
これからのJava言語と実行環境
JavaOne報告2017
JavaOne2017で感じた、Javaのいまと未来 in 大阪
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
JavaOne2016報告
コンピューティングとJava~なにわTECH道
Javaプログラミング入門
人工知能に何ができないか

Recently uploaded (20)

PPTX
ISO 45001 Occupational Health and Safety Management System
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
Understanding Forklifts - TECH EHS Solution
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PPTX
ai tools demonstartion for schools and inter college
PPTX
ManageIQ - Sprint 268 Review - Slide Deck
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
How Creative Agencies Leverage Project Management Software.pdf
PPTX
Odoo POS Development Services by CandidRoot Solutions
PPTX
Online Work Permit System for Fast Permit Processing
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PPTX
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
PPTX
Introduction to Artificial Intelligence
ISO 45001 Occupational Health and Safety Management System
Softaken Excel to vCard Converter Software.pdf
Understanding Forklifts - TECH EHS Solution
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Upgrade and Innovation Strategies for SAP ERP Customers
ai tools demonstartion for schools and inter college
ManageIQ - Sprint 268 Review - Slide Deck
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
VVF-Customer-Presentation2025-Ver1.9.pptx
Design an Analysis of Algorithms II-SECS-1021-03
How Creative Agencies Leverage Project Management Software.pdf
Odoo POS Development Services by CandidRoot Solutions
Online Work Permit System for Fast Permit Processing
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Operating system designcfffgfgggggggvggggggggg
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PTS Company Brochure 2025 (1).pdf.......
Internet Downloader Manager (IDM) Crack 6.42 Build 41
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
Introduction to Artificial Intelligence

Summary of JDK10 and What will come into JDK11

  • 1. Summary of JDK10 and What will come into JDK11 2018/5/28 Naoki Kishida
  • 2. About me •  Naoki Kishida •  LINE Fukuoka •  @kis
  • 3. Agenda •  New Release Model •  About JDK 10 •  About JDK 11 •  About Java Support
  • 5. 6-monthly release •  Oracle had announced they will release Java every 6 months at 2017/9/6
  • 6. Java new release cycle. •  Feature release every 6 months –  March and September(春分の⽇/秋分の⽇) •  Maintenance release every 3 months –  April and July for March release –  October and January for September release •  Long Term Support every 3 years –  The first LTS is for JDK 11 •  Oracle JDK will be for only Oracle customer –  Use OpenJDK instead.
  • 7. Version number •  2018/03 Feature release JDK10 •  2018/04 Maintenance release JDK10.0.1 •  2018/07 Maintenance release JDK10.0.2 •  2018/09 Feature release JDK11 LTS •  2018/10 Maintenance release JDK11.0.1 LTS •  2019/01 Maintenance release JDK11.0.2 LTS
  • 8. Java SE 8 support is extended •  Oracle has extended Java SE 8 support at least until 2019/1 •  It is available for the personal use until 2020/12 •  Java SE 8 support will finish after 3 months of JDK 11 release. •  We should move to JDK 11 by 2019/1 http://www.oracle.com/technetwork/jp/java/eol-135779-ja.html
  • 9. Desktop technology •  Applet and Web Start is no longer supported after JDK 11 •  JavaFX will not be bundled with JDK11 – So far OpenJDK had not bundled JavaFX •  AWT and Swing will be supported – There are many commits for JDK 11
  • 11. Java 10 JEPs •  286 Local-Variable Type Inference •  296 Consolidate the Repository •  304 GC Interface •  307 Parallel Full GC for G1 •  310 Application Class-Data Sharing •  312 Thread-Local Handshakes •  313 Remove the Native-Header Generation Tool(javah) •  314 Additional Unicode Language-Tag Extensions •  316 Heap Allocation on Alternative Momory Devices •  317 Experimental Java-Based JIT Compiler •  319 Root Certificates •  322 Time-Based Release Versioning
  • 12. 286: Local-Variable Type Inferences •  var list = new ArrayList<String>() •  `var` is not a keyword – but a special type •  We can use `var` as a variable name •  We can use `var` as a method name •  We can not use `var` as a class name
  • 13. Where can we use `var`? •  OK – Right Oprand has the type •  var strs = new ArrayList<String>(); •  var path = Path.of(“http://example.com”); •  Should not – Enclosing type •  ex: Supplier<String>, Optional<String> ListenableFuture<String> •  var name = findName(id); print(name.get()); // How should we care?
  • 14. Another usage for `var` •  Anonymous class become useful – ex: defining a local method •  var m = new Object() {
 int twice(int x) {
 return x * 2;
 }
 };
 print(m.twice(3));
  • 15. 304: Garbage-Collector Interface •  GC is modularized. •  There are many GCs that will come. – Epsilon GC – ZGC – Shenandoah •  Not to control GC by user code
  • 16. 317: Experimental Java-Based JIT Compiler •  Project Metoropolis – java-on-java •  We can write JVM even with Scala? – There is a possibility.
  • 17. 307: Parallel Full GC for G1 •  G1GC had been the default GC on JDK 9 •  Full GC for G1 was not parallel. •  Until JDK 8, Parallel GC was the default •  To smooth migration, Full GC for G1GC also parallelize. •  But full GC should not occur. – Ideally, it has no effect for us.
  • 18. 310: Application Class-Data Sharing •  CDS for system class is introduced in JDK 5 •  Share class data between multiple JVM on the same machine – startup performance – reduce the resource footprint •  JDK 10 allow to use CDS for application class
  • 19. 312: Thread-Local Handshakes •  JVM can stop an individual thread – stop not just all thread
  • 20. 313: Remove the Native-Header Generation Tool(javah) •  javah is removed •  use `javac –h` instead
  • 21. 314: Additional Unicode Language-Tag Extensions •  Enhance java.util.Locale •  additional Unicode extensions of BCP 47 language tag – currency type – the first day of the week – region override – time zone
  • 22. 316: Heap Allocation on Alternative Memory Devices •  Now we can use non-volatile RAM(不 揮発性メモリ) such as 3D XPoint •  This will enable the JVM to use different types of memory system
  • 23. 319: Root Certificates •  OpenJDK doesnʼt have Root Certificates so far •  Oracle JDK have had it. •  To smooth migration, OpenJDK have had it.
  • 24. API Changes •  java.io.Reader – long transferTo(Writer) •  java.lang.mainagement.RuntimeMXBe an – long getPid() •  java.util.List/Map/Set – copyOf(Collection) •  java.util.stream.Collectors – toUnmodifiableList/Set/Map
  • 25. Docker aware •  Until JDK 9, JVM use the platform CPU count/Memory size even if it is running on Docker. •  JDK 10, JVM can use Docker setting for CPU count/ Memory size if it is running on Docker. •  VM Options –  -XX:InitialRAMPercentage –  -XX:MaxRAMPercentage –  -XX:MinRAMPercentage
  • 26. Other Changes •  Kerberos configuration file krb5.conf include *.conf in INCLUDEDIR •  -d32 and –d64 has been removed •  new JavaDoc tag. {@summary} •  policytool has been removed •  XMLInputFactory.newFactory() has been “de-deprecated” – it had been deprecated by mistake.
  • 28. Java 11 JEPs •  309 Dynamic Class-File Constants •  318 Epsilon: A No-Op Garbage Collector •  320 Remove the Java EE and CORBA Modules •  321 HTTP Client(Standard) •  323 Local-Variable Syntax for Lambda Parameters •  324 Key Agreement with Curve25519 and Curve448 •  327 Unicode 10 •  328 Flight Recorder •  329 ChaCha20 and Poly1305 Cryptographic Algorithms •  330 Launch Single-File Source-Code Programs
  • 29. Expected JEPs for JDK11 •  326 Raw String Literals •  325 Switch Expressions •  181 Nest-Based Access Control
  • 30. Launch Single-File Source-Code Programs •  java Hello.java – The file name does not need to be related with the class name •  Shebang – #! /usr/bin/java –source 10 – chmod +x hello – ./hello
  • 31. Raw String Literals •  var sql = ```select NAME
 from MEMBER
 where id=1``` •  var regexp = ```hello¥¥n```
 // same as “hello¥¥¥¥n” •  How to address indent
  • 32. Switch Expressions •  Now `switch` is a statement •  int i;
 switch (s) {
 case “start”:
 case “begin”:
 i = 0;
 break;
 case “end”:
 i = 1;
 break;
 default:
 i = 2;
  • 34. Local-Variable Syntax for Lambda Parameters •  list.map(s -> s.toUpperCase())
 .collect(toList()) •  list.map((var s) -> s.toUpperCase())
 .collect(toList()) •  list.map((@Nullable var s)
 -> s.toUpperCase())
 .collect(toList())
  • 35. HTTP Client(Standard) •  Graduate the incubator •  var client HttpClient.newHttpClient();
 var url = URI.create(url);
 var req = HttpRequest.newBuilder(uri).build();
 HttpResponse<String> res = client.send(
 req, HttpResponse.BodyHandlers.ofString(
 Charset.forName(“utf-8”));
 return res.body();
  • 36. Epsilon: A No-Op Garbage Collector •  Do nothing! •  For evaluate the performance of another feature – GC will make a noise
  • 37. Remove the Java EE and CORBA Modules •  No one uses CORBA! •  The size is large •  Removing them, JDK will be smaller
  • 38. Flight Recorder •  Logging the performance •  Now it is an open source •  Caution – for before JDK10 is still commercial
  • 39. Unicode 10 •  Support Unicode 9 and Unicode 10
  • 40. Dynamic Class-File Constants •  Use invokeDynamic for constant initialization
  • 41. Key Agreement with Curve25519 and Curve440 •  RFC 7748 •  More efficient and secure than ECDH
  • 42. ChaCha20 and Poly1305 Cryptographic Algorithms •  RFC 7539 •  Stream cypher •  Not support for TLS •  The first step of supporting in TLS
  • 43. Nestmate •  To address inner class accessibility •  from Valhalla!
  • 44. API changes in JDK11 •  String::repeat/lines/strip... •  Predicate::not •  Optional::isEmpty •  Files •  ArrayIndexOutOfBoundsException – the message is changed
  • 45. String •  repeat •  isBlank •  lines •  strip/stripLeading/stripTrailing
  • 46. Predicate::not •  lines.filter(s -> !s.isEmpty()) → lines.filter( Predicate.not(String::isEmpty))
  • 48. Files •  String Files.read(Path) •  Path FIles.write(Path, String) •  Files.isSameContent(Path, Path)
  • 49. ArrayIndexOutOfBoundsException •  jshell> new int[]{}[0] | java.lang.ArrayIndexOutOfBoundsException thrown: 0 | at (#1:1) -> jshell> new int[]{}[0] | Exception java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0 | at (#8:1)
  • 50. How about Stream#toList? •  modifiable? unmodifiable? •  What order? •  “it nulls a property of the Stream API we have take time to keep. The whole Stream API doesn't depends on the Collection API”
  • 52. Oracle JDK •  Same as the current support •  Very expensive for web servicer •  100 servers on AWS -> 1おくえん
  • 53. OpenJDK •  Official publishment says it has only 6 months support for each JDK release. No LTS •  Mark Reinhold said OpenJDK will have LTS – but not on the web site yet – LTS support is for 3 years. No overlap.
  • 54. AdoptOpenJDK •  Project by London JUG •  IBM supponsered •  Provide pre-build JDK •  LTS support for 4 years
  • 55. Zulu •  Provided by Azul System •  Free to download and use •  Enterprise support – 100 servers $28,750/year – unlimited servers $258,750/year
  • 56. Support the new era after Heisei •  Start to support the new era as NewEra •  JDK12 will release 2019/3 •  The new era will release early 2019/4 •  JDK maintenance release will be late 2019/4 – JDK 12.0.1 •  The new era will start 2019/5