はじめに
2025年10月現在、JavaGold17は専用の参考書(黒本とか)がまだ出ていません。
前世代のJavaGold 11の黒本&紫本を使ってなんとか一発合格できたので、希少価値が高いうちに投稿しておきます。
先に結論(試験を受けて良かった?)
よかったです。
資格を取れていい気分!というのは勿論ですが、
日常業務でコードをよりスムーズに読めるようになりました。
ストリームAPIの記述とか、学んでなくてもメソッド名から何となくロジックの予想はつきますが、確固たる知識の下で読み進められる方が格段にスピードが上がります。
Gold資格を取ったからと言ってコードが書けるようにはなりませんが、読めるようにはなると思います。
なので、コードレビューする機会が多い方、障害の原因調査など運用業務に当たる方にこそオススメです(もちろんコーディングメインの方も基礎固めで受けるのはいいと思います)。
筆者について
Javaエンジニア4年目(文系未経験)。普段はSpringBootを使用。
自社開発なので、いろんな現場を回っていろんな技術を自然に身に着けるという感じではないです。
勉強の仕方
平日1時間+土日合計8時間
という生活を2か月くらい続けました。※個人差あると思います
やった内容としては、
JavaSE11の紫本を2周
JavaSE11の黒本を2周
※載っている問題を一通り解くのを1周カウントしてます
体感だと黒本の方がGold範囲諸学者向けっぽいので、黒本から手を付けるのをお勧めします。
なお、黒本だけ、はお勧めしません。紫本にしか載ってない範囲が普通に出ます。
当方、以前JavaSilver17に2回落ちて大変落ち込んだ経験があったので、今回は相当準備して臨みました。
普段はフレームワークに頼りきりなので、意外と学習コストが高い・・・
全体的な出題傾向
ラムダ式、ストリームAPIやっぱり多い!
ここは一番勉強しておくべきところです。
あとは、モジュール・システムが思った以上に出ます(特にコマンド周り)。
カスタム・ランタイムイメージの作成・実行コマンド→覚えましょう
jlinkコマンドの、オプションごとの出力の違い→覚えましょう
モジュール・システムは、ハンズオンでイメージをつかむのが一番いいと思うので、生成AIにハンズオンを作ってもらいながら一通り動かせるようにしておくのがいいです。
あとは全体的にまんべんなく・・・といった感じでした。
DateTimeFormatterの問題とか出ました
Java SE11よりも後の機能で出てきた問題
レコードクラス
全編にわたって登場します。
ただし、レコードクラスそのものの性質を深く問う問題は出ないので、Sliver17で問われるような超基本的な部分が分かれば大丈夫です。
ただし、RecordクラスのtoString()は自動的に以下のように実装されることがわかっていないと解けない問題が出題されました。
public record Person(String name, int age) {}
public class Main {
public static void main(String[] args) {
Person person = new Person("太郎", 25);
System.out.println(person.toString()); // Person[name=太郎, age=25]
// または
System.out.println(person); // Person[name=太郎, age=25]
// 通常クラスのtoString()→クラス名@hashcodeとは違うことに注意!!
}
}
stream APIのdropWhile,takeWhile
これはほかの方も言及されているので、どちらかはかなり高い確率で出ると思います。
私の時はtakeWhileの方が出題されました。
以下のようなイメージの問題です↓
次のコードの実行結果として正しいものを選びなさい。
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = List.of(2, 4, 6, 3, 8, 10, 12);
List<Integer> result = numbers.stream()
.takeWhile(n -> n % 2 == 0)
.collect(Collectors.toList());
System.out.println(result);
}
}
選択肢
A. [2, 4, 6, 8, 10, 12]
B. [2, 4, 6]
C. [2, 4, 6, 3]
D. [3]
正解
B. [2, 4, 6]
とはいえ、メソッド名から挙動が類推しやすいので、覚えてなくてもその場で何とかなる説はあります(takeWhile(~)→~である間は取得する→あてはまらなくなったらそこで終了なんだろうな~)
並列処理のconcurrent.Flow
こいつが出ることは公式サイトで知っていましたが、なかなか難しそうだったので捨てました(ラムダ式・stream APIあたりを完璧にする方がコスパ良)。
なのでサンプルコード書けません(スイマセン)。
当日どのような作戦をとったか?
JavaGoldは従前バージョンから一貫して範囲が広く、
しかもまんべんなくちゃんとそれぞれから出るので、ヤマを張りづらいです。
なので基本は全部解けるつもりで準備しつつ、捨てる苦手分野を一つか二つだけ持っておく、というのは良いと思います(筆者はconcurrent.Flowを捨て範囲にしました。1問しか出なかったので結果良かったです)。
60問もあるので、すぐにわからない問題はどんどん飛ばして一周しきってしまうのがおすすめです。
2周目以降で難しい問題にじっくり取り組みましょう。
おわりに
偉そうに語ってきましたが、正直ぎりぎりの合格でした(65%合格ラインで、70%)。
専用の参考書がない中で勉強するのは大変ですし、何より不安です。
万全に、確実に合格したい方は、専用の参考書が発売されてから受けるのもありだと思います。