Java7→Java8アップグレードに成功・・・
さっそく、「Upgrade Java SE 7 to JavaSE 8 OCP Programmer」試験を受けてきました。結果、なんとかアップグレードに成功。参考書なしで試験をうけるのはRuby Gold試験以来かもしれません。
当たり前ですが基本的にOracleの公式ページに示されたトピックスからの出題がたっぷり飽きるほど出て(ほんとにくどくどと!)、試験時間を完全に使い果たすことになりました。OCJ-Pの伝統に則って、コンパイル・エラーと実行時例外スローと破壊的/非破壊的手続きに絡むひっかけ問題(もしくは「ひっかけ」と見せかけたひっかけ問題)が盛り沢山。
辛くも、というほどではないですが、ターゲット型とラムダ式の型推論の関係性についてはもっといろいろ実験を、File
やCollection
に追加されたAPIについてはもっとJavadocの熟読を・・・、等々いろいろ悔やまれる点はある状況でした。
追記
受験に先立ち参照したWebページや記事、オライリー本を列挙しておきます:
- Javaによる関数型プログラミング ―Java 8ラムダ式とStream
- 当初は試験勉強とは無関係にHaskellなどの関数型言語の概念への興味からのために手にとったもの。Javaとくにラムダ式とメソッド参照とStreamへの導入として役立ちました。
- @IT連載 Java 8はラムダ式でここまで変わる
- こちらもラムダ式に関する導入資料として参照しました。構文に関する仕様などが簡潔に示されている分、前掲のオライリー本より試験勉強に役立った面があるように思います。
- @IT連載 ここが大変だよJava 8 Date-Time API
- どこらへんが「大変」なのかよくわかりませんでしたが、Date-Time APIに関する資料として大変役立ちました。受験後、この記事で理解した内容をもとに、各オブジェクトのstaticファクトリメソッドのバリエーションやサマータイムに関する挙動をもっとしっかり調べておけばよかったとちょっと後悔しました。
- Java 8:ラムダ式、パート1 Java 8のラムダ式について知る
- Oracle公式資料。関数型インターフェース、ラムダ式、メソッド参照、レキシカル・スコープ、仮想拡張メソッド(defaultメソッド)といったいずれも試験のトピックになっている──とはいえそうでなくても重要なテーマについてさらっと書かれています。
- Java 8:ラムダ式、パート2 ラムダ式を有利に使用する方法
- Oracle公式資料。こちらはどちらかといえばCollection APIの拡張やStreamに関しての記述が主となっています。
- Javaプログラミング言語の拡張機能
- Oracle公式資料。Java言語の各バージョンで追加されてきた機能が列挙されています。とても簡潔です。ターゲット型と型推論というテーマに関して示唆を与えてくれました。
- The Java Tutorials > Nested Classes > Lambda Expressions > Target Typing
- Oracle公式資料。ターゲット型と型推論というテーマに関してもう少し掘り下げてくれます。この記事の訳出は先日のポストに掲載しています。ターゲット型うんぬんについてヒントにしていただければと思います。