[JAVA] I went to JJUG CCC 2019 Spring

Introduction

I went to an event called JJUG CCC 2019 Spring on Saturday, May 18, 2019. This is an event held semi-annually by a group called JJUG (Japan Java User Group), and there are JJUG CCC yyyy Spring and JJUG CCC yyyy Fall. This time it's spring 2019, so it's called JJUG CCC 2019 Spring (Details of the event here). I have participated every time since 2017 Fall a year and a half ago, and this is my 4th participation. I think that the presentation materials will eventually be aggregated on GitHub, but now (2019/5) in the session I participated in. / 18) I've put together a link to what I know about the material, what I wrote down, and some excerpts from twitter tweets in this article. Finally, I will post all the titles of this event, links to presenters and materials, and links to twitter.

Summary of sessions I participated in

Reintroduction to HTTP (S) in the Java 11 era (# ccc_g1)

Where are the presentation materials?

Valhalla Update JJUG CCC Spring 2019 from David Buck

What you wrote down

Project Valhalla: A project aimed at realizing Value Types.

image.png Excerpt from Presentation Material

Value Types: A combination of objects and primitive types. --Generic Specification --VarHandles (released in JDK 9) --Nestmates (released in JDK 11)

Nestmates ・ Nested: Inner Class image.png

image.png Excerpt from Presentation Material

image.png Excerpt from Presentation Material

-Write a program that calls the private method of the Outer class from the Inner class, and use the javap command. When disassembled with, a method (Bridge Method (*)) that you do not recognize is created like XXX $ YYY. ⇒ javac is secretly creating a BridgeMethod to call a private method of an outer class from an inner class. ・ Weaknesses of Bridge Methods --Binary and source do not match --Access authority is different --Waste of disk and memory ・ Bridge Method can be accessed from the outside if you want to do it. (Create a class file from the jasm file with Asmtools and call the bridge method) ⇒Although it was originally written in the Inner class, it can be accessed from the outside. ・ Nestmates: JEP 181: Nest-Based Access Control This feature introduced in JDK 11 eliminates the Bridge Method. -It seems that the details are written in the JVMLS session. ・ There was a word "disassembled" in the presentation material, but it seems to be a disassembler. ..

ValueTypes -Value Types Prototype: Minimal Value Types Project (MVT) ・ Derived Value Class --Conventional reference: L type --References that do not use pointers: Q type

Catch up Java 12 and Java 13(#ccc_g3)

Where are the presentation materials?

Catch up Java 12 and Java 13 from Yuji Kubota

What you wrote down

Introducing new features introduced in Java 12 and features planned (undecided) to be introduced in Java 13. Since there are many, it is faster to look at the materials. .. ..

JEPs captured in Java 12

JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)   - STW:Stop The World --There are now 7 types of GC (G1GC, ZGC, serial GC, parallel GC ...) ――Experimental now. The official version is not yet available. --Shenandoah GC is upward compatible with G1GC

JEP 230: Microbenchmark Suite   - JMH:Java Microbenchmark Harness ――I'm not very happy for users

-JEP 325: Switch Expressions (Preview) --Preview version. It is guaranteed as a function, but how to use it is controversial.

-JEP 334: JVM Constants API --Invoke Dynamic ...? (I couldn't make a note) --It is now possible to delay startup until it is needed.

JEP 340: One AArch64 Port, Not Two --Removed duplicate code.

-JEP 341: Default CDS Archives   - CDS:Class Data Sharing --By reading the class loading during process startup from the archive file, multiple processes are shared and the Java process startup time is shortened. --Especially effective in the case of launching a short-lived process such as FaaS.

JEP 344: Abortable Mixed Collections for G1 --A function that helps people who are having trouble using G1GC.

JEP 346: Promptly Return Unused Committed Memory from G1 --Java was a mechanism that once grabbed memory is not returned to the OS. ⇒ With the support of JEP 346, it is now returned. It is easier to make the resident process resident.

APIs that came in with Java 12

bit notable APIs -CompactNumberFormat (JDK-8177552) image.png Excerpt from Presentation Material

image.png Excerpt from Presentation Material

--The handling of fractions is rounded off. .. .. A terrible pitfall.

・ InputStream # skipNBytes --Which should I return -1 or Exception on error?

・ String # indent --Add indent for the specified number of minutes

・ Files # mismatch

notable APIs

・ String # transform

・ Collectors #teeing image.png Excerpt from Presentation Material

--With Lambda, you can process multiple processes into one data at the same time.

-CompletableFuture # exceptionally {Compose} {Async}

Other enhancements -JDK-8209923: Unicode 11 -JDK-8202286: Allocation of old generation of Java heap on alternate memory devices -JDK-8211845: A new switch to control verbosity of hs-err files  -XX:+ExtensiveErrorReports -JDK-8205517: JFR tool  - jfr print --json --category xxx --event yyy zzz.jfr --It is possible to stream flight records to Elastic with json, etc.

Things to be added in Java 13

・ Project Amber ・ Project Valhalla ・ Project Panama ・ Project Loom ・ Project Metropolis --In short, the story of Graal VM ・ Project Skara --A project to migrate OpenJDK source control from Mercurial to GitHub --Migration destination: https://github.com/openjdk/jdk --Reference: http://nowokay.hatenablog.com/entry/20180917/1537206738 ・ Project Portola --Attempts to create a small Docker image

JEP: 35 Draft, 5 Submitted, 27 Candidate ・ JEP 350: Dynamic CDS Archives —— Archived without a test run. ・ JEP 351: ZGC: Uncommit Unused Memory -JEP 353: Reimplement the Legacy Socket API --Renewal of Socket API ・ JEP 352: Non-Volatile Mapped Byte BuffersJEP 301: Enhanced Enums image.png Excerpt from Presentation Material

image.png Excerpt from Presentation Material

--Enum that doesn't have to be cast

JEP 305: Pattern matching for instanceof image.png Excerpt from Presentation Material

--No need to cast after instance of

JEP 355: Text BlocksJEP 349: JFR Event Streaming

Challenge to test automation at SI site ~ CI / CD environment with full container configuration ~ (# ccc_m4)

Where are the presentation materials?