gbdc devfest #6 java イベントレポート 2016

31
Java Event Report Java Day Tokyo 2016 + JJUG CCC 2016 Spring + 2015 Fall Yutaka Kato 1

Upload: yutaka-kato

Post on 11-Apr-2017

87 views

Category:

Software


0 download

TRANSCRIPT

Page 1: GBDC DevFest #6 Java イベントレポート 2016

Java Event ReportJava Day Tokyo 2016 + JJUG CCC 2016 Spring + 2015 Fall

Yutaka Kato

1

Page 2: GBDC DevFest #6 Java イベントレポート 2016

AgendaGlossariesList of SessionsJava Topics

Java SE 9Java SE 10Java EE 8

Tools and FrameworksOracle JETJenkins 2.0Spring FrameworkSpring BootGradle

2

Page 3: GBDC DevFest #6 Java イベントレポート 2016

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

Page 4: GBDC DevFest #6 Java イベントレポート 2016

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

Page 5: GBDC DevFest #6 Java イベントレポート 2016

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

Page 6: GBDC DevFest #6 Java イベントレポート 2016

Java 9Modularization, JShell, G1 GC, HTTP/2, and more

6

Page 7: GBDC DevFest #6 Java イベントレポート 2016

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

Page 8: GBDC DevFest #6 Java イベントレポート 2016

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

Page 9: GBDC DevFest #6 Java イベントレポート 2016

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

Page 10: GBDC DevFest #6 Java イベントレポート 2016

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

Page 11: GBDC DevFest #6 Java イベントレポート 2016

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

Page 12: GBDC DevFest #6 Java イベントレポート 2016

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

Page 13: GBDC DevFest #6 Java イベントレポート 2016

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

Page 14: GBDC DevFest #6 Java イベントレポート 2016

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

Page 15: GBDC DevFest #6 Java イベントレポート 2016

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

Page 16: GBDC DevFest #6 Java イベントレポート 2016

Java 10Value Types, Specialized Generics, Arrays 2.0, and more

16

Page 17: GBDC DevFest #6 Java イベントレポート 2016

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

Page 18: GBDC DevFest #6 Java イベントレポート 2016

Project PanamaArrays 2.0

Immutable - long

JNR/FFIJava Native Runtime / Foreign Function Interface

・Data Layout Control

18

Page 19: GBDC DevFest #6 Java イベントレポート 2016

Java EE 8Action Based MVC, JSON Binding, and updates

19

Page 20: GBDC DevFest #6 Java イベントレポート 2016

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

Page 21: GBDC DevFest #6 Java イベントレポート 2016

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

Page 22: GBDC DevFest #6 Java イベントレポート 2016

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

Page 23: GBDC DevFest #6 Java イベントレポート 2016

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

Page 24: GBDC DevFest #6 Java イベントレポート 2016

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

Page 25: GBDC DevFest #6 Java イベントレポート 2016

Tools & FrameworksOracle JET, Jenkins 2.0, Spring, and Gradle

25

Page 26: GBDC DevFest #6 Java イベントレポート 2016

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

Page 27: GBDC DevFest #6 Java イベントレポート 2016

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

Page 28: GBDC DevFest #6 Java イベントレポート 2016

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

Page 29: GBDC DevFest #6 Java イベントレポート 2016

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

Page 30: GBDC DevFest #6 Java イベントレポート 2016

Other Topics

Geb (Selenium )

Thymeleaf ( )

Spark Streaming (Spark )

Elastic Beats (Elasticsearch )

Kotlin ( JVM )

Eclipse Che ( IDE)

30

Page 31: GBDC DevFest #6 Java イベントレポート 2016

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