Java Goldとは
通称「Java Gold」はOracle社によって提供されているベンダー資格で、正式名称は「Oracle Certified Java Programmer, Gold SE 11 認定資格」です。その名の通り Javaに関する資格で、Javaでアプリケーション開発するために必要な知識や技能を証明するための資格です。
Java SE資格は次の3段階のグレードに分けられており、一番下の”Gold”が最も難易度が高い資格になっています。
- ”Bronze”
- ”Silver”
- ”Gold”
これらのJava資格を取得すると、Javaに関する知識を証明できます。特に最難関の”Java Gold”を取得すると、Javaへの高い技術力が認められ、就職などでも有利に働くことがあります。
試験の概要
Oracle Certified Java Programmer, Gold SE 11 認定資格(通称:Java Gold)の試験概要を確認していきましょう。
前提条件
「Java Gold」は、1つ手前のグレードである「Java Silver」の資格保有者だけが受験をできます。資格を保有していない場合は「Java Silver」から挑戦しましょう。
試験時間
時間 : 150分
問題数 : 85問
合格ライン : 65%
※ およそ56問正答すれば試験合格です
受験会場
試験は、全国にある試験センターで受験できます。基本的には試験センターの営業日であればいつでも受験が可能です。
試験センターは、Oracle社のホームページより検索が可能です。
https://www.pearsonvue.co.jp/Clients/Oracle.aspx
受験は事前予約制であるため、試験を受ける前に予約をしましょう。
出題範囲
「Java Gold」の出題カテゴリーは次のとおりです。
Java Gold出題カテゴリー
- Javaの基礎
- 例外処理とアサーション
- Javaのインタフェース
- 汎用とコレクション
- 関数型インタフェースとラムダ式
- JavaストリームAPI
- 組込み関数型インタフェース
- ストリームに対するラムダ演算
- モジュール型アプリケーションに移行する
- モジュール型アプリケーションにおけるサービス
- 並列処理
- 並列ストリーム
- I/O(基本およびNIO2)
- Java SEアプリケーションにおけるセキュア・コーディング
- JDBCによるデータベース・アプリケーション
- ローカライズ
- アノテーション
出題範囲は、Oracle社の公式ページでも確認できます。
また、カテゴリー別の詳しい出題範囲も、Oracle社の公式ページに掲載されているため、ここもしっかり押さえておきましょう。
【Java SE 11 Programmer II (1Z0-816-JPN) 試験】
https://www.oracle.com/jp/education/certification/1z0-816-jpn-31705-ja.html
出題される問題のサンプル
次に「Java Gold」試験での出題形式を確認して、どんな感じの問題が出題されるのか見てみましょう。
Oracle社のホームページに、Java Goldで実際に出題される形式での練習問題が掲載されているため、その中から2つほど問題を抜粋してみます。
【Java SE 8 Programmer II (1Z0-809) サンプル問題】
https://www.oracle.com/jp/education/certification/ocjp-gold-se8-3305267-ja.html
JavaストリームAPIに関する問題
次のコードを確認して、4択の問題の答えましょう。
String[] arrStr = { "Madrid", "Barcelona" };
Stream<String> strm = Arrays.stream(arrStr);
strm.map(s -> s.toUpperCase())
.forEach(System.out::println);
strm.filter(s -> s.length() >= 7)
.forEach(System.out::println);
このコードをコンパイルおよび実行すると、どのような結果になりますか。
- 正常にコンパイルおよび実行でき、以下のように表示される。
MADRID
BARCELONA
BARCELONA
- 正常にコンパイルおよび実行でき、以下のように表示される。
MADRID
BARCELONA
Barcelona
- コンパイル・エラーが発生する。
- 実行時に例外がスローされる。
答えは分かりましたでしょうか?
正解は4です。
ストリームは、ソースから生成したのちに、mapやfilterなどの中間操作を経て、forEachなどの終端操作によって「消費」されます。いったん消費されたストリームを再度使用するには、streamを使って同じソースから新しいストリームを再度生成する必要があります。
この問題は、コード5行目のforEachでメソッド(終端操作)でストリームを消費している状況で、7行目で2度消費使用としているので、実行時にエラーになります。
インタフェースに関する問題
Javaで追加されたインタフェースのstaticメソッドとdefaultメソッドに関する問題です。
次のコードを確認して、4択の問題の答えましょう。
interface InterfaceA {
static void staticMethod() {
System.out.println("InterfaceA static");
}
default void call() {
System.out.println("Call default");
}
}
interface InterfaceB extends InterfaceA {}
class MyClass implements InterfaceB {
public void call() {
System.out.println("Call InterfaceC");
}
}
public class Test {
public static void main(String[] args) {
MyClass cls = new MyClass();
InterfaceB ib = cls; // (1)
ib.call(); // (2)
InterfaceB.staticMethodg(); // (3)
}
}
上のコードを実行すると、どのような結果になるか次の4つの選択肢から答えてみましょう。
- 以下のように出力される。
Call default
InterfaceA static
- 27行目の(1)でコンパイル・エラーが発生する。
- 29行目の(2)でコンパイル・エラーが発生する。
- 31行目の(3)でコンパイル・エラーが発生する。
答えは分かりましたか?
正解は4です。
27行目でMyClassクラスのインスタンスを、MyClassクラスが実装しているInterfaceBの型の変数に暗黙的にキャストしていますが。この操作は仕様上問題ないためエラーにはなりません。
29行目ではInterfaceBインタフェースの型で暗黙キャストした変数ibでcallメソッドを呼び出していますが、インターフェースは、親インタフェースであるInterfaceAインタフェースに定義されている抽象メソッドおよびデフォルトメソッドを呼び出すことできるため、こちらも問題ありません。
staticメソッドについては、定義しているインタフェースからしか呼び出すことができないため、31行目のInterfaceB.staticMethodg();はコンパイルエラーになり、正解は4になります。
31行目のコンパイルエラーを解消するためには、次のようにコードを書き換える必要があります。
InterfaceA.staticMethodg();
試験合格へのポイント
Java Gold合格のための近道は、模擬試験を徹底してやりこむことです。
前述したように、Java Goldは記述式の試験ではなく選択式の試験であり、書店なとで売られている模擬試験の問題集などと出題傾向が似ているため、これらの模擬試験を徹底してやり込むことが合格するためのポイントです。
使用する問題集は、いわゆる黒本と呼ばれる「徹底攻略 Java SE 8 Gold」や、紫本とも呼ばれる「オラクル認定資格教科書 Javaプログラマ Gold SE11」などが合格者が実際に使っている問題集です。
ラムダ式とストリームAPIは確実に抑えておく
冒頭の方で記載した、Java Gold出題カテゴリーを見ても分かる通り、出題範囲の多くがラムダ式やストリームAPIに関するものになっているため、このジャンルは念入りに学習をしておきましょう。
一見すると簡単そうな問題に見えますが、試験時にはコードを試しに実行したりすることはできません。コードの読解力と、頭の中でコードをデバッグする力が必要となります。