Java SE 8 Silver 試験前の勉強で気になったところ その2

前回の続きです。

(前回です)
dokyou3.hatenablog.com

2. リテラル表記

リテラル表記って普通に仕事で書いてる分には、ほとんどコンパイルエラーにならないのでどういう表記がNGか覚えていませんでした。

以下のルールを覚えておくといいでしょう。試験に出ます!

  • アンダースコアはリテラルの先頭と末尾には使えない
  • アンダースコアは記号の前後には使えない

※記号は「L(long型を表す)」「F(float型を表す)」「0b(2進数を表す)」「0x(16進数を表す)」「.」

Java SE 8 Silver 試験前の勉強で気になったところ

少し前にJava SE 8の資格についてブログを書かせて頂きましたが、思いのほか反響があり自分でも驚いています。

dokyou3.hatenablog.com

さらに試験のお役に立てればと思い、勉強時に気になったところを思い出して書いてみます。よかったら参考にしてください。

Silverの勉強した本はこちらです。

徹底攻略 Java SE 8 Silver 問題集[1Z0-808]対応

徹底攻略 Java SE 8 Silver 問題集[1Z0-808]対応

問題集を最初から順番に解いていき、解けなかったところを最後にまとめて再テストするという流れで進めました。では、自分が引っかかったところをピックアップして見ます。

  1. staticインポート

業務で頻繁に使っていましたが、importはIDEが勝手にやってくれるのでちゃんと理解できていませんでした。

staticな変数やメソッドにアクセスするとき、皆さんはどうしていますか?

public class Main {
    public static void main(String[] args) {
        // static メソッド
        String str = String.valueOf(1);
    }

↑のような感じでしょうか。

ちなみにStringのjava.langパッケージはデフォルトで全クラスにインポートされるのでimport文は不要です。valueOfメソッドをstaticインポートすると下記のよう書くことができます。

import static java.lang.String.valueOf;

public class Main {
    public static void main(String[] args) {
        // メソッド名だけでOK
        String str = valueOf(1);
    }

valueOfメソッドを頻繁に使用する時は、Stringを省けるので便利です。

ここ試験に出ます!staticインポートの書式に要注意です。

import static java.lang.String.valueOf;

import の後にstaticです。staticインポートと言っていますが逆なので間違えないでください。
それからメソッド名だけで()や引数は不要です!

staticインポートについては下記の本にも載っています。

スッキリわかる Java入門 実践編 第2版 (スッキリシリーズ)

スッキリわかる Java入門 実践編 第2版 (スッキリシリーズ)

Gradleでwar

この本を参考にTomcatServletを動かすまでをやってみました。

Gradle徹底入門 次世代ビルドツールによる自動化基盤の構築

Gradle徹底入門 次世代ビルドツールによる自動化基盤の構築

まずは任意のフォルダを作成し、Javaのプロジェクトを作ります。

gradle init --type java-library

そして、build.gradleを書き変えます。

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.bmuschko:gradle-tomcat-plugin:2.0'
    }
}


apply plugin: 'war'
apply plugin: 'com.bmuschko.tomcat'


repositories {
    mavenCentral()
}


dependencies {
    providedCompile 'javax:javaee-web-api:7.0'
    compile 'org.slf4j:slf4j-api:1.7.21'
    testCompile 'junit:junit:4.12'

    def tomcatVersion = '8.0.39'
        tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}",
               "org.apache.tomcat.embed:tomcat-embed-logging-juli:${tomcatVersion}"
        tomcat("org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}") {
            exclude group: 'org.eclipse.jdt.core.compiler', module: 'ecj'
        }
}

一番上のbuildscriptは、Tomcatプラグインを利用するための設定です。
buildscriptについては、以下のサイトをご参考ください。
第60章 ビルドロジックの体系化

providedCompileは、ビルド時には参照にするが、生成物からは除外する場合に使います。

次にサーブレットクラスを作成します。
src/main/javaディレクトリにサーブレットを作ります。

ここまででできればあとはtomcatを実行させるのみ!
以下のコマンドで実行します。

gradle tomcatRunWar

または

gradle tRW

でもOKです。


あとはブラウザからアクセスして起動していることを確認してください。
簡単にできてびっくりでした。

Java SE 8 SilverとGoldを取りました

2週間ほど自由な時間ができたので、Oracle認定Java資格を取得することにしました。
無事に取得できたので、勉強方法をメモしておきます。

因みに自分のJava経験は以下の通りです。

今回のターゲットは…

それぞれの勉強方法を記載します。

Silver SE 8(Java SE 8 Programmer I)

10年以上前に(まだSunの時代)資格を取っていますが、さすがに覚えていないので1から勉強し直しました。

勉強した本はこちら。

徹底攻略 Java SE 8 Silver 問題集[1Z0-808]対応

徹底攻略 Java SE 8 Silver 問題集[1Z0-808]対応

取得者のブログをいくつか拝見し、おすすめの書籍としている方が多かったのでこれにしました。

内容を確認してサクサク解けそうだったので、モチベーションUpも考え、書籍購入日から4日後を試験日に設定し、申し込みました。

書籍は11章構成になっています。
1日3章ペースで進め、試験当日は間違った箇所を解き直して、試験に臨みました。

勉強時間:14時間(4日)

結果:正解率 87%(合格ライン65%)

書籍と全く同じ問題もいくつか出てきたため、総仕上げ問題(10章、11章)で90%ぐらい取れていれば、余裕で受かると思います。
開発経験が2年ぐらいあれば、1週間の勉強で受かるのではないでしょうか。
因みに試験時間は60分ほどで解き終わりました。

f:id:dokyou3:20160906203352p:plain

Gold SE 8(Java SE 8 Programmer II)

Silverを取得した次の日からGoldの勉強を開始しました。
勉強した本はこちら。

オラクル認定資格教科書 Javaプログラマ Gold SE 8 (EXAMPRESS)

オラクル認定資格教科書 Javaプログラマ Gold SE 8 (EXAMPRESS)

Goldの書籍は現時点で1冊しか出ていないで、何も考えずこちらの一択になると思います。

今回も自分を追い込むため、先に受験日を決め、10日後設定で試験を申し込みました。
この本は12の章と模擬試験の構成になっており、各章に説明テキストと問題が載っています。
1日2章ペースで読み進めましたが、ボリュームが多い章もあり1日1章になってしまった章もちらほらありした。
12章まで終わったら、付属チェックシートで理解度を確認し、不十分なところはサンプルコードを実際に動かしながら理解度Upを図りました。
(各章のテキストと問題のサンプルコードはWebからダウンロードできます)

勉強時間:36時間(10日)

結果:正解率 77%(合格ライン65%)

勉強した書籍はSilverの本と違って問題数が少なかったので、SE 7 Goldの問題集を購入しようか迷いました。
受験日まで時間もなかったので結局買わず(7と8で変わっているところもあるので混乱しそうなのもあり)、購入した本をしっかり理解することに努めました。
試験本番、テスト終了15分前に解き終わりましたが、残りの時間をレビューに使い、結局ギリギリまで席にいました。
ラムダ式とStream APIの問題は多めだったので、使い方はちゃんと覚えておいた方と思います。

f:id:dokyou3:20160906205825p:plain

2週間でGoldを取得するのは時間に余裕のある方でないと難しいかもしれませんが、少しでも受験の参考になると嬉しいです。

追記
ちょっとずつ勉強していた時に気になった点もまとめていきます。
dokyou3.hatenablog.com

プロビジョニング

下記のサイトを参考にMacでプロビジョニングしてみました。

totech.hateblo.jp

知らなかったことを調べたのでついでにメモ。

Vagrantプラグインvagrant-vbguest」って?

VirtualBox のゲストマシンと、ホストマシン(今回はMac)との間の操作を便利にしてくれる。
例えば、
クリップボードの共有
・ フォルダの共有
・ 自動ログイン
・ ホストマシンとの時刻同期

bundlerでchef関連インストールって

Bundlerはプロジェクト内で使うRubygemsを管理するしくみ。

GemfileがBundler用の設定ファイル。

BundlerはGemfileの記述にしたがって、gemの依存関係を示したGemfile.lockを生成する。

・ Bundlerのインストール

gem install bundler

・ Gemfileの雛形作成

bundle init

あとはGemfileを編集すればよい

Vagrantのデフォルトパスワード

vagrant

こちらのサイトで再確認させて頂きました。

qiita.com