[戻る]

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

開催概要

場所

川崎市教育文化会館 第3会議室

出席者(敬称略)

高橋(智)、高橋(徹)

  • 本日は、「表紙」から

  • PDFには、紙書の裏表紙がない

  • 著者は、Robo4Jのco-authorで、Javaチャンピオン、JCP exective committee member

序文

  • 本書のコードの動作前提
    • 前提は JDK 17以降

    • 推奨IDEはVSCode 1.73.1以降

パート1 デザインパターンとJavaプラットフォームの機能

第1章 ソフトウェア設計パターンの概要

1 ソフトウェアへの取り組み デザインパターン

Examining OOP and APIE

  • SOLIDは、過去の読書会では「アジャイルソフトウェア開発の奥義」で登場した

  • core carrierの意味は?

  • APIE(Abstraction, Polymorphism, Inheritance, Encapsulation)
    • オブジェクト指向言語の4つの基本的な柱

Understanding the SOLID design principles

  • 誤植)p.15 例1.5の下1行目「NOT POSISBLE!」は「NOT POSSIBLE!」の誤記

まとめ

  • Q1. Java Virtual MachineとJIT

  • Q2. Abstraction, Polymorphism, Inheritance, Encapsulation

  • Q3. OverloadとOverride

  • Q4. SOLID設計原則

  • Q5. OCPは拡張にオープンで変更にクローズな設計

  • Q6. 回答難しい。
    • 透明性の維持、可読性、重複の削減、テスト容易性、目的を明確認する、などを考慮する

2 デザインパターン用のJavaプラットフォームの発見

  • メモリ使用率の観点からデザインパターンの価値を理解するための基礎 おっ、

  • (宿題)Appletコードを、ブラウザやappletviewerではなく、mainメソッドから呼び出しjavaで実行できるか?

  • p.28 Example 2.1の末尾(Reference 26)とあるが、2節の参考文献は26個もない。
    • 2節の参考文献の下から2つ目が該当するが、26番目には該当しない

  • p.28 Example 2.2の前の説明文が、bytecode記述をコンパイルするとあるので一瞬 ソースファイルに bytecodeのテキスト表現を書くとコンパイルできるのか?と思ったがそれはなかった。

  • p.30 図2.2 Class Loader Subsystem の中にある B. Extension Class Loaderは何か?

    • p.32 拡張クラスローダー 「lib/extディレクトリからの追加ライブラリをロード」とあるので、JDK9で削除された機能

  • p.33 Stack領域で、「スタックフレームは...例外が発生することなく削除されます。」とあるが、例外が起きてメソッドが終わった時はスタックフレームが残ることを意味している?

    • printStackTraceでスタックトレース情報が出せるので残るということか?

  • p.33 Method areaは、メタスペースのことか?

  • p.36 volatileキーワードを付けた変数の読み込みは、キャッシュではなくメインメモリから読み込むことが保証される

    • 宿題)volatileキーワードを付けたとき、ネイティブコードの命令に違いがあるかどうか? * CPUのキャッシュコヒーレントの仕組みを知る必要がありそう?

本日は、p.37 の上5行目まで読み終わりました。 次回は、p.37 の上6行目からです。

[戻る]