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から
[ 戻る ]