読書会(Java 11 and 12 - New Features)第1回議事録

[ 戻る ]


==========================================================================================
Java読書会BOF 「Java 11 and 12 - New Features」を読む会 第1回
==========================================================================================

"日時","2019年6月15日 10:00 - 17:00"
"場所","川崎市教育文化会館 第3会議室"
"出席者(敬称略)","高橋(徹)、高橋(智)、石黒、今井、平山、常念、和田、遠藤、岩室、吉本、大部(書記)"

----------------------------------------------
 - Amazon: ペーパーバック: 3516円 オンデマンドプリント、2日ぐらいで受け取り可能
 - Amazon: Kindle: 2840円
 - Packt.com: eBook: $10 (ebookはePub, PDF, mobiでダウンロード可能)
 - Packt.com: eBook + Print: $29.99

紹介ページ
----------------------------------------------
 - 著者: Mala Gupta
 - Java Champion, JetBrains, Delhi JUG
 - Packt.com 出版
 - Mapt 小売

Preface
----------------------------------------------
 - P2 5行目: exploreshow -> explores how では?

Section 1: JDK 10
======================================================================
Chapter 1: Type Inference
======================================================================

What is type inference?
----------------------------------------------

Type inference with var
----------------------------------------------

Compulsory non-null initialization
----------------------------------------------

Local variables
----------------------------------------------
 - P.12 最下行 if..else loops のloopはforループなどのループではなく、輪、一括り的な意味か?
 - P.12 最下行 construct コンストラクタではなく構造、どれもstatementsで表現できそうだが、
   同じ表現が続くのを避けた?
 - P.13 Kindle版だと入れ子のソースコードが読みづらい 

Code check - part 1
----------------------------------------------

Using var with primitive data types
----------------------------------------------
 - P.16 右辺の型がわかりにくいときのvarは難しい
 - 宿題:varが何型か、どうすればわかる?

Type inference with derived classes
----------------------------------------------

Type inference with interfaces
----------------------------------------------
 - P.19 whistle(), stand()はコンパイルエラーになる

Using var with arrays
----------------------------------------------
 - 配列は型推論できない

Type inference with generics
----------------------------------------------

Code check - part 2
----------------------------------------------

Passing inferred variables to a method
----------------------------------------------

Reassigning values to inferred variables
----------------------------------------------

Explicit casting with inferred variables
----------------------------------------------

Assigning null with explicit casting
----------------------------------------------

Type inference in previous versions of Java
----------------------------------------------

Type inference in Java 5
----------------------------------------------

Type inference in Java 7
----------------------------------------------
 - P.26 deliverはprint
 - myClass.<Boolean>deliver(new Boolean("true")); -> myClass.<Boolean>print(new Boolean("true"));
 - myClass.deliver(new Boolean("true")); -> myClass.print(new Boolean("true"));

Type inference in Java 8
----------------------------------------------
 - P.27 System.out.print(s); -> System.out.println(s);
Challenges
----------------------------------------------

Limiting the scope of failed assumptions
----------------------------------------------

Breaking existing code
----------------------------------------------
 - ソースコードは以下を参照
 https://github.com/PacktPublishing/Java-11-and-12-New-Features
 /Chapter01/Demo.java
 - クラス名とインターフェース名にvarは使えない
 - int varとstatic long varは使える
 - コード上では同時に使えない(同じ変数名の宣言でNG)ので片方をコメントアウトしている

Non-denotable types
----------------------------------------------

Meaningful variable names
----------------------------------------------

Code refactoring
----------------------------------------------

Type inference versus dynamic binding
----------------------------------------------

Summary

Chapter 2: AppCDS
======================================================================
 - CDSは Java 5からあった。

Technical requirements
----------------------------------------------

What is CDS?
----------------------------------------------

Location of the shared archive file
----------------------------------------------
 - OpenJDK 12では、
 zipを展開したフォルダ -> jdk-12.0.1.jdk/Contents/Home/lib/server/classes.jsa
 Solaris/Linux/maxOS: Home以下の/lib/[arch]/server/classes.jsa

Manual creation of classes.jsa
----------------------------------------------

Usage of CDS
----------------------------------------------
 - デフォルトでは -Xshare:auto で、jsaファイルがあればCDSがオンになる

AppCDS
----------------------------------------------

Benefits of AppCDS
----------------------------------------------
 - クラスが多いとすごい効果があるかもしれない

Enabling application class data archive
----------------------------------------------
 - P.40 2行目: error message -> warningでは?

Which application classes to archive
----------------------------------------------

Creating an application shared archive file
----------------------------------------------
 - P.42 JDK11ではオプションの2行目、-XX:+UseAppCDSを外す

Using the shared application archive file
----------------------------------------------
 - P.43 -Xshare:on不要なのでは?
 - jsaはアーキテクチャ依存なのか?
 - コマンド実行結果がわかりにくい

Summary

Chapter 3: Garbage Collector Optimizations
======================================================================

Technical requirements
----------------------------------------------

The GC interface
----------------------------------------------
 - JVMの中の話

Benefits
----------------------------------------------

Driving factors
----------------------------------------------
 - P.47 HotSpot ≒ Oracle HotSpot JVM
 - GC Developer,HotSpot Developer : どっちもJVMの開発者

Impact
----------------------------------------------
 - P.48 Shenandoah GC = シェナンドGCと読む

.. note:: 次回は p.48 Paralell full GC for G1(JEP 307) から。

(以上)


[ 戻る ]