Java Event Report
Java Day Tokyo 2016 + JJUG CCC 2016 Spring + 2015 Fall
Yutaka Kato
1
Agenda
Glossaries
List of Sessions
Java Topics
Java SE 9
Java SE 10
Java EE 8
Tools and Frameworks
Oracle JET
Jenkins 2.0
Spring Framework
Spring Boot
Gradle
2
Glossaries
Term Description
Java Day (JavaOne )
JJUG CCC Japan Java User Group - Cross Community Conference
2 (Spring / Fall)
OpenJDK Java SE (7 ) Oracle JDK
JCP Java Community Process
JSR ・
JSR Java Specification Request
Java
JEP Java Enhancement Proposal
OpenJDK
RI Reference Implementation
3
JJUG CCC 2016 Spring Sessions
[keynote-1] JJUG / [keynote-2] Raspberry Pi with Java / [E-1] / [F-1]
PHP Java / [GH-1] Type Annotation for Static Program Analysis / [E-2] Geb
/ [F-2] Thymeleaf 3 / [GH-2] Eclipse Collections / [AB-3] Java
/ [CD-3] ID ?! Java / [E-3] Spring Boot Boot
Web / [F-3] Java Spring TERASOLUNA / [GH-3] Jenkins 2.0 / [I-3]
Elasticsearch / [M-3] Spring Boot Web / [AB-4] Introduction to JShell: The
Java REPL Tool / [CD-4] Struts/Seasar2 Java EE MVC / [E-4]
/ [F-4] Java / [GH-4] Java / [AB-5] Apache Apex
/ [CD-5] Java EE Web Profile / [E-5] Docker on A.* ∼ ∼ / [F-5] Java
API / [GH-5] Spring Framework/Boot Pivotal
/ [I-5] Java Windows ・ PC
/ [M-5] Python + GDB = Java / [AB-6] Spark Streaming / [CD-6]
SmartNews / [E-6] Java8 / [F-6]
ERP HUE / [GH-6] Seasar2 / [I-6_1]
Beats / [M-6_1] Gradle / [I-6_2] OpenJDK / [M-6_2]
Play Framework / [AB-7] Java / [CD-7]
enkan( kotowari) REPL / [GH-7] Java Puzzlers / [I-7_1]
/ [I-7_2] SpringBoot+Kotlin / [M-7_1] Java / [M-7_2] JVM:
4
Java Day Tokyo 2016 Sessions
[KY] Innovate, Collaborate, with Java / [1-A] Java SE 9 Overview / [1-B] Introduction to MVC 1.0 (JSR 371) / [1-C] ・
/ [1-D] Java Flight Recorder / [1-E] Versatile Java -
/ [1-F] Java FX 8 / [2-A] Project Jigsaw / [2-B] NetBeans IDE / [2-C] Java
EE 7 Web / [2-D] Oracle Developer Cloud Service JavaEE 7 / [2-E]
JavaEE AP / [2-F] IoT / [3-A] Putting Hypermedia Back in
REST with JAX-RS / [3-B] JavaFX 8 and the future / [3-C] Java Concurrency, A(nother) Peek Under the Hood / [3-D] Java EE
/ [3-E] Java / [4-A] Java 9
/ [4-B] What HTTP/2 means to Java Developers? / [4-C] CDI2.0 / [4-D] IoT ・
/ [4-E] Java / [5-A] Java EE 7 / [5-B] Introduction to
Oracle JET / [5-C] Java “ ” / [5-D] Java SE 8 / [5-E]
GlobalPlatform Wearable/IoT / [NS] ・ - Java Day Night Session with NightHacking Tour
:
5
Java 9
Modularization, JShell, G1 GC, HTTP/2, and more
6
OpenJDK 9 JEPs
102: Process API Updates / 110: HTTP 2 Client / 143: Improve Contended Locking / 158: Unified JVM Logging / 165: Compiler Control / 193:
Variable Handles / 197: Segmented Code Cache / 199: Smart Java Compilation, Phase Two / 200: The Modular JDK / 201: Modular Source
Code / 211: Elide Deprecation Warnings on Import Statements / 212: Resolve Lint and Doclint Warnings / 213: Milling Project Coin / 214:
Remove GC Combinations Deprecated in JDK 8 / 215: Tiered Attribution for javac / 216: Process Import Statements Correctly / 217:
Annotations Pipeline 2.0 / 219: Datagram Transport Layer Security (DTLS) / 220: Modular Run-Time Images / 221: Simplified Doclet API /
222: jshell: The Java Shell (Read-Eval-Print Loop) / 223: New Version-String Scheme / 224: HTML5 Javadoc / 225: Javadoc Search / 226: UTF-
8 Property Files / 227: Unicode 7.0 / 228: Add More Diagnostic Commands / 229: Create PKCS12 Keystores by Default / 231: Remove
Launch-Time JRE Version Selection / 232: Improve Secure Application Performance / 233: Generate Run-Time Compiler Tests
Automatically / 235: Test Class-File Attributes Generated by javac / 236: Parser API for Nashorn / 237: Linux/AArch64 Port / 238: Multi-
Release JAR Files / 240: Remove the JVM TI hprof Agent / 241: Remove the jhat Tool / 243: Java-Level JVM Compiler Interface / 244: TLS
Application-Layer Protocol Negotiation Extension / 245: Validate JVM Command-Line Flag Arguments / 246: Leverage CPU Instructions for
GHASH and RSA / 247: Compile for Older Platform Versions / 248: Make G1 the Default Garbage Collector / 249: OCSP Stapling for TLS /
250: Store Interned Strings in CDS Archives / 251: Multi-Resolution Images / 252: Use CLDR Locale Data by Default / 253: Prepare JavaFX UI
Controls & CSS APIs for Modularization / 254: Compact Strings / 255: Merge Selected Xerces 2.11.0 Updates into JAXP / 256: BeanInfo
Annotations / 257: Update JavaFX/Media to Newer Version of GStreamer / 258: HarfBuzz Font-Layout Engine / 259: Stack-Walking API /
260: Encapsulate Most Internal APIs / 261: Module System / 262: TIFF Image I/O / 263: HiDPI Graphics on Windows and Linux / 264:
Platform Logging API and Service / 265: Marlin Graphics Renderer / 266: More Concurrency Updates / 267: Unicode 8.0 / 268: XML
Catalogs / 269: Convenience Factory Methods for Collections / 270: Reserved Stack Areas for Critical Sections / 271: Unified GC Logging /
272: Platform-Specific Desktop Features / 273: DRBG-Based SecureRandom Implementations / 274: Enhanced Method Handles / 275:
Modular Java Application Packaging / 276: Dynamic Linking of Language-Defined Object Models / 277: Enhanced Deprecation / 278:
Additional Tests for Humongous Objects in G1 / 279: Improve Test-Failure Troubleshooting / 280: Indify String Concatenation / 281:
HotSpot C++ Unit-Test Framework / 282: jlink: The Java Linker / 283: Enable GTK 3 on Linux / 284: New HotSpot Build System / 285: Spin-
Wait Hints / 287: SHA-3 Hash Algorithms / 289: Deprecate the Applet API
7
Modularization (Project Jigsaw)
: Project Jigsaw JEPs / : JEPs
102: Process API Updates / 110: HTTP 2 Client / 143: Improve Contended Locking / 158: Unified JVM Logging / 165: Compiler Control / 193:
Variable Handles / 197: Segmented Code Cache / 199: Smart Java Compilation, Phase Two / 200: The Modular JDK / 201: Modular Source
Code / 211: Elide Deprecation Warnings on Import Statements / 212: Resolve Lint and Doclint Warnings / 213: Milling Project Coin / 214:
Remove GC Combinations Deprecated in JDK 8 / 215: Tiered Attribution for javac / 216: Process Import Statements Correctly / 217:
Annotations Pipeline 2.0 / 219: Datagram Transport Layer Security (DTLS) / 220: Modular Run-Time Images / 221: Simplified Doclet API /
222: jshell: The Java Shell (Read-Eval-Print Loop) / 223: New Version-String Scheme / 224: HTML5 Javadoc / 225: Javadoc Search / 226: UTF-
8 Property Files / 227: Unicode 7.0 / 228: Add More Diagnostic Commands / 229: Create PKCS12 Keystores by Default / 231: Remove
Launch-Time JRE Version Selection / 232: Improve Secure Application Performance / 233: Generate Run-Time Compiler Tests
Automatically / 235: Test Class-File Attributes Generated by javac / 236: Parser API for Nashorn / 237: Linux/AArch64 Port / 238: Multi-
Release JAR Files / 240: Remove the JVM TI hprof Agent / 241: Remove the jhat Tool / 243: Java-Level JVM Compiler Interface / 244: TLS
Application-Layer Protocol Negotiation Extension / 245: Validate JVM Command-Line Flag Arguments / 246: Leverage CPU Instructions for
GHASH and RSA / 247: Compile for Older Platform Versions / 248: Make G1 the Default Garbage Collector / 249: OCSP Stapling for TLS /
250: Store Interned Strings in CDS Archives / 251: Multi-Resolution Images / 252: Use CLDR Locale Data by Default / 253: Prepare JavaFX UI
Controls & CSS APIs for Modularization / 254: Compact Strings / 255: Merge Selected Xerces 2.11.0 Updates into JAXP / 256: BeanInfo
Annotations / 257: Update JavaFX/Media to Newer Version of GStreamer / 258: HarfBuzz Font-Layout Engine / 259: Stack-Walking API /
260: Encapsulate Most Internal APIs / 261: Module System / 262: TIFF Image I/O / 263: HiDPI Graphics on Windows and Linux / 264:
Platform Logging API and Service / 265: Marlin Graphics Renderer / 266: More Concurrency Updates / 267: Unicode 8.0 / 268: XML
Catalogs / 269: Convenience Factory Methods for Collections / 270: Reserved Stack Areas for Critical Sections / 271: Unified GC Logging /
272: Platform-Specific Desktop Features / 273: DRBG-Based SecureRandom Implementations / 274: Enhanced Method Handles / 275:
Modular Java Application Packaging / 276: Dynamic Linking of Language-Defined Object Models / 277: Enhanced Deprecation / 278:
Additional Tests for Humongous Objects in G1 / 279: Improve Test-Failure Troubleshooting / 280: Indify String Concatenation / 281:
HotSpot C++ Unit-Test Framework / 282: jlink: The Java Linker / 283: Enable GTK 3 on Linux / 284: New HotSpot Build System / 285: Spin-
Wait Hints / 287: SHA-3 Hash Algorithms / 289: Deprecate the Applet API
8
Modularization (Project Jigsaw)
module-info.java
:
module com.ricoh.slnx.auth.embedded {
requires org.osgi.framework; //
exports com.ricoh.slnx.auth.embedded.app; // main
​}
Java SE : java.logging, javafx.controls
java.base requires
JRE
sun.misc.Unsafe (JEP 260)
・・・
sun.misc.BASE64Decoder Java 8 java.util.base64
Project Jigsaw
http://www.oracle.co.jp/jdt2016/pdf/2-A.pdf
Ref. Java Day Tokyo 2016
9
Interesting Topics
102: Process API Updates / 110: HTTP 2 Client / 143: Improve Contended Locking / 158: Unified JVM Logging / 165: Compiler Control / 193:
Variable Handles / 197: Segmented Code Cache / 199: Smart Java Compilation, Phase Two / 200: The Modular JDK / 201: Modular Source
Code / 211: Elide Deprecation Warnings on Import Statements / 212: Resolve Lint and Doclint Warnings / 213: Milling Project Coin / 214:
Remove GC Combinations Deprecated in JDK 8 / 215: Tiered Attribution for javac / 216: Process Import Statements Correctly / 217:
Annotations Pipeline 2.0 / 219: Datagram Transport Layer Security (DTLS) / 220: Modular Run-Time Images / 221: Simplified Doclet API /
222: jshell: The Java Shell (Read-Eval-Print Loop) / 223: New Version-String Scheme / 224: HTML5 Javadoc / 225: Javadoc Search / 226: UTF-
8 Property Files / 227: Unicode 7.0 / 228: Add More Diagnostic Commands / 229: Create PKCS12 Keystores by Default / 231: Remove
Launch-Time JRE Version Selection / 232: Improve Secure Application Performance / 233: Generate Run-Time Compiler Tests
Automatically / 235: Test Class-File Attributes Generated by javac / 236: Parser API for Nashorn / 237: Linux/AArch64 Port / 238: Multi-
Release JAR Files / 240: Remove the JVM TI hprof Agent / 241: Remove the jhat Tool / 243: Java-Level JVM Compiler Interface / 244: TLS
Application-Layer Protocol Negotiation Extension / 245: Validate JVM Command-Line Flag Arguments / 246: Leverage CPU Instructions for
GHASH and RSA / 247: Compile for Older Platform Versions / 248: Make G1 the Default Garbage Collector / 249: OCSP Stapling for TLS /
250: Store Interned Strings in CDS Archives / 251: Multi-Resolution Images / 252: Use CLDR Locale Data by Default / 253: Prepare JavaFX UI
Controls & CSS APIs for Modularization / 254: Compact Strings / 255: Merge Selected Xerces 2.11.0 Updates into JAXP / 256: BeanInfo
Annotations / 257: Update JavaFX/Media to Newer Version of GStreamer / 258: HarfBuzz Font-Layout Engine / 259: Stack-Walking API /
260: Encapsulate Most Internal APIs / 261: Module System / 262: TIFF Image I/O / 263: HiDPI Graphics on Windows and Linux / 264:
Platform Logging API and Service / 265: Marlin Graphics Renderer / 266: More Concurrency Updates / 267: Unicode 8.0 / 268: XML
Catalogs / 269: Convenience Factory Methods for Collections / 270: Reserved Stack Areas for Critical Sections / 271: Unified GC Logging /
272: Platform-Specific Desktop Features / 273: DRBG-Based SecureRandom Implementations / 274: Enhanced Method Handles / 275:
Modular Java Application Packaging / 276: Dynamic Linking of Language-Defined Object Models / 277: Enhanced Deprecation / 278:
Additional Tests for Humongous Objects in G1 / 279: Improve Test-Failure Troubleshooting / 280: Indify String Concatenation / 281:
HotSpot C++ Unit-Test Framework / 282: jlink: The Java Linker / 283: Enable GTK 3 on Linux / 284: New HotSpot Build System / 285: Spin-
Wait Hints / 287: SHA-3 Hash Algorithms / 289: Deprecate the Applet API
: ( )
10
JShell (Project Kulla)
Introduction to JShell: The Java REPL Tool
http://www.slideshare.net/bitter_fox/introduction-to-jshell-the-java-repl-tool
Ref. JJUG CCC 2016 Spring
REPL (read-eval-print loop)
API
/xx ( )
jjs
11
G1 (Gabage First) GC
JDK7 HotSpot GC
Concurrent Mark-Sweep GC
8u40 concurrent class unloading
4GB Heap
JDK9 ( Parallel GC)
32bit Client VM (Serial GC)
Garbage First Garbage Collection (G1 GC)
http://www.slideshare.net/YujiKubota/garbage-first-garbage-collection
Ref. JJUG CCC 2015 Fall
5 ,6
12
HTTP/2
HttpURLConnection API
java.net.http.HttpClient
create().version(HTTP_2).build()
java.net.http.HttpRequest
create(new URI("http://...")).GET()
response(), responseAsync(), multiResponseAsync()
java.net.http.HttpResponse
statusCode(), asByteArray(), asString(), asFile(path), ...
MultiProcessor: multiFile("/tmp")
"java.httpclient"
What HTTP/2 means to Java Developers?
http://www.oracle.co.jp/jdt2016/pdf/4-B.pdf
Ref. Java Day Tokyo 2016
13
Minor Enhancements
Process API (JEP 102)
supportsNormalTermination, getPid, onExit, toHandle, info, descendants, children
Collections (JEP 269)
List<String> list = List.of(“a”, “b”, “c”); // Set
Map<String, Integer> map = Map.of("a", 1, "b", 2, "c", 3); // 8
Map<String, Integer> map = Map.fromEntries(entry("a", 1), entry("b", 2)); //
@Deprecated (JEP 277)
@Deprecated(reason=DANGEROUS, since=“2.0”) // : 2.0
-verbose:deprecation
Java 7 8 (JEP 213)
try-with-resources
interface (Java 8 default / static )
14
Tips
UTF-8 (JEP 226)
Javadoc HTML5 (JEP 224, 225)
JDK (JEP 223)
: 1.9.0_25 → 9.1.3
jcmd jhsdb (JEP 158, 165)
JVM
Ref.
Java
http://www.oracle.co.jp/jdt2016/pdf/4-A.pdf
Java Day Tokyo 2016
15
Java 10
Value Types, Specialized Generics, Arrays 2.0, and more
16
Project Valhalla
Java
http://www.slideshare.net/nowokay/javajjug-ccc-2015-fall
JJUG CCC 2015 FallRef.
Value Types
: int
Specialized Generics
Foo<int> foo = new Foo<>(10); //
class Point {
final int x;
final in y;
}
value class Point {
final int x;
final in y;
}
“ New Wind of Java http://www.slideshare.net/skrb/new-wind-of-java
17
Project Panama
Arrays 2.0
Immutable -
long
JNR/FFI
Java Native Runtime / Foreign Function Interface
・
Data Layout Control
18
Java EE 8
Action Based MVC, JSON Binding, and updates
19
Java EE 8 JSRs
CDI 2.0 (JSR 365)
JSON-B 1.0 (JSR 367)
JMS 2.1 (JSR 368)
Servlet 4.0 (JSR 369)
JAX-RS 2.1 (JSR 370)
MVC 1.0 (JSR 371)
JSF 2.3 (JSR 372)
Management 2.0 (JSR 373)
JSON-P 1.1 (JSR 374)
Security 1.0 (JSR 375)
20
MVC 1.0
Action Based MVC Java EE
Component Based: ( : JSF)
Action Based: ( : Spring MVC)​
Ref.
Introduction to MVC 1.0
http://www.oracle.co.jp/jdt2016/pdf/1-B.pdf
Java Day Tokyo 2016
@Path("hello")
public class HelloController {
@Inject
private User user;
@GET
@Controller
public String hello(@QueryParam("name") String name) {
user.setName(name);
return "hello.jsp";
}
}
“ Ozark (MVC 1.0 RI) https://ozark.java.net/
Model CDI, JPA, Bean Validation
View Facelets JSP
21
JSON Binding 1.0
POJO - JSON API (JAXB JSON )
※Public Draft ( JavaOne )
“ Java API for JSON Binding - Introduction and update http://www.slideshare.net/mgrebac1/java-api-for-json-binding
Package: javax.json.bind
jsonb.fromJson(new File("jsonfile.json"), Foo.class);
​jsonb.toJson(object, new File("foo.json");
RI: EclipseLink MOXy
Employee e = new Employee();
e.id = 523596;
e.firstName = "Yutaka";
e.lastName = "Kato";
e.email = "yutaka.yk.katoh@...";
{
"id": 523596,
"firstName": "Yutaka",
"lastName": "Kato",
"email": "yutaka.yk.katoh@..."
}
22
Enhancements
CDI (Contexts and DI) 2.0
Java SE Bootstrap API
CDI
Management 2.0
REST API
Security 1.0
・
Servlet 4.0
HTTP/2 , Server Push
Ref.
CDI2.0 &
http://www.oracle.co.jp/jdt2016/pdf/4-C.pdf
Java Day Tokyo 2016
23
EJB and JSP
Java EE
EJB CDI
JSP JSF/Facelets
Ref.
Java EE 7
http://www.oracle.co.jp/jdt2016/pdf/5-A.pdf
Java Day Tokyo 2016
24
Tools & Frameworks
Oracle JET, Jenkins 2.0, Spring, and Gradle
25
Oracle JET
Enterprise Web
JS
jQuery, KnockoutJS, RequireJS
NetBeans
Ref.
Introduction to Oracle JET
https://www.youtube.com/watch?v=xOTwBZjgKSI
Java Day Tokyo 2016
26
Jenkins 2.0
Pipeline as Code
Jenkinsfile -
GitHub Organization Folder
UI
7 LTS 2
Jenkins 2.0
http://www.slideshare.net/kohsuke/jenkins-20
Ref. JJUG CCC 2016 Spring
27
Spring Framework / Boot
Spring Framework 4.3
DI (@Autowired )
InjectionPoint (CDI )
(@GetMapping )
Spring Boot 1.4
AA
Couchbase 2.0 Neo4j
Spring Framework 5.0
JDK9 , HTTP/2, Reactive
Spring Framework/Boot Pivotal
slideshare.net/makingx/jjugccc-cccgh5-whats-new-in-spring-framework-43-boot-14-pivotals-cloud-native-approach
Ref. JJUG CCC 2016 Spring
28
Gradle
Gradle 2.13
TestKit
Kotlin build.gradle
・・・
→
POI xls csv ...
SSH Plugin, Git Plugin, Node/Grunt/Gulp Plugin...
Nebura: Netflix Plugin
Gradle
https://github.com/grimrose/JJUG-CCC-2016-Spring
Ref. JJUG CCC 2016 Spring
29
Other Topics
Geb (Selenium )
Thymeleaf ( )
Spark Streaming (Spark )
Elastic Beats (Elasticsearch )
Kotlin (JVM )
Eclipse Che ( IDE)
30
Slide Materials
JJUG CCC 2016 Spring
Java Day Tokyo 2016
https://github.com/jjug-ccc/slides-articles-2016spring
http://www.oracle.com/technetwork/jp/ondemand/online2016-javaday-
3003089-ja.html
31

GBDC 勉強会 #6 Java イベントレポート 2016

  • 1.
    Java Event Report JavaDay Tokyo 2016 + JJUG CCC 2016 Spring + 2015 Fall Yutaka Kato 1
  • 2.
    Agenda Glossaries List of Sessions JavaTopics Java SE 9 Java SE 10 Java EE 8 Tools and Frameworks Oracle JET Jenkins 2.0 Spring Framework Spring Boot Gradle 2
  • 3.
    Glossaries Term Description Java Day(JavaOne ) JJUG CCC Japan Java User Group - Cross Community Conference 2 (Spring / Fall) OpenJDK Java SE (7 ) Oracle JDK JCP Java Community Process JSR ・ JSR Java Specification Request Java JEP Java Enhancement Proposal OpenJDK RI Reference Implementation 3
  • 4.
    JJUG CCC 2016Spring Sessions [keynote-1] JJUG / [keynote-2] Raspberry Pi with Java / [E-1] / [F-1] PHP Java / [GH-1] Type Annotation for Static Program Analysis / [E-2] Geb / [F-2] Thymeleaf 3 / [GH-2] Eclipse Collections / [AB-3] Java / [CD-3] ID ?! Java / [E-3] Spring Boot Boot Web / [F-3] Java Spring TERASOLUNA / [GH-3] Jenkins 2.0 / [I-3] Elasticsearch / [M-3] Spring Boot Web / [AB-4] Introduction to JShell: The Java REPL Tool / [CD-4] Struts/Seasar2 Java EE MVC / [E-4] / [F-4] Java / [GH-4] Java / [AB-5] Apache Apex / [CD-5] Java EE Web Profile / [E-5] Docker on A.* ∼ ∼ / [F-5] Java API / [GH-5] Spring Framework/Boot Pivotal / [I-5] Java Windows ・ PC / [M-5] Python + GDB = Java / [AB-6] Spark Streaming / [CD-6] SmartNews / [E-6] Java8 / [F-6] ERP HUE / [GH-6] Seasar2 / [I-6_1] Beats / [M-6_1] Gradle / [I-6_2] OpenJDK / [M-6_2] Play Framework / [AB-7] Java / [CD-7] enkan( kotowari) REPL / [GH-7] Java Puzzlers / [I-7_1] / [I-7_2] SpringBoot+Kotlin / [M-7_1] Java / [M-7_2] JVM: 4
  • 5.
    Java Day Tokyo2016 Sessions [KY] Innovate, Collaborate, with Java / [1-A] Java SE 9 Overview / [1-B] Introduction to MVC 1.0 (JSR 371) / [1-C] ・ / [1-D] Java Flight Recorder / [1-E] Versatile Java - / [1-F] Java FX 8 / [2-A] Project Jigsaw / [2-B] NetBeans IDE / [2-C] Java EE 7 Web / [2-D] Oracle Developer Cloud Service JavaEE 7 / [2-E] JavaEE AP / [2-F] IoT / [3-A] Putting Hypermedia Back in REST with JAX-RS / [3-B] JavaFX 8 and the future / [3-C] Java Concurrency, A(nother) Peek Under the Hood / [3-D] Java EE / [3-E] Java / [4-A] Java 9 / [4-B] What HTTP/2 means to Java Developers? / [4-C] CDI2.0 / [4-D] IoT ・ / [4-E] Java / [5-A] Java EE 7 / [5-B] Introduction to Oracle JET / [5-C] Java “ ” / [5-D] Java SE 8 / [5-E] GlobalPlatform Wearable/IoT / [NS] ・ - Java Day Night Session with NightHacking Tour : 5
  • 6.
    Java 9 Modularization, JShell,G1 GC, HTTP/2, and more 6
  • 7.
    OpenJDK 9 JEPs 102:Process API Updates / 110: HTTP 2 Client / 143: Improve Contended Locking / 158: Unified JVM Logging / 165: Compiler Control / 193: Variable Handles / 197: Segmented Code Cache / 199: Smart Java Compilation, Phase Two / 200: The Modular JDK / 201: Modular Source Code / 211: Elide Deprecation Warnings on Import Statements / 212: Resolve Lint and Doclint Warnings / 213: Milling Project Coin / 214: Remove GC Combinations Deprecated in JDK 8 / 215: Tiered Attribution for javac / 216: Process Import Statements Correctly / 217: Annotations Pipeline 2.0 / 219: Datagram Transport Layer Security (DTLS) / 220: Modular Run-Time Images / 221: Simplified Doclet API / 222: jshell: The Java Shell (Read-Eval-Print Loop) / 223: New Version-String Scheme / 224: HTML5 Javadoc / 225: Javadoc Search / 226: UTF- 8 Property Files / 227: Unicode 7.0 / 228: Add More Diagnostic Commands / 229: Create PKCS12 Keystores by Default / 231: Remove Launch-Time JRE Version Selection / 232: Improve Secure Application Performance / 233: Generate Run-Time Compiler Tests Automatically / 235: Test Class-File Attributes Generated by javac / 236: Parser API for Nashorn / 237: Linux/AArch64 Port / 238: Multi- Release JAR Files / 240: Remove the JVM TI hprof Agent / 241: Remove the jhat Tool / 243: Java-Level JVM Compiler Interface / 244: TLS Application-Layer Protocol Negotiation Extension / 245: Validate JVM Command-Line Flag Arguments / 246: Leverage CPU Instructions for GHASH and RSA / 247: Compile for Older Platform Versions / 248: Make G1 the Default Garbage Collector / 249: OCSP Stapling for TLS / 250: Store Interned Strings in CDS Archives / 251: Multi-Resolution Images / 252: Use CLDR Locale Data by Default / 253: Prepare JavaFX UI Controls & CSS APIs for Modularization / 254: Compact Strings / 255: Merge Selected Xerces 2.11.0 Updates into JAXP / 256: BeanInfo Annotations / 257: Update JavaFX/Media to Newer Version of GStreamer / 258: HarfBuzz Font-Layout Engine / 259: Stack-Walking API / 260: Encapsulate Most Internal APIs / 261: Module System / 262: TIFF Image I/O / 263: HiDPI Graphics on Windows and Linux / 264: Platform Logging API and Service / 265: Marlin Graphics Renderer / 266: More Concurrency Updates / 267: Unicode 8.0 / 268: XML Catalogs / 269: Convenience Factory Methods for Collections / 270: Reserved Stack Areas for Critical Sections / 271: Unified GC Logging / 272: Platform-Specific Desktop Features / 273: DRBG-Based SecureRandom Implementations / 274: Enhanced Method Handles / 275: Modular Java Application Packaging / 276: Dynamic Linking of Language-Defined Object Models / 277: Enhanced Deprecation / 278: Additional Tests for Humongous Objects in G1 / 279: Improve Test-Failure Troubleshooting / 280: Indify String Concatenation / 281: HotSpot C++ Unit-Test Framework / 282: jlink: The Java Linker / 283: Enable GTK 3 on Linux / 284: New HotSpot Build System / 285: Spin- Wait Hints / 287: SHA-3 Hash Algorithms / 289: Deprecate the Applet API 7
  • 8.
    Modularization (Project Jigsaw) :Project Jigsaw JEPs / : JEPs 102: Process API Updates / 110: HTTP 2 Client / 143: Improve Contended Locking / 158: Unified JVM Logging / 165: Compiler Control / 193: Variable Handles / 197: Segmented Code Cache / 199: Smart Java Compilation, Phase Two / 200: The Modular JDK / 201: Modular Source Code / 211: Elide Deprecation Warnings on Import Statements / 212: Resolve Lint and Doclint Warnings / 213: Milling Project Coin / 214: Remove GC Combinations Deprecated in JDK 8 / 215: Tiered Attribution for javac / 216: Process Import Statements Correctly / 217: Annotations Pipeline 2.0 / 219: Datagram Transport Layer Security (DTLS) / 220: Modular Run-Time Images / 221: Simplified Doclet API / 222: jshell: The Java Shell (Read-Eval-Print Loop) / 223: New Version-String Scheme / 224: HTML5 Javadoc / 225: Javadoc Search / 226: UTF- 8 Property Files / 227: Unicode 7.0 / 228: Add More Diagnostic Commands / 229: Create PKCS12 Keystores by Default / 231: Remove Launch-Time JRE Version Selection / 232: Improve Secure Application Performance / 233: Generate Run-Time Compiler Tests Automatically / 235: Test Class-File Attributes Generated by javac / 236: Parser API for Nashorn / 237: Linux/AArch64 Port / 238: Multi- Release JAR Files / 240: Remove the JVM TI hprof Agent / 241: Remove the jhat Tool / 243: Java-Level JVM Compiler Interface / 244: TLS Application-Layer Protocol Negotiation Extension / 245: Validate JVM Command-Line Flag Arguments / 246: Leverage CPU Instructions for GHASH and RSA / 247: Compile for Older Platform Versions / 248: Make G1 the Default Garbage Collector / 249: OCSP Stapling for TLS / 250: Store Interned Strings in CDS Archives / 251: Multi-Resolution Images / 252: Use CLDR Locale Data by Default / 253: Prepare JavaFX UI Controls & CSS APIs for Modularization / 254: Compact Strings / 255: Merge Selected Xerces 2.11.0 Updates into JAXP / 256: BeanInfo Annotations / 257: Update JavaFX/Media to Newer Version of GStreamer / 258: HarfBuzz Font-Layout Engine / 259: Stack-Walking API / 260: Encapsulate Most Internal APIs / 261: Module System / 262: TIFF Image I/O / 263: HiDPI Graphics on Windows and Linux / 264: Platform Logging API and Service / 265: Marlin Graphics Renderer / 266: More Concurrency Updates / 267: Unicode 8.0 / 268: XML Catalogs / 269: Convenience Factory Methods for Collections / 270: Reserved Stack Areas for Critical Sections / 271: Unified GC Logging / 272: Platform-Specific Desktop Features / 273: DRBG-Based SecureRandom Implementations / 274: Enhanced Method Handles / 275: Modular Java Application Packaging / 276: Dynamic Linking of Language-Defined Object Models / 277: Enhanced Deprecation / 278: Additional Tests for Humongous Objects in G1 / 279: Improve Test-Failure Troubleshooting / 280: Indify String Concatenation / 281: HotSpot C++ Unit-Test Framework / 282: jlink: The Java Linker / 283: Enable GTK 3 on Linux / 284: New HotSpot Build System / 285: Spin- Wait Hints / 287: SHA-3 Hash Algorithms / 289: Deprecate the Applet API 8
  • 9.
    Modularization (Project Jigsaw) module-info.java : modulecom.ricoh.slnx.auth.embedded { requires org.osgi.framework; // exports com.ricoh.slnx.auth.embedded.app; // main ​} Java SE : java.logging, javafx.controls java.base requires JRE sun.misc.Unsafe (JEP 260) ・・・ sun.misc.BASE64Decoder Java 8 java.util.base64 Project Jigsaw http://www.oracle.co.jp/jdt2016/pdf/2-A.pdf Ref. Java Day Tokyo 2016 9
  • 10.
    Interesting Topics 102: ProcessAPI Updates / 110: HTTP 2 Client / 143: Improve Contended Locking / 158: Unified JVM Logging / 165: Compiler Control / 193: Variable Handles / 197: Segmented Code Cache / 199: Smart Java Compilation, Phase Two / 200: The Modular JDK / 201: Modular Source Code / 211: Elide Deprecation Warnings on Import Statements / 212: Resolve Lint and Doclint Warnings / 213: Milling Project Coin / 214: Remove GC Combinations Deprecated in JDK 8 / 215: Tiered Attribution for javac / 216: Process Import Statements Correctly / 217: Annotations Pipeline 2.0 / 219: Datagram Transport Layer Security (DTLS) / 220: Modular Run-Time Images / 221: Simplified Doclet API / 222: jshell: The Java Shell (Read-Eval-Print Loop) / 223: New Version-String Scheme / 224: HTML5 Javadoc / 225: Javadoc Search / 226: UTF- 8 Property Files / 227: Unicode 7.0 / 228: Add More Diagnostic Commands / 229: Create PKCS12 Keystores by Default / 231: Remove Launch-Time JRE Version Selection / 232: Improve Secure Application Performance / 233: Generate Run-Time Compiler Tests Automatically / 235: Test Class-File Attributes Generated by javac / 236: Parser API for Nashorn / 237: Linux/AArch64 Port / 238: Multi- Release JAR Files / 240: Remove the JVM TI hprof Agent / 241: Remove the jhat Tool / 243: Java-Level JVM Compiler Interface / 244: TLS Application-Layer Protocol Negotiation Extension / 245: Validate JVM Command-Line Flag Arguments / 246: Leverage CPU Instructions for GHASH and RSA / 247: Compile for Older Platform Versions / 248: Make G1 the Default Garbage Collector / 249: OCSP Stapling for TLS / 250: Store Interned Strings in CDS Archives / 251: Multi-Resolution Images / 252: Use CLDR Locale Data by Default / 253: Prepare JavaFX UI Controls & CSS APIs for Modularization / 254: Compact Strings / 255: Merge Selected Xerces 2.11.0 Updates into JAXP / 256: BeanInfo Annotations / 257: Update JavaFX/Media to Newer Version of GStreamer / 258: HarfBuzz Font-Layout Engine / 259: Stack-Walking API / 260: Encapsulate Most Internal APIs / 261: Module System / 262: TIFF Image I/O / 263: HiDPI Graphics on Windows and Linux / 264: Platform Logging API and Service / 265: Marlin Graphics Renderer / 266: More Concurrency Updates / 267: Unicode 8.0 / 268: XML Catalogs / 269: Convenience Factory Methods for Collections / 270: Reserved Stack Areas for Critical Sections / 271: Unified GC Logging / 272: Platform-Specific Desktop Features / 273: DRBG-Based SecureRandom Implementations / 274: Enhanced Method Handles / 275: Modular Java Application Packaging / 276: Dynamic Linking of Language-Defined Object Models / 277: Enhanced Deprecation / 278: Additional Tests for Humongous Objects in G1 / 279: Improve Test-Failure Troubleshooting / 280: Indify String Concatenation / 281: HotSpot C++ Unit-Test Framework / 282: jlink: The Java Linker / 283: Enable GTK 3 on Linux / 284: New HotSpot Build System / 285: Spin- Wait Hints / 287: SHA-3 Hash Algorithms / 289: Deprecate the Applet API : ( ) 10
  • 11.
    JShell (Project Kulla) Introductionto JShell: The Java REPL Tool http://www.slideshare.net/bitter_fox/introduction-to-jshell-the-java-repl-tool Ref. JJUG CCC 2016 Spring REPL (read-eval-print loop) API /xx ( ) jjs 11
  • 12.
    G1 (Gabage First)GC JDK7 HotSpot GC Concurrent Mark-Sweep GC 8u40 concurrent class unloading 4GB Heap JDK9 ( Parallel GC) 32bit Client VM (Serial GC) Garbage First Garbage Collection (G1 GC) http://www.slideshare.net/YujiKubota/garbage-first-garbage-collection Ref. JJUG CCC 2015 Fall 5 ,6 12
  • 13.
    HTTP/2 HttpURLConnection API java.net.http.HttpClient create().version(HTTP_2).build() java.net.http.HttpRequest create(new URI("http://...")).GET() response(),responseAsync(), multiResponseAsync() java.net.http.HttpResponse statusCode(), asByteArray(), asString(), asFile(path), ... MultiProcessor: multiFile("/tmp") "java.httpclient" What HTTP/2 means to Java Developers? http://www.oracle.co.jp/jdt2016/pdf/4-B.pdf Ref. Java Day Tokyo 2016 13
  • 14.
    Minor Enhancements Process API(JEP 102) supportsNormalTermination, getPid, onExit, toHandle, info, descendants, children Collections (JEP 269) List<String> list = List.of(“a”, “b”, “c”); // Set Map<String, Integer> map = Map.of("a", 1, "b", 2, "c", 3); // 8 Map<String, Integer> map = Map.fromEntries(entry("a", 1), entry("b", 2)); // @Deprecated (JEP 277) @Deprecated(reason=DANGEROUS, since=“2.0”) // : 2.0 -verbose:deprecation Java 7 8 (JEP 213) try-with-resources interface (Java 8 default / static ) 14
  • 15.
    Tips UTF-8 (JEP 226) JavadocHTML5 (JEP 224, 225) JDK (JEP 223) : 1.9.0_25 → 9.1.3 jcmd jhsdb (JEP 158, 165) JVM Ref. Java http://www.oracle.co.jp/jdt2016/pdf/4-A.pdf Java Day Tokyo 2016 15
  • 16.
    Java 10 Value Types,Specialized Generics, Arrays 2.0, and more 16
  • 17.
    Project Valhalla Java http://www.slideshare.net/nowokay/javajjug-ccc-2015-fall JJUG CCC2015 FallRef. Value Types : int Specialized Generics Foo<int> foo = new Foo<>(10); // class Point { final int x; final in y; } value class Point { final int x; final in y; } “ New Wind of Java http://www.slideshare.net/skrb/new-wind-of-java 17
  • 18.
    Project Panama Arrays 2.0 Immutable- long JNR/FFI Java Native Runtime / Foreign Function Interface ・ Data Layout Control 18
  • 19.
    Java EE 8 ActionBased MVC, JSON Binding, and updates 19
  • 20.
    Java EE 8JSRs CDI 2.0 (JSR 365) JSON-B 1.0 (JSR 367) JMS 2.1 (JSR 368) Servlet 4.0 (JSR 369) JAX-RS 2.1 (JSR 370) MVC 1.0 (JSR 371) JSF 2.3 (JSR 372) Management 2.0 (JSR 373) JSON-P 1.1 (JSR 374) Security 1.0 (JSR 375) 20
  • 21.
    MVC 1.0 Action BasedMVC Java EE Component Based: ( : JSF) Action Based: ( : Spring MVC)​ Ref. Introduction to MVC 1.0 http://www.oracle.co.jp/jdt2016/pdf/1-B.pdf Java Day Tokyo 2016 @Path("hello") public class HelloController { @Inject private User user; @GET @Controller public String hello(@QueryParam("name") String name) { user.setName(name); return "hello.jsp"; } } “ Ozark (MVC 1.0 RI) https://ozark.java.net/ Model CDI, JPA, Bean Validation View Facelets JSP 21
  • 22.
    JSON Binding 1.0 POJO- JSON API (JAXB JSON ) ※Public Draft ( JavaOne ) “ Java API for JSON Binding - Introduction and update http://www.slideshare.net/mgrebac1/java-api-for-json-binding Package: javax.json.bind jsonb.fromJson(new File("jsonfile.json"), Foo.class); ​jsonb.toJson(object, new File("foo.json"); RI: EclipseLink MOXy Employee e = new Employee(); e.id = 523596; e.firstName = "Yutaka"; e.lastName = "Kato"; e.email = "yutaka.yk.katoh@..."; { "id": 523596, "firstName": "Yutaka", "lastName": "Kato", "email": "yutaka.yk.katoh@..." } 22
  • 23.
    Enhancements CDI (Contexts andDI) 2.0 Java SE Bootstrap API CDI Management 2.0 REST API Security 1.0 ・ Servlet 4.0 HTTP/2 , Server Push Ref. CDI2.0 & http://www.oracle.co.jp/jdt2016/pdf/4-C.pdf Java Day Tokyo 2016 23
  • 24.
    EJB and JSP JavaEE EJB CDI JSP JSF/Facelets Ref. Java EE 7 http://www.oracle.co.jp/jdt2016/pdf/5-A.pdf Java Day Tokyo 2016 24
  • 25.
    Tools & Frameworks OracleJET, Jenkins 2.0, Spring, and Gradle 25
  • 26.
    Oracle JET Enterprise Web JS jQuery,KnockoutJS, RequireJS NetBeans Ref. Introduction to Oracle JET https://www.youtube.com/watch?v=xOTwBZjgKSI Java Day Tokyo 2016 26
  • 27.
    Jenkins 2.0 Pipeline asCode Jenkinsfile - GitHub Organization Folder UI 7 LTS 2 Jenkins 2.0 http://www.slideshare.net/kohsuke/jenkins-20 Ref. JJUG CCC 2016 Spring 27
  • 28.
    Spring Framework /Boot Spring Framework 4.3 DI (@Autowired ) InjectionPoint (CDI ) (@GetMapping ) Spring Boot 1.4 AA Couchbase 2.0 Neo4j Spring Framework 5.0 JDK9 , HTTP/2, Reactive Spring Framework/Boot Pivotal slideshare.net/makingx/jjugccc-cccgh5-whats-new-in-spring-framework-43-boot-14-pivotals-cloud-native-approach Ref. JJUG CCC 2016 Spring 28
  • 29.
    Gradle Gradle 2.13 TestKit Kotlin build.gradle ・・・ → POIxls csv ... SSH Plugin, Git Plugin, Node/Grunt/Gulp Plugin... Nebura: Netflix Plugin Gradle https://github.com/grimrose/JJUG-CCC-2016-Spring Ref. JJUG CCC 2016 Spring 29
  • 30.
    Other Topics Geb (Selenium) Thymeleaf ( ) Spark Streaming (Spark ) Elastic Beats (Elasticsearch ) Kotlin (JVM ) Eclipse Che ( IDE) 30
  • 31.
    Slide Materials JJUG CCC2016 Spring Java Day Tokyo 2016 https://github.com/jjug-ccc/slides-articles-2016spring http://www.oracle.com/technetwork/jp/ondemand/online2016-javaday- 3003089-ja.html 31