JavaゴールドSE 11とSE 17の違い
JavaゴールドにはSE 11とSE 17の2つのバージョンがあります。基本的にはJavaシルバーで受験したバージョンで受験するのがよいです。
- SE 11はアサーション、セキュア・コーディング、アノテーションが出題される
- SE 17はFlowやDataSourceなどが新たに出題範囲に加わっている
再受験料が無料
Oracle資格の再受験料が無料になるキャンペーンが2026年5月31日まで開催中なのでぜひ活用しましょう。

試験概要の比較
JavaゴールドSE 11とSE 17の試験概要を表にまとめると以下のとおりです。
問題数が減ったものの試験時間も短くなっているので、1問あたりに割ける時間は短くなっています。
Oracle公式|Java SE 11 Programmer II(1Z0-816-JPN)
Oracle公式|Java SE 17 Programmer II(1Z0-826-JPN)
| 項目 | JavaゴールドSE 11 | JavaゴールドSE 17 |
|---|---|---|
| 試験番号 | 1Z0-816-JPN | 1Z0-826-JPN |
| 問題数 | 80問 | 60問 |
| 試験時間 | 180分 | 90分 |
| 合格ライン | 63% | 65% |
| 1問あたりの時間 | 約2分15秒 | 約1分30秒 |
出題範囲の違い
出題範囲をまとめると記載の通りです。
SE 11ではアサーション、セキュア・コーディング、アノテーションの3分野は対策が必須です。SE 17ではFlowとDataSourceが新たに出題範囲に加わっています。
| 分野 | JavaゴールドSE 11 | JavaゴールドSE 17 |
|---|---|---|
| アサーション | 出題 | 独立項目なし |
| セキュア・コーディング | 出題 | 独立項目なし |
| アノテーション | 出題 | 独立項目なし |
| Flow | 独立項目なし(出題なし) | 出題(並列処理分野) |
| DataSource | 独立項目なし(出題なし) | 出題(JDBC分野) |
出題例
Java SE11の出題範囲
アサーション
assert はSE 11で独立した出題分野です。開発・テスト時にメソッドの前提条件を検証するために使います。-ea オプションで有効化されているときだけ評価されるので、無効時は例外も出ずに次の行に進みます。
Oracle公式|AssertionError(Java SE 11)
int score = -1;
assert score >= 0 : "score must be positive";
System.out.println(score);-ea なしで実行すると、assert行は無視されて -1 が出力されます。-ea ありで実行すると、score >= 0 が false のため AssertionError がスローされ、println には到達しません。第2引数の "score must be positive" はエラーメッセージとして使われます。
セキュア・コーディング
SE 11では独立した出題分野です。外部から受け取ったデータを安全に処理するために使います。DoS防止、機密情報の保護、シリアライゼーション時の入力検証などが出題されます。
Oracle公式|Secure Coding Guidelines for Java SE
private void readObject(ObjectInputStream in)
throws IOException, ClassNotFoundException {
in.defaultReadObject();
if (this.age < 0 || this.age > 200) {
throw new InvalidObjectException("Invalid age: " + age);
}
}デシリアライズ時に readObject をオーバーライドして、復元されたフィールドの値を検証しています。検証なしで受け入れると、外部から不正な値を注入される危険があります。
アノテーション
SE 11では独立した出題分野です。SpringやJUnitなどのフレームワークが実行時にクラスやメソッドの情報を読み取るために使います。定義方法と保持期間・付与先の指定が出題されます。
Oracle公式|java.lang.annotation(Java SE 11)
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface TestInfo {
String author();
int priority() default 1;
}@Retention(RUNTIME) は実行時にリフレクションで読み取れることを意味します。@Target(METHOD) はメソッドにだけ付与できる指定です。priority には default 1 があるため使用時に省略できますが、author には default がないため必ず指定する必要があります。
Java SE17の出題範囲
Flow
SE 17で追加された出題分野です。非同期のデータストリーム処理で、送信側と受信側の速度差を制御(バックプレッシャー)するために使います。Publisher・Subscriber・Subscription・Processor の4つの役割を理解し、データの要求と受け取りの流れを読み取る必要があります。
class SampleSubscriber implements Flow.Subscriber<String> {
private Flow.Subscription subscription;
@Override
public void onSubscribe(Flow.Subscription subscription) {
this.subscription = subscription;
subscription.request(1);
}
@Override
public void onNext(String item) {
System.out.println(item);
subscription.request(1);
}
}onSubscribe で subscription.request(1) を呼んで最初の1件を要求しています。この request() を呼ばないと onNext は一度も呼ばれません。onNext の中でもう一度 request(1) を呼ぶことで、1件ずつ受け取る流れを維持しています。なお、onError と onComplete はどちらか一方しか呼ばれません。
DataSource
SE 17のJDBC分野で DataSource が出題範囲に加わりました。Webアプリケーションでデータベースに接続してCRUD操作を行うときに使います。DriverManager との違いと、PreparedStatement のパラメータの扱いが主な論点です。
Oracle公式|PreparedStatement(Java SE 17)
DataSource ds = getDataSource();
try (Connection con = ds.getConnection();
PreparedStatement ps =
con.prepareStatement("SELECT name FROM users WHERE id = ?")) {
ps.setInt(1, 10);
try (ResultSet rs = ps.executeQuery()) {
while (rs.next()) {
System.out.println(rs.getString("name"));
}
}
}DataSource はサーバー側で接続プールやJNDI経由の管理ができる接続方法で、DriverManager より実務向きです。ps.setInt(1, 10) の第1引数はパラメータの位置で、0ではなく1から始まります。try-with-resources で Connection、PreparedStatement、ResultSet の順にクローズされます。
Javaゴールドに役立つ情報
おすすめの参考書・問題集
Javaゴールドのおすすめの参考書・問題集は別記事でまとめています。

難易度・勉強時間
Javaゴールドの難易度と必要な勉強時間は別記事でまとめています。

申し込み方法
Javaゴールド試験の申し込み方法は別記事でまとめています。

