Java読書会BOF「Practical Design Patterns for Java Developers」を読む会 第2回議事録

[ 戻る ]


========================================================
Java読書会BOF「Practical Design Patterns for Java Developers」を読む会 第2回
========================================================

.. csv-table:: 開催概要

  "日時", "2023年9月23日 10:00 - 17:00"
  "場所", "川崎市教育文化会館 第3会議室"
  "出席者(敬称略)", 高橋(徹)、高橋(智)(書記)"

Part 1: Design Patterns and Java Platform Functionalities
=========================================================

2 Discovering the Java Platform for Design Patterns
===================================================

GC and automatic memory management
----------------------------------
* P39 ソフト参照とファントム参照の使用例を書いてみる
  * Java読書会で以前に学んだことがあるか??
    * 少なくとも過去の議事録では言及されていない
  * 宿題!!

Primitive data types and wrappers
---------------------------------
* P40 Java 8から符号無し整数(Integer型)の演算用のAPI群が追加されている
  * 記事がある「Java 8 Unsigned Arithmetic Support」
    * https://www.baeldung.com/java-unsigned-arithmetic
  * Integer以外にもサポートが追加されているか?
    * Short型およびLong型には、一部サポートがありそう

* P41 "Int valueIntLiteral" は "int valueIntLiteral" の誤植

Working with the String API
---------------------------
* P43 "1 == t2" は "t1 == t2" の誤植

Discovering a collection framework
----------------------------------
* P45 Java 21で新しいコレクションフレームワークが追加された
  * java.util.SequencedCollectionというインターフェースで、順番を付けた版
  * JEP 431: Sequenced Collections
    * https://openjdk.org/jeps/431
  * 記事がある「Sequenced Collections in Java 21」
    * https://www.baeldung.com/java-21-sequenced-collections

* P45 ArrayListのRemoveのワーストケースの計算量がO(n)なのは何故か?
  * 削除した後に全体をコピーしているからか?
  * 先頭をRemoveするとワーストケースか?
  * 宿題!!

* P46 "Red-Black tree"とは?
  * データ構造とそのアルゴリズムの名前。赤黒木や2色木ともいう
    * https://ja.wikipedia.org/wiki/%E8%B5%A4%E9%BB%92%E6%9C%A8

Math APIs
---------
* P47 "Double sin" は "double sin" の誤植

* P47 java.util.RandomクラスのnextIntメソッドの引数の「upper-bound」は上限を含まない
  * 0 〜 upper-bound-1 が返る

* P47 java.util.Random.nextDoubleメソッドには、JDK17から2つのメソッドが追加された
  * java.util.randomパッケージのRandomGeneratorインターフェースにデフォルト実装が追加された
    * default double nextDouble(double bound)
    * default double nextDouble(double origin, double bound)
  * interfaceのデフォルト実装の機能は、JDK8で追加された

Functional programming and Java
-------------------------------
* P47 "the composition of tree functions"とは?

Using functional interfaces ub lambda expressions
-------------------------------------------------
* P49 Listing<String> list = ... list.forEach(System.out::println); は実際にはどのようなコードとしてコンパイルされるのか?
  * 逆コンパイルしてみる?? デバッガでステップインする??
  * 宿題!!

Getting to grips with the Java Module System
--------------------------------------------
* P51 4箇所ある"JMPS" は "JPMS" の誤植

* P51 "Module java.logging..." は "module java.logging..." の誤植

* P52 2箇所ある"JMPS" は "JPMS" の誤植

* P52 javacコマンドで「module-info.java」を明示的にコンパイルする必要があるのか?
  * 自動でコンパイルされるので不要ではないか??
  * 宿題!!

* P53 2箇所ある"LST" は "LTS" の誤植
  * P235の索引の"LST" も "LTS" の誤植

The local variable syntax for lambda parameters (Java SE 11, JEP-323)
---------------------------------------------------------------------
* P53 ".boxed()." は何をしているのか? なぜ必要なのか?
  * プリミティブ型をBox化するため(例: intをInteger型化)
  * Consumer<int>と書けないから

Switch expressions (Java SE 14, JEP-361)
----------------------------------------
* P54 "Var" は "var" の誤植

Records (Java SE 16, JEP-395)
-----------------------------
* P55 自動で追加されるhashCodeメソッドとequalsメソッドの実装コードの内容を知るには?
  * getterメソッドも追加される!!
  * javapコマンドを使用する?
  * 宿題!!

Sealed classes (Java SE 17, JEP-409)
------------------------------------
* P55 JDK21のコアパッケージ内のソースコードで、sealedやnon-sealedやpermitsを実際に使用している例はあるのか?
  * 宿題!!

* P56 "Public class" は "public class" の誤植

* P56 "unsealed (Example 2.25)" は "non-sealed (Example 2.24)" の誤植

Pattern matching for switch (Java SE 18, JEP-420)
-------------------------------------------------
* P57 "Object variable = 42;"という書き方はいつからOKになったのか?
  * JDK5からのはず
  * 宿題!!

From a basic thread to executors
--------------------------------
* P58 "Multithreaded Program" は "MultithreadedProgram" の誤植

* P59 "(Example 2.30)" は "(Example 2.29)" の誤植

次回は、P63のPart2から


[ 戻る ]