OCJP, Silver SE 8を取得しました

Sat May 6, 2017 in program using tags java , certificate

2017年7月にJava 9のリリースが予定されている中で、「Oracle Certified Java Programmer, Silver SE 8 (1Z0-808)」を取得しました。 資格取得までに勉強したことをメモしておきます。

Java経験

私のJava経験は以下ととおりです。

  • 2010年にSun認定JavaプログラマSE6(SJC-P)を取得
  • Javaはたまに趣味で書く程度(仕事ではプログラミングはしていません)

勉強方法

試験まで以下の参考書を使用して勉強しました。

  • オラクル認定資格教科書 Javaプログラマ Silver SE 8

SJC-Pを取得していたこともあり、基本的な文法やオブジェクト指向については復習程度の学習で問題ありませんでした。

参考書の1章から8章までを一通り読んでから模擬試験問題にチャレンジしました。 Java SE 8で新しく勉強した部分で不安がありましたが、正解率90%ぐらいとれたため試験に申し込みました。

新しく勉強した内容

過去に取得したSJC-PからSilver SE 8を取得するにあたり新しく勉強した内容は以下のとおりです。

2進数表記

0bを先頭につけることで2進数を表現できるようになりました。

ex)
0b1010    // 10進数で10
0b1111    // 10進数で15

数値リテラルのアンダーバー

数値リテラルにアンダーバーを使用してカンマのように表現できるようになりました。

ex)
1_234
5_6

インタフェースのdefaultメソッドとstaticメソッド

インタフェースにメソッドの実装を記載できるようになりました。 結果、多重継承が実現可能となりました。

インタフェースと抽象クラスで同じようなことができるようになったため、使い分けが難しそうです。

ex)
interface MyInterface {
    void method1();
    default void method2() { System.out.println("method2"); }
    static void method3() { System.out.println("method3"); }
}

ラムダ式

ラムダ式という構文が追加されました。ラムダ式を使用するとこれまで匿名クラスを使用していた場面での実装を、よりシンプルにできます。

ラムダ式を使用するにあたり、Java SE 8のAPIに関数型インタフェースというものが追加されています。(参考:java.util.function (Java Platform SE 8))

ex)
import java.util.function.Predicate;
public class LambdaSample {
    public static void main(String[] args) {
        // ラムダ式(省略あり)
        Predicate<String> pre = str -> str.isEmpty();

        /*
        // ラムダ式(省略なし)
        Predicate<String> pre = (String str) -> { return str.isEmpty(); };
        */

        /*
        // 匿名クラスの実装
        Predicate<String> pre = new Predicate<String>() {
            public boolean test(String str) {
                return str.isEmpty();
            }
        };
        */

        System.out.println(pre.test(""));
        System.out.println(pre.test("LambdaSample"));
    }
}

Date and Time API

Dateクラスの代わりとなる新しいDate/Time APIが追加されました。 例えば、LocalDateクラスやLocalTimeクラス、LocalDateTimeクラス等が追加されています。

ex)
LocalDate date = LocalDate.now();
LocalTime time = LocalTime.parse("18:23:11");
LocalDateTime dateTime = LocalDateTime.of(2017, 5, 6, 18, 23, 11);

今後

Oracle Certified Java Programmer, Gold SE 8 (1Z0-809)の取得に向けて勉強をしています。

勉強を始めたばかりなのですが、Gold SE 8ではSilver SE 8以上に深い言語仕様の理解と標準APIの理解が必要なことがわかります。

仕事でJavaを書くことはないのですが、趣味に生かしていければと考えています。

以上です。