gbdc devfest #6 java イベントレポート 2016
TRANSCRIPT
Java Event ReportJava Day Tokyo 2016 + JJUG CCC 2016 Spring + 2015 Fall
Yutaka Kato
1
AgendaGlossariesList of SessionsJava Topics
Java SE 9Java SE 10Java EE 8
Tools and FrameworksOracle JETJenkins 2.0Spring FrameworkSpring BootGradle
2
Glossaries
Term DescriptionJava Day (JavaOne )
JJUG CCC Japan Java User Group - Cross Community Conference2 (Spring / Fall)
OpenJDK Java SE (7 ) Oracle JDK
JCP Java Community ProcessJSR ・
JSR Java Specification RequestJava
JEP Java Enhancement ProposalOpenJDK
RI Reference Implementation3
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 9Modularization, JShell, G1 GC, HTTP/2, and more
6
OpenJDK 9 JEPs102: 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 Topics102: 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 Toolhttp://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) GCJDK7 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/2HttpURLConnection API
java.net.http.HttpClientcreate().version(HTTP_2).build()
java.net.http.HttpRequestcreate(new URI("http://...")).GET()response(), responseAsync(), multiResponseAsync()
java.net.http.HttpResponsestatusCode(), 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 EnhancementsProcess 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 10Value Types, Specialized Generics, Arrays 2.0, and more
16
Project Valhalla
Javahttp://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 PanamaArrays 2.0
Immutable - long
JNR/FFIJava Native Runtime / Foreign Function Interface
・Data Layout Control
18
Java EE 8Action 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.0Action 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.0POJO - 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.bindjsonb.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
EnhancementsCDI (Contexts and DI) 2.0
Java SE Bootstrap API CDI
Management 2.0REST API
Security 1.0・
Servlet 4.0HTTP/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 & FrameworksOracle JET, Jenkins 2.0, Spring, and Gradle
25
Oracle JETEnterprise 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.0Pipeline as Code
Jenkinsfile - GitHub Organization Folder
UI
7 LTS 2
Jenkins 2.0http://www.slideshare.net/kohsuke/jenkins-20
Ref. JJUG CCC 2016 Spring
27
Spring Framework / BootSpring Framework 4.3
DI (@Autowired )InjectionPoint (CDI )
(@GetMapping )Spring Boot 1.4
AA Couchbase 2.0 Neo4j
Spring Framework 5.0JDK9 , 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
GradleGradle 2.13
TestKit Kotlin build.gradle
・・・ →
POI xls csv ...
SSH Plugin, Git Plugin, Node/Grunt/Gulp Plugin...Nebura: Netflix Plugin
Gradlehttps://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 MaterialsJJUG CCC 2016 Spring
Java Day Tokyo 2016https://github.com/jjug-ccc/slides-articles-2016spring
http://www.oracle.com/technetwork/jp/ondemand/online2016-javaday-
3003089-ja.html
31