SlideShare a Scribd company logo
1 of 51
Download to read offline
Java 10まとめと、どうなる
Java 11
2018/5/26 JJUG CCC 2018
Spring
きしだ なおき
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 Paralell Full GC for G1
•  310 Application Class-Data Sharing
•  312 Thread-Local Handshakes
•  313 Remove 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
Usage for `var`
•  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
314: Additional Unicode
Language-Tag Extentions
•  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-deplicated”
– it had been deplicated 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
•  Shebang
– #! /usr/bin/java –source 10
– chmod +x hello
– ./hello
Raw String Literals
•  var	sql	=	```select	NAME

													from	MEMBER

													where	id=1```	
•  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())
HTTP Client(Standard)
•  Guraduate the incubate
•  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 GC performance
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
Unicode 10
•  Support Unicode 9 and Unicode 10
Nestmate
•  To address inner class accesivility
•  Valhalla!
Java 11でのAPI追加
•  String
– repeat
– lines
– isBlank
– strip/stripLeading/stripTrailing
String
•  repeat
•  isBlank
•  lines
•  strip/stripLeading/stripTrailing
Predicate::not
•  lines.filter(s -> !s.isEmpty())
→
lines.filter(Predicate.not(String::isEmp
ty))
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? unmodifible?
•  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 suponsered
•  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

What's hot

Container Orchestration @Docker Meetup Hamburg
Container Orchestration @Docker Meetup HamburgContainer Orchestration @Docker Meetup Hamburg
Container Orchestration @Docker Meetup HamburgTimo Derstappen
 
Orchestrating Redis & K8s Operators
Orchestrating Redis & K8s OperatorsOrchestrating Redis & K8s Operators
Orchestrating Redis & K8s OperatorsDoiT International
 
What's New on AWS and What it Means to You
What's New on AWS and What it Means to YouWhat's New on AWS and What it Means to You
What's New on AWS and What it Means to YouAmazon Web Services
 
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
 
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
 
[NYC Meetup] Docker at Nuxeo
[NYC Meetup] Docker at Nuxeo[NYC Meetup] Docker at Nuxeo
[NYC Meetup] Docker at NuxeoNuxeo
 
Spark real world use cases and optimizations
Spark real world use cases and optimizationsSpark real world use cases and optimizations
Spark real world use cases and optimizationsGal Marder
 
Deploying and managing SolrCloud in the cloud using the Solr Scale Toolkit
Deploying and managing SolrCloud in the cloud using the Solr Scale ToolkitDeploying and managing SolrCloud in the cloud using the Solr Scale Toolkit
Deploying and managing SolrCloud in the cloud using the Solr Scale Toolkitthelabdude
 
2 Linux Container and Docker
2 Linux Container and Docker2 Linux Container and Docker
2 Linux Container and DockerFabio Fumarola
 
Develop with linux containers and docker
Develop with linux containers and dockerDevelop with linux containers and docker
Develop with linux containers and dockerFabio Fumarola
 
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
 
Introduction to Docker & CoreOS - Symfony User Group Cologne
Introduction to Docker & CoreOS - Symfony User Group CologneIntroduction to Docker & CoreOS - Symfony User Group Cologne
Introduction to Docker & CoreOS - Symfony User Group CologneD
 
Rails infrastructure
Rails infrastructureRails infrastructure
Rails infrastructurequreshiomar
 
NYC Lucene/Solr Meetup: Spark / Solr
NYC Lucene/Solr Meetup: Spark / SolrNYC Lucene/Solr Meetup: Spark / Solr
NYC Lucene/Solr Meetup: Spark / Solrthelabdude
 
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법Open Source Consulting
 
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
Leonid Vasilyev  "Building, deploying and running production code at Dropbox"Leonid Vasilyev  "Building, deploying and running production code at Dropbox"
Leonid Vasilyev "Building, deploying and running production code at Dropbox"IT Event
 
Kubernetes Architecture and Introduction – Paris Kubernetes Meetup
Kubernetes Architecture and Introduction – Paris Kubernetes MeetupKubernetes Architecture and Introduction – Paris Kubernetes Meetup
Kubernetes Architecture and Introduction – Paris Kubernetes MeetupStefan Schimanski
 
Overview of sheepdog
Overview of sheepdogOverview of sheepdog
Overview of sheepdogLiu Yuan
 

What's hot (20)

Container orchestration
Container orchestrationContainer orchestration
Container orchestration
 
Container Orchestration @Docker Meetup Hamburg
Container Orchestration @Docker Meetup HamburgContainer Orchestration @Docker Meetup Hamburg
Container Orchestration @Docker Meetup Hamburg
 
Orchestrating Redis & K8s Operators
Orchestrating Redis & K8s OperatorsOrchestrating Redis & K8s Operators
Orchestrating Redis & K8s Operators
 
What's New on AWS and What it Means to You
What's New on AWS and What it Means to YouWhat's New on AWS and What it Means to You
What's New on AWS and What it Means to You
 
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
 
JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)
 
[NYC Meetup] Docker at Nuxeo
[NYC Meetup] Docker at Nuxeo[NYC Meetup] Docker at Nuxeo
[NYC Meetup] Docker at Nuxeo
 
Spark real world use cases and optimizations
Spark real world use cases and optimizationsSpark real world use cases and optimizations
Spark real world use cases and optimizations
 
Deploying and managing SolrCloud in the cloud using the Solr Scale Toolkit
Deploying and managing SolrCloud in the cloud using the Solr Scale ToolkitDeploying and managing SolrCloud in the cloud using the Solr Scale Toolkit
Deploying and managing SolrCloud in the cloud using the Solr Scale Toolkit
 
Big Search with Big Data Principles
Big Search with Big Data PrinciplesBig Search with Big Data Principles
Big Search with Big Data Principles
 
2 Linux Container and Docker
2 Linux Container and Docker2 Linux Container and Docker
2 Linux Container and Docker
 
Develop with linux containers and docker
Develop with linux containers and dockerDevelop with linux containers and docker
Develop with linux containers and docker
 
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...
 
Introduction to Docker & CoreOS - Symfony User Group Cologne
Introduction to Docker & CoreOS - Symfony User Group CologneIntroduction to Docker & CoreOS - Symfony User Group Cologne
Introduction to Docker & CoreOS - Symfony User Group Cologne
 
Rails infrastructure
Rails infrastructureRails infrastructure
Rails infrastructure
 
NYC Lucene/Solr Meetup: Spark / Solr
NYC Lucene/Solr Meetup: Spark / SolrNYC Lucene/Solr Meetup: Spark / Solr
NYC Lucene/Solr Meetup: Spark / Solr
 
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
 
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
Leonid Vasilyev  "Building, deploying and running production code at Dropbox"Leonid Vasilyev  "Building, deploying and running production code at Dropbox"
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
 
Kubernetes Architecture and Introduction – Paris Kubernetes Meetup
Kubernetes Architecture and Introduction – Paris Kubernetes MeetupKubernetes Architecture and Introduction – Paris Kubernetes Meetup
Kubernetes Architecture and Introduction – Paris Kubernetes Meetup
 
Overview of sheepdog
Overview of sheepdogOverview of sheepdog
Overview of sheepdog
 

Similar to Java10 and Java11 at JJUG CCC 2018 Spr

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なおき きしだ
 
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
 
What’s expected in Java 9
What’s expected in Java 9What’s expected in Java 9
What’s expected in Java 9Gal Marder
 
JCConf 2018 - Retrospect and Prospect of Java
JCConf 2018 - Retrospect and Prospect of JavaJCConf 2018 - Retrospect and Prospect of Java
JCConf 2018 - Retrospect and Prospect of JavaJoseph Kuo
 
Scala at Treasure Data
Scala at Treasure DataScala at Treasure Data
Scala at Treasure DataTaro L. Saito
 
1java Introduction
1java Introduction1java Introduction
1java IntroductionAdil Jafri
 
Migrating to Java 11
Migrating to Java 11Migrating to Java 11
Migrating to Java 11Arto Santala
 
Java Future S Ritter
Java Future S RitterJava Future S Ritter
Java Future S Rittercatherinewall
 
JAVA_Day1_BasicIntroduction.pptx
JAVA_Day1_BasicIntroduction.pptxJAVA_Day1_BasicIntroduction.pptx
JAVA_Day1_BasicIntroduction.pptxMurugesh33
 
JAVAPart1_BasicIntroduction.pptx
JAVAPart1_BasicIntroduction.pptxJAVAPart1_BasicIntroduction.pptx
JAVAPart1_BasicIntroduction.pptxMurugesh33
 
Modules in Java? Finally! (OpenJDK 9 Jigsaw, JSR376)
Modules in Java? Finally! (OpenJDK 9 Jigsaw, JSR376)Modules in Java? Finally! (OpenJDK 9 Jigsaw, JSR376)
Modules in Java? Finally! (OpenJDK 9 Jigsaw, JSR376)Mihail Stoynov
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9Ivan Krylov
 
Tips For Maintaining OSS Projects
Tips For Maintaining OSS ProjectsTips For Maintaining OSS Projects
Tips For Maintaining OSS ProjectsTaro L. Saito
 

Similar to Java10 and Java11 at JJUG CCC 2018 Spr (20)

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
 
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
 
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
 
Java >= 9
Java >= 9Java >= 9
Java >= 9
 
What’s expected in Java 9
What’s expected in Java 9What’s expected in Java 9
What’s expected in Java 9
 
Java platform
Java platformJava platform
Java platform
 
Java9to19Final.pptx
Java9to19Final.pptxJava9to19Final.pptx
Java9to19Final.pptx
 
JCConf 2018 - Retrospect and Prospect of Java
JCConf 2018 - Retrospect and Prospect of JavaJCConf 2018 - Retrospect and Prospect of Java
JCConf 2018 - Retrospect and Prospect of Java
 
Java 9 sneak peek
Java 9 sneak peekJava 9 sneak peek
Java 9 sneak peek
 
Scala at Treasure Data
Scala at Treasure DataScala at Treasure Data
Scala at Treasure Data
 
De Java 8 a Java 11 y 14
De Java 8 a Java 11 y 14De Java 8 a Java 11 y 14
De Java 8 a Java 11 y 14
 
1java Introduction
1java Introduction1java Introduction
1java Introduction
 
Migrating to Java 11
Migrating to Java 11Migrating to Java 11
Migrating to Java 11
 
Java Future S Ritter
Java Future S RitterJava Future S Ritter
Java Future S Ritter
 
JAVA_Day1_BasicIntroduction.pptx
JAVA_Day1_BasicIntroduction.pptxJAVA_Day1_BasicIntroduction.pptx
JAVA_Day1_BasicIntroduction.pptx
 
JAVAPart1_BasicIntroduction.pptx
JAVAPart1_BasicIntroduction.pptxJAVAPart1_BasicIntroduction.pptx
JAVAPart1_BasicIntroduction.pptx
 
Modules in Java? Finally! (OpenJDK 9 Jigsaw, JSR376)
Modules in Java? Finally! (OpenJDK 9 Jigsaw, JSR376)Modules in Java? Finally! (OpenJDK 9 Jigsaw, JSR376)
Modules in Java? Finally! (OpenJDK 9 Jigsaw, JSR376)
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9
 
JavaOne 2011 Recap
JavaOne 2011 RecapJavaOne 2011 Recap
JavaOne 2011 Recap
 
Tips For Maintaining OSS Projects
Tips For Maintaining OSS ProjectsTips For Maintaining OSS Projects
Tips For Maintaining OSS Projects
 

More from なおき きしだ

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道なおき きしだ
 
人工知能に何ができないか
人工知能に何ができないか人工知能に何ができないか
人工知能に何ができないかなおき きしだ
 

More from なおき きしだ (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プログラミング入門
 
人工知能に何ができないか
人工知能に何ができないか人工知能に何ができないか
人工知能に何ができないか
 

Recently uploaded

JS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIJS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIIvo Andreev
 
Why Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfWhy Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfBrain Inventory
 
How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?AmeliaSmith90
 
Generative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilGenerative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilVICTOR MAESTRE RAMIREZ
 
20240330_고급진 코드를 위한 exception 다루기
20240330_고급진 코드를 위한 exception 다루기20240330_고급진 코드를 위한 exception 다루기
20240330_고급진 코드를 위한 exception 다루기Chiwon Song
 
Cybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadCybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadIvo Andreev
 
Top Software Development Trends in 2024
Top Software Development Trends in  2024Top Software Development Trends in  2024
Top Software Development Trends in 2024Mind IT Systems
 
OpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorOpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorShane Coughlan
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdfMeon Technology
 
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine HarmonyLeveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmonyelliciumsolutionspun
 
Mastering Kubernetes - Basics and Advanced Concepts using Example Project
Mastering Kubernetes - Basics and Advanced Concepts using Example ProjectMastering Kubernetes - Basics and Advanced Concepts using Example Project
Mastering Kubernetes - Basics and Advanced Concepts using Example Projectwajrcs
 
Growing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesGrowing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesSoftwareMill
 
AI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyAI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyRaymond Okyere-Forson
 
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...OnePlan Solutions
 
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfTobias Schneck
 
ERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxAutus Cyber Tech
 
Deep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampDeep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampVICTOR MAESTRE RAMIREZ
 
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsYour Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsJaydeep Chhasatia
 
Introduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntroduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntelliSource Technologies
 

Recently uploaded (20)

JS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIJS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AI
 
Why Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfWhy Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdf
 
How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?
 
Generative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilGenerative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-Council
 
20240330_고급진 코드를 위한 exception 다루기
20240330_고급진 코드를 위한 exception 다루기20240330_고급진 코드를 위한 exception 다루기
20240330_고급진 코드를 위한 exception 다루기
 
Cybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadCybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and Bad
 
Top Software Development Trends in 2024
Top Software Development Trends in  2024Top Software Development Trends in  2024
Top Software Development Trends in 2024
 
OpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorOpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS Calculator
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdf
 
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine HarmonyLeveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
 
Mastering Kubernetes - Basics and Advanced Concepts using Example Project
Mastering Kubernetes - Basics and Advanced Concepts using Example ProjectMastering Kubernetes - Basics and Advanced Concepts using Example Project
Mastering Kubernetes - Basics and Advanced Concepts using Example Project
 
Growing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesGrowing Oxen: channel operators and retries
Growing Oxen: channel operators and retries
 
AI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyAI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human Beauty
 
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
 
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
 
Sustainable Web Design - Claire Thornewill
Sustainable Web Design - Claire ThornewillSustainable Web Design - Claire Thornewill
Sustainable Web Design - Claire Thornewill
 
ERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptx
 
Deep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampDeep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - Datacamp
 
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsYour Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
 
Introduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntroduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptx
 

Java10 and Java11 at JJUG CCC 2018 Spr

  • 1. Java 10まとめと、どうなる Java 11 2018/5/26 JJUG CCC 2018 Spring きしだ なおき
  • 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 Paralell Full GC for G1 •  310 Application Class-Data Sharing •  312 Thread-Local Handshakes •  313 Remove 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. Usage for `var` •  var m = new Object() {
 int twice(int x) {
 return x * 2;
 }
 };
 print(m.twice(3));
  • 14. 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
  • 15. 317: Experimental Java-Based JIT Compiler •  Project Metoropolis – java-on-java •  We can write JVM even with Scala? – There is a possibility.
  • 16. 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.
  • 17. 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
  • 18. 312: Thread-Local Handshakes •  JVM can stop an individual thread – stop not just all thread
  • 19. 314: Additional Unicode Language-Tag Extentions •  Enhance java.util.Locale •  additional Unicode extensions of BCP 47 language tag – currency type – the first day of the week – region override – time zone
  • 20. 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
  • 21. 319: Root Certificates •  OpenJDK doesnʼt have Root Certificates so far •  Oracle JDK have had it. •  To smooth migration, OpenJDK have had it.
  • 22. 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
  • 23. 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
  • 24. 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-deplicated” – it had been deplicated by mistake.
  • 26. 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
  • 27. Expected JEPs for JDK11 •  326 Raw String Literals •  325 Switch Expressions •  181 Nest-Based Access Control
  • 28. Launch Single-File Source-Code Programs •  java Hello.java •  Shebang – #! /usr/bin/java –source 10 – chmod +x hello – ./hello
  • 29. Raw String Literals •  var sql = ```select NAME
 from MEMBER
 where id=1``` •  How to address indent
  • 30. 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;
  • 32. Local-Variable Syntax for Lambda Parameters •  list.map(s -> s.toUpperCase())
 .collect(toList()) •  list.map((var s) -> s.toUpperCase())
 .collect(toList())
  • 33. HTTP Client(Standard) •  Guraduate the incubate •  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();
  • 34. Epsilon: A No-Op Garbage Collector •  Do nothing! •  For evaluate GC performance
  • 35. Remove the Java EE and CORBA Modules •  No one uses CORBA! •  The size is large •  Removing them, JDK will be smaller
  • 36. Flight Recorder •  Logging the performance •  Now it is an open source
  • 37. Unicode 10 •  Support Unicode 9 and Unicode 10
  • 38. Nestmate •  To address inner class accesivility •  Valhalla!
  • 40. String •  repeat •  isBlank •  lines •  strip/stripLeading/stripTrailing
  • 41. Predicate::not •  lines.filter(s -> !s.isEmpty()) → lines.filter(Predicate.not(String::isEmp ty))
  • 42. Files •  String Files.read(Path) •  Path FIles.write(Path, String) •  Files.isSameContent(Path, Path)
  • 43. 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)
  • 44. How about Stream#toList? •  modifiable? unmodifible? •  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”
  • 46. Oracle JDK •  Same as the current support •  Very expensive for web servicer •  100 servers on AWS -> 1おくえん
  • 47. 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.
  • 48. AdoptOpenJDK •  Project by London JUG •  IBM suponsered •  Provide pre-build JDK •  LTS support for 4 years
  • 49. Zulu •  Provided by Azul System •  Free to download and use •  Enterprise support – 100 servers $28,750/year – unlimited servers $258,750/year
  • 50. 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