ハニカムウエアのブログ

ハニカムウエアのブログ

システム開発、セキュリティ対策についての記事を書いています。

Upgrade to Java SE 8 OCP(1Z0-813) を受けます。Java Gold 取得までの勉強記録①

 f:id:honeycomware_inc:20170120224409j:plain

新しいJavaを知りたい

 

Javaなんてもう古いよ!これからは関数型言語の時代だぜ!

え、そうなの…?

2015年、私がSEになるべく会社の研修でプログラミングを学び始めたころ
既に子供のころからプログラミングをやっていた友人に言われた一言です。

いやもうそんなこと言われたって会社(※以前の会社です)にJavaやれって言われてるんだよ。。
そもそも関数型ってなんやねん…

プログラミングを始めた当初の私には今勉強しているJavaが古いのか新しいかどうかなんてことも分からず、ただひたすら研修でJavaを勉強するしかありませんでした。
そして当時の会社の研修の一環としてSJCP(Java6の資格)を取得し、
これでJavaちょっとはできるんじゃね?と渦巻いておりました。
そして現場でもJava初心者ながらギリギリ何とかなっていた部分があったので、
少し油断してました。

しかし気づいてしまいました。

Javaはちゃんと進化している。

きっと僕の友達の様にJavaに対してあーだこうだいう人が多いのでしょう。
もちろんそういう人たちがいるから技術は進化していく!っていうことは分かっているのです。が!
問題は私、新しいJavaがよく分からない。

困りました。
なんかJavaも最近では関数型を取り入れているらしい。
んーこれはまずい。勉強しないと。
新時代のJavaについていきたい!
ブログのネタが割ともうない!

というわけで

Upgrade to Java SE 8 OCP(1Z0-813) を受けることにしました。

thinkit.co.jp


この試験はSJCPを持っている人がOracleのJava8 Gold資格に移行できる試験です。
とりあえず試験の範囲を調べてみたところ

・upgrade試験はラムダとStream APIの問題の割合がやたら多い←勉強したかったところだから丁度良い


・try-with-resource文などJava8だけでなくJava7からの新機能も当然出る。←勉強したかったところだから丁度良い

 

はい。丁度よかったことが多かったのでで受けてみることにしました。

ところが勉強しようにもアップグレード試験はまだ参考書も出ておらず、ネットでも情報が少ない(あるにはあるが海外のものばかり)。
同じように困っている方やどんな試験か知りたい方のためにもちょっとずつ調べて今後は勉強したことや分かったことを書いていきます。

<現状の対策>

・とりあえずJavaの新しい機能の勉強

・移行試験ではなく通常のJava SE 8 Goldの試験の問題をやってみる(特にラムダやストリーム、日付APIなど)

・ネットで1Z0-813で検索して出てくると模擬問題を購入できる外国のサイトがあるため、そこで模擬問題を購入する(怪しかったんですが普通に購入できました)。

 

というわけで例題

 

海外のサイトの情報を参考にした問題です。

□問い 上のソースで10を出力するためには①~④のうちどれを挿入するのが適切でしょうか。


□選択肢
①Function<Integer, Integer>func = (int1,int2) -> int1*int2;
②Function<Integer, Integer, Integer>func = (int1,int2) -> int1*int2;
③BiFunction<Integer, Integer, Integer>func = (int1,int2) -> int1*int2;
④BiFunction<Integer, Integer>func = (int1,int2) -> int1*int2;


□正解


<③>
※③以外はコンパイルエラーが起きます。

・若干の解説
Java8からAPIに新たに追加されたjava.util.functionパッケージを使った問題でした。
java.util.functionパッケージではよく使われそうな関数型インターフェースがまとめられています。
さて、問題ではnum1とnum2の二つの引数を一つの結果に導きたかったので③だけが正解です。
→関数型インターフェイスBiFunctionは2つの引数と1つの戻り値を持ちます。
詳細は下記のAPIから↓
https://docs.oracle.com/javase/jp/8/docs/api/java/util/function/Function.html
https://docs.oracle.com/javase/jp/8/docs/api/java/util/function/BiFunction.html

どうでした?
ちなみに僕はこのBiFunctionを知らなかったので全然解けませんでしたw
アップグレード試験は通常の試験よりも範囲が狭く深いのでコード書いて覚えるしかなさそうです。

今後もちょくちょく勉強日誌として上げていきます。

以上ハニカムウエアの新米Uでした。

 自社で開発を行っております。弊社ホームページもぜひご覧ください。

f:id:honeycomware_inc:20170106130819j:plain