SlideShare uma empresa Scribd logo
1 de 60
Baixar para ler offline
Summary of JDK10
and
What will come into JDK11
Nameless Java Seminars at Fukuoka
2018/5/29 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
•  class	Outer	{

		private	int	a;

		class	Inner	{

				void	foo()	{	print(a);	}

		}

}

->	Outer	&	Outer$Inner	
•  Need to access the private member
•  from Valhalla!
How to access
the nestmateʼs private now
•  class	Outer	{

		private	int	a;

		int	access$000()	{	return	a;}

}

class	Outer$Inner{

		Outer	outer;

		void	foo()	{	print(outer.access$000());	}

}	
•  It make some problem for the
Specialization in the Vallhala project
How	to	address	
•  Add	2	attribute	for	the	class	file	format		
– NestHost	
– NestMembers
API changes in JDK11
•  String::repeat/lines/strip...
•  Predicate::not
•  Optional::isEmpty
•  Character::toString(int)
•  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()`
Character::toString(int)	
•  We can write `Character.toString(65)`
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 suponsored
•  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
•  がんばろ

Mais conteúdo relacionado

Mais procurados

Tuning Solr and its Pipeline for Logs: Presented by Rafał Kuć & Radu Gheorghe...
Tuning Solr and its Pipeline for Logs: Presented by Rafał Kuć & Radu Gheorghe...Tuning Solr and its Pipeline for Logs: Presented by Rafał Kuć & Radu Gheorghe...
Tuning Solr and its Pipeline for Logs: Presented by Rafał Kuć & Radu Gheorghe...Lucidworks
 
JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)Carsten Ziegeler
 
Call me maybe: Jepsen and flaky networks
Call me maybe: Jepsen and flaky networksCall me maybe: Jepsen and flaky networks
Call me maybe: Jepsen and flaky networksShalin Shekhar Mangar
 
Extending WildFly
Extending WildFlyExtending WildFly
Extending WildFlyJBUG London
 
NYC Lucene/Solr Meetup: Spark / Solr
NYC Lucene/Solr Meetup: Spark / SolrNYC Lucene/Solr Meetup: Spark / Solr
NYC Lucene/Solr Meetup: Spark / Solrthelabdude
 
NYJavaSIG - Big Data Microservices w/ Speedment
NYJavaSIG - Big Data Microservices w/ SpeedmentNYJavaSIG - Big Data Microservices w/ Speedment
NYJavaSIG - Big Data Microservices w/ SpeedmentSpeedment, Inc.
 
JVM Under the Hood
JVM Under the HoodJVM Under the Hood
JVM Under the HoodSerkan Özal
 
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...Malin Weiss
 
11. From Hadoop to Spark 2/2
11. From Hadoop to Spark 2/211. From Hadoop to Spark 2/2
11. From Hadoop to Spark 2/2Fabio Fumarola
 
Concurrency and Multithreading Demistified - Reversim Summit 2014
Concurrency and Multithreading Demistified - Reversim Summit 2014Concurrency and Multithreading Demistified - Reversim Summit 2014
Concurrency and Multithreading Demistified - Reversim Summit 2014Haim Yadid
 
Scala io2013 : Our journey from UML/MDD to Scala macros
Scala io2013 : Our journey from UML/MDD to Scala macrosScala io2013 : Our journey from UML/MDD to Scala macros
Scala io2013 : Our journey from UML/MDD to Scala macrosebiznext
 
Bringing Concurrency to Ruby - RubyConf India 2014
Bringing Concurrency to Ruby - RubyConf India 2014Bringing Concurrency to Ruby - RubyConf India 2014
Bringing Concurrency to Ruby - RubyConf India 2014Charles Nutter
 
Experiences with Evangelizing Java Within the Database
Experiences with Evangelizing Java Within the DatabaseExperiences with Evangelizing Java Within the Database
Experiences with Evangelizing Java Within the DatabaseMarcelo Ochoa
 
Debugging Your Production JVM
Debugging Your Production JVMDebugging Your Production JVM
Debugging Your Production JVMkensipe
 
Develop with linux containers and docker
Develop with linux containers and dockerDevelop with linux containers and docker
Develop with linux containers and dockerFabio Fumarola
 
Find bottleneck and tuning in Java Application
Find bottleneck and tuning in Java ApplicationFind bottleneck and tuning in Java Application
Find bottleneck and tuning in Java Applicationguest1f2740
 
Spil Storage Platform (Erlang) @ EUG-NL
Spil Storage Platform (Erlang) @ EUG-NLSpil Storage Platform (Erlang) @ EUG-NL
Spil Storage Platform (Erlang) @ EUG-NLThijs Terlouw
 

Mais procurados (19)

Tuning Solr and its Pipeline for Logs: Presented by Rafał Kuć & Radu Gheorghe...
Tuning Solr and its Pipeline for Logs: Presented by Rafał Kuć & Radu Gheorghe...Tuning Solr and its Pipeline for Logs: Presented by Rafał Kuć & Radu Gheorghe...
Tuning Solr and its Pipeline for Logs: Presented by Rafał Kuć & Radu Gheorghe...
 
JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)
 
Call me maybe: Jepsen and flaky networks
Call me maybe: Jepsen and flaky networksCall me maybe: Jepsen and flaky networks
Call me maybe: Jepsen and flaky networks
 
Level DB - Quick Cheat Sheet
Level DB - Quick Cheat SheetLevel DB - Quick Cheat Sheet
Level DB - Quick Cheat Sheet
 
Extending WildFly
Extending WildFlyExtending WildFly
Extending WildFly
 
NYC Lucene/Solr Meetup: Spark / Solr
NYC Lucene/Solr Meetup: Spark / SolrNYC Lucene/Solr Meetup: Spark / Solr
NYC Lucene/Solr Meetup: Spark / Solr
 
NYJavaSIG - Big Data Microservices w/ Speedment
NYJavaSIG - Big Data Microservices w/ SpeedmentNYJavaSIG - Big Data Microservices w/ Speedment
NYJavaSIG - Big Data Microservices w/ Speedment
 
JVM Under the Hood
JVM Under the HoodJVM Under the Hood
JVM Under the Hood
 
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
 
JCR and ModeShape
JCR and ModeShapeJCR and ModeShape
JCR and ModeShape
 
11. From Hadoop to Spark 2/2
11. From Hadoop to Spark 2/211. From Hadoop to Spark 2/2
11. From Hadoop to Spark 2/2
 
Concurrency and Multithreading Demistified - Reversim Summit 2014
Concurrency and Multithreading Demistified - Reversim Summit 2014Concurrency and Multithreading Demistified - Reversim Summit 2014
Concurrency and Multithreading Demistified - Reversim Summit 2014
 
Scala io2013 : Our journey from UML/MDD to Scala macros
Scala io2013 : Our journey from UML/MDD to Scala macrosScala io2013 : Our journey from UML/MDD to Scala macros
Scala io2013 : Our journey from UML/MDD to Scala macros
 
Bringing Concurrency to Ruby - RubyConf India 2014
Bringing Concurrency to Ruby - RubyConf India 2014Bringing Concurrency to Ruby - RubyConf India 2014
Bringing Concurrency to Ruby - RubyConf India 2014
 
Experiences with Evangelizing Java Within the Database
Experiences with Evangelizing Java Within the DatabaseExperiences with Evangelizing Java Within the Database
Experiences with Evangelizing Java Within the Database
 
Debugging Your Production JVM
Debugging Your Production JVMDebugging Your Production JVM
Debugging Your Production JVM
 
Develop with linux containers and docker
Develop with linux containers and dockerDevelop with linux containers and docker
Develop with linux containers and docker
 
Find bottleneck and tuning in Java Application
Find bottleneck and tuning in Java ApplicationFind bottleneck and tuning in Java Application
Find bottleneck and tuning in Java Application
 
Spil Storage Platform (Erlang) @ EUG-NL
Spil Storage Platform (Erlang) @ EUG-NLSpil Storage Platform (Erlang) @ EUG-NL
Spil Storage Platform (Erlang) @ EUG-NL
 

Semelhante a Summary of JDK10 and What will come into JDK11

Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11なおき きしだ
 
New thing in JDK10 even that scala-er should know
New thing in JDK10 even that scala-er should knowNew thing in JDK10 even that scala-er should know
New thing in JDK10 even that scala-er should knowなおき きしだ
 
Scala at Treasure Data
Scala at Treasure DataScala at Treasure Data
Scala at Treasure DataTaro L. Saito
 
What’s expected in Java 9
What’s expected in Java 9What’s expected in Java 9
What’s expected in Java 9Gal Marder
 
Real time Analytics with Apache Kafka and Apache Spark
Real time Analytics with Apache Kafka and Apache SparkReal time Analytics with Apache Kafka and Apache Spark
Real time Analytics with Apache Kafka and Apache SparkRahul Jain
 
Whats new in Java 9,10,11,12
Whats new in Java 9,10,11,12Whats new in Java 9,10,11,12
Whats new in Java 9,10,11,12Rory Preddy
 
A tour of Java and the JVM
A tour of Java and the JVMA tour of Java and the JVM
A tour of Java and the JVMAlex Birch
 
1java Introduction
1java Introduction1java Introduction
1java IntroductionAdil Jafri
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9Ivan Krylov
 
GETTING STARTED WITH JAVA(beginner)
GETTING STARTED WITH JAVA(beginner)GETTING STARTED WITH JAVA(beginner)
GETTING STARTED WITH JAVA(beginner)HarshithaAllu
 
Pune-Cocoa: Blocks and GCD
Pune-Cocoa: Blocks and GCDPune-Cocoa: Blocks and GCD
Pune-Cocoa: Blocks and GCDPrashant Rane
 
2019-06 - Goto Amsterdam - Microservices
2019-06 - Goto Amsterdam - Microservices2019-06 - Goto Amsterdam - Microservices
2019-06 - Goto Amsterdam - MicroservicesEamonn Boyle
 
Cassandra Summit 2015 - Building a multi-tenant API PaaS with DataStax Enterp...
Cassandra Summit 2015 - Building a multi-tenant API PaaS with DataStax Enterp...Cassandra Summit 2015 - Building a multi-tenant API PaaS with DataStax Enterp...
Cassandra Summit 2015 - Building a multi-tenant API PaaS with DataStax Enterp...Restlet
 
The MySQL Server Ecosystem in 2016
The MySQL Server Ecosystem in 2016The MySQL Server Ecosystem in 2016
The MySQL Server Ecosystem in 2016Colin Charles
 
Developing Kafka Streams Applications with Upgradability in Mind with Neil Bu...
Developing Kafka Streams Applications with Upgradability in Mind with Neil Bu...Developing Kafka Streams Applications with Upgradability in Mind with Neil Bu...
Developing Kafka Streams Applications with Upgradability in Mind with Neil Bu...HostedbyConfluent
 

Semelhante a Summary of JDK10 and What will come into JDK11 (20)

Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11
 
New thing in JDK10 even that scala-er should know
New thing in JDK10 even that scala-er should knowNew thing in JDK10 even that scala-er should know
New thing in JDK10 even that scala-er should know
 
Java >= 9
Java >= 9Java >= 9
Java >= 9
 
Scala at Treasure Data
Scala at Treasure DataScala at Treasure Data
Scala at Treasure Data
 
What’s expected in Java 9
What’s expected in Java 9What’s expected in Java 9
What’s expected in Java 9
 
Real time Analytics with Apache Kafka and Apache Spark
Real time Analytics with Apache Kafka and Apache SparkReal time Analytics with Apache Kafka and Apache Spark
Real time Analytics with Apache Kafka and Apache Spark
 
Whats new in Java 9,10,11,12
Whats new in Java 9,10,11,12Whats new in Java 9,10,11,12
Whats new in Java 9,10,11,12
 
Presentation on java
Presentation  on  javaPresentation  on  java
Presentation on java
 
A tour of Java and the JVM
A tour of Java and the JVMA tour of Java and the JVM
A tour of Java and the JVM
 
1java Introduction
1java Introduction1java Introduction
1java Introduction
 
Java platform
Java platformJava platform
Java platform
 
gcdtmp
gcdtmpgcdtmp
gcdtmp
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9
 
GETTING STARTED WITH JAVA(beginner)
GETTING STARTED WITH JAVA(beginner)GETTING STARTED WITH JAVA(beginner)
GETTING STARTED WITH JAVA(beginner)
 
What's new in solr june 2014
What's new in solr june 2014What's new in solr june 2014
What's new in solr june 2014
 
Pune-Cocoa: Blocks and GCD
Pune-Cocoa: Blocks and GCDPune-Cocoa: Blocks and GCD
Pune-Cocoa: Blocks and GCD
 
2019-06 - Goto Amsterdam - Microservices
2019-06 - Goto Amsterdam - Microservices2019-06 - Goto Amsterdam - Microservices
2019-06 - Goto Amsterdam - Microservices
 
Cassandra Summit 2015 - Building a multi-tenant API PaaS with DataStax Enterp...
Cassandra Summit 2015 - Building a multi-tenant API PaaS with DataStax Enterp...Cassandra Summit 2015 - Building a multi-tenant API PaaS with DataStax Enterp...
Cassandra Summit 2015 - Building a multi-tenant API PaaS with DataStax Enterp...
 
The MySQL Server Ecosystem in 2016
The MySQL Server Ecosystem in 2016The MySQL Server Ecosystem in 2016
The MySQL Server Ecosystem in 2016
 
Developing Kafka Streams Applications with Upgradability in Mind with Neil Bu...
Developing Kafka Streams Applications with Upgradability in Mind with Neil Bu...Developing Kafka Streams Applications with Upgradability in Mind with Neil Bu...
Developing Kafka Streams Applications with Upgradability in Mind with Neil Bu...
 

Mais de なおき きしだ

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

Mais de なおき きしだ (20)

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

Último

(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 

Último (20)

(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 

Summary of JDK10 and What will come into JDK11

  • 1. Summary of JDK10 and What will come into JDK11 Nameless Java Seminars at Fukuoka 2018/5/29 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 •  class Outer {
 private int a;
 class Inner {
 void foo() { print(a); }
 }
 }
 -> Outer & Outer$Inner •  Need to access the private member •  from Valhalla!
  • 44. How to access the nestmateʼs private now •  class Outer {
 private int a;
 int access$000() { return a;}
 }
 class Outer$Inner{
 Outer outer;
 void foo() { print(outer.access$000()); }
 } •  It make some problem for the Specialization in the Vallhala project
  • 46. API changes in JDK11 •  String::repeat/lines/strip... •  Predicate::not •  Optional::isEmpty •  Character::toString(int) •  Files •  ArrayIndexOutOfBoundsException – the message is changed
  • 47. String •  repeat •  isBlank •  lines •  strip/stripLeading/stripTrailing
  • 48. Predicate::not •  lines.filter(s -> !s.isEmpty()) → lines.filter( Predicate.not(String::isEmpty))
  • 50. Character::toString(int) •  We can write `Character.toString(65)`
  • 51. Files •  String Files.read(Path) •  Path FIles.write(Path, String) •  Files.isSameContent(Path, Path)
  • 52. 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)
  • 53. 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”
  • 55. Oracle JDK •  Same as the current support •  Very expensive for web servicer •  100 servers on AWS -> 1おくえん
  • 56. 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.
  • 57. AdoptOpenJDK •  Project by London JUG •  IBM suponsored •  Provide pre-build JDK •  LTS support for 4 years
  • 58. Zulu •  Provided by Azul System •  Free to download and use •  Enterprise support – 100 servers $28,750/year – unlimited servers $258,750/year
  • 59. 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