メインコンテンツまでスキップ

Java 学習ガイド

Java言語の基礎から実践的なパターンまでを学ぶドキュメント集です。


学習の目的

  • Java言語の基本構文とオブジェクト指向を理解する
  • ジェネリクス、コレクション、Stream APIを使いこなす
  • Java 21の新機能(Records、Sealed Classes、Pattern Matching)を活用する
  • idp-serverのコードを読み書きできるようになる

学習ロードマップ

┌─────────────────────────────────────────────────────────────┐
│ 学習の流れ │
├─────────────────────────────────────────────────────────────┤
│ │
│ 基礎 (Java入門) │
│ ├── 構文基礎 │
│ │ └── クラス、メソッド、変数、演算子 │
│ └── オブジェクト指向 │
│ └── 継承、インターフェース、抽象クラス、ポリモーフィズム │
│ │
│ 中級 (実践的なJava) │
│ ├── ジェネリクス │
│ │ └── 型パラメータ、境界、ワイルドカード │
│ ├── コレクション │
│ │ └── List、Set、Map、Queue │
│ ├── 例外処理 │
│ │ └── try-catch、カスタム例外、ベストプラクティス │
│ ├── Stream API │
│ │ └── filter、map、reduce、collect │
│ └── ラムダ式 │
│ └── 関数型インターフェース、メソッド参照 │
│ │
│ 上級 (並行処理とJava 21) │
│ ├── 並行処理 │
│ │ └── Thread、ExecutorService、CompletableFuture │
│ ├── Records │
│ │ └── 不変データクラス、コンパクトコンストラクタ │
│ ├── Sealed Classes │
│ │ └── 継承制限、permits │
│ └── Pattern Matching │
│ └── instanceof、switch式、Record Patterns │
│ │
│ 実践 (パターンと注意点) │
│ ├── 実践パターン │
│ │ └── 値オブジェクト、Result型、Builderパターン │
│ └── 落とし穴と注意点 │
│ └── メモリリーク、スレッドセーフ、NullPointerException │
│ │
└─────────────────────────────────────────────────────────────┘

ドキュメント一覧

導入

#ドキュメント説明所要時間
00Java言語の特徴Javaとは、他言語との比較、バージョン進化30分

基礎

#ドキュメント説明所要時間
01構文基礎クラス、メソッド、変数、演算子、制御構文60分
02オブジェクト指向継承、インターフェース、抽象クラス、ポリモーフィズム60分

中級

#ドキュメント説明所要時間
03ジェネリクス型パラメータ、境界、ワイルドカード、型消去60分
04コレクションList、Set、Map、Queue、イテレーション60分
05例外処理try-catch、カスタム例外、ベストプラクティス45分
06Stream APIfilter、map、reduce、collect、並列ストリーム60分
07ラムダ式関数型インターフェース、メソッド参照、クロージャ45分

上級

#ドキュメント説明所要時間
08並行処理Thread、ExecutorService、CompletableFuture90分
09Records不変データクラス、コンパクトコンストラクタ30分
10Sealed Classes継承制限、permits、パターンマッチングとの組み合わせ30分
11Pattern Matchinginstanceof、switch式、Record Patterns45分

実践

#ドキュメント説明所要時間
12Java 実践パターン値オブジェクト、Result型、Builder、Factory、Strategyパターン60分
13落とし穴と注意点メモリリーク、スレッドセーフ、NPE、よくある間違い45分

コラム

#ドキュメント説明所要時間
991つの言語を深く学ぶ価値言語を超えて転用できる知識、深く学ぶとは何か15分

推奨学習パス

パス1: Java初心者

1. 構文基礎
2. オブジェクト指向
3. 例外処理
4. コレクション
5. ジェネリクス

パス2: 他言語経験者(Python、JavaScript等)

1. 構文基礎(差分確認)
2. オブジェクト指向(静的型付けの理解)
3. ジェネリクス ★
4. Stream API
5. ラムダ式

★ 動的型付け言語からの最大の違い

パス3: idp-server開発者

1. オブジェクト指向
2. ジェネリクス
3. コレクション
4. Stream API
5. Records ★
6. Sealed Classes ★
7. Pattern Matching ★
8. 実践パターン
9. 落とし穴と注意点 ★★

★ Java 21の重要機能 ★★ 本番障害を防ぐための必読

パス4: コードレビュー担当

1. ジェネリクス
2. 例外処理
3. 並行処理
4. 実践パターン
5. 落とし穴と注意点 ★

★ レビュー時の重要チェックポイント


学べること

idp-server開発に必要な知識

Javaの概念idp-serverでの活用
インターフェースHandler、Service、Repository分離
ジェネリクス型安全なリポジトリ、Result型
RecordsDTO、値オブジェクト
Sealed Classes列挙的な型の網羅性保証
Pattern Matching型に応じた処理分岐
Stream APIコレクション操作、データ変換
Optionalnull安全な戻り値

よく使うパターン

パターン用途
値オブジェクトドメインの概念を型で表現
Result型成功/失敗を型で表現、例外より安全
Builder複雑なオブジェクトの構築
Factoryオブジェクト生成の隠蔽
Strategyアルゴリズムの差し替え
Null Objectnullチェックの排除

よくある落とし穴

落とし穴対策
メモリリークリソースのclose、コレクションのクリア
スレッドセーフ違反AtomicXxx、ConcurrentHashMap、synchronized
NullPointerExceptionOptional活用、事前条件チェック
equals/hashCode不整合両方を必ずオーバーライド

前提知識

  • プログラミングの基本概念(変数、条件分岐、ループ)
  • 何らかのプログラミング言語の経験(あれば望ましい)

関連ドキュメント

JVM・ランタイム

フレームワーク

参考リソース