Java Silverについて解説します。
なお本記事は、TechAcademyのJava講座の内容をもとに作成しています。
今回は、資格に関する内容だね!
どういう内容でしょうか?
Java Silverについて詳しく説明していくね!
お願いします!
目次
Java Silverとは
Java Silverとはオラクル公認のJavaの技術レベル認定資格です。現在Javaの権利を持っているオラクルの資格であるため、その信頼性は極めて高いです。
中級者向けであるJava Silverの他に、入門者向けの資格であるJava Bronzeと、上級者向けのJava Goldがあります。Java Silverを取得すると、Javaアプリケーションの開発に必要な基本的な知識は一通り網羅できます。また、様々な開発プロジェクトで発生するコーディング上の様々な問題の対応力も身に着けることができます。
Java Silverの試験概要(試験時間や問題数、合格率や試験料など)
Java Silverは全150分・77問の選択形式の試験です。65%以上の点数で合格とみなされます。
合格者の割合は公開されていませんが、問われるのはJavaの基本的な技術であるためJavaプログラミングに触れたことのある人なら、早い人で2週間、遅くとも2, 3ヶ月の勉強で合格ラインに到達することができます。プログラミング入門者が独学で勉強して合格を目指す場合、1年ほどの勉強で合格ラインに達することができるでしょう。
受験には¥26,600が必要です。オラクルの公式ページから受験チケットの購入手続きを行います。
Java Silverを取得するメリット
ではJava Silverを取得するメリットはどのようなものがあるのでしょう?大きくは3つです
- Javaプログラマとしての信頼を得られる
- avaの基本的な技術を一通り網羅できる
- Javaの技術を頭の中から引き出すのが上手くなる
Javaプログラマとしての信頼を得られる
Java Silverを取得することで得られる最大のメリットは信頼です。
Javaの権利者であるオラクル公認のJavaプログラマとしての資格であるため、知名度・信頼度共に極めて高い資格です。一般的なJava開発案件であれば、Java Silverの資格があれば参加を断られることはあまりないでしょう。
Javaアプリケーションを開発するメンバーの一員として、協力してチームに貢献できる人材だと認識されやすいです。
Javaの基本的な技術を一通り網羅できる
Javaには様々なメソッドや文法、APIが用意されています。その中には普段のプログラミングではあまり触れることがないようなものもあります。Java Silverを取得すると、これら様々なJavaの技術を一通り身に着けることができます。
プログラミングにおいて、「最低限動けばいい」だけのコードと「可読性が高く拡張性も良い」コードとの間には大きな差があります。Java Silverで身に着けることができる技術は「可読性が高く拡張性も良い」コードを書くのに必要な知識が詰まっています。
Javaの技術を頭の中から引き出すのが上手くなる
皆さんは普段のコーディングで、いちいち文法やメソッドの仕様について検索して調べてはいないでしょうか?
業務において、書く時間と同じくらい手間がかかるのが「調べる時間」です。言語の仕様をいちいち検索していては、いつまで経っても開発効率は悪いままです。Java Silverを取得することで、Javaの技術をしっかりと頭の中に叩き込むことができます。
試験では当然わからないことを検索することもできませんから、Java Silver合格にあたってJavaの技術をそらんじて使えるようになる必要があります。いちいち検索せずともスラスラと最適なコードを書くことができるようになると、実際の開発案件で工数を大幅に削減できます。
必要となる知識
Java Silver ではJavaの基本的な知識を広範囲に渡って求められます。ここでは、Java Silver でよく出題される代表的な問題をいくつかピックアップして解説します。
文字列の連結とswitch文についての問題
public class TestSwitchString {
public static void main(String[] args) {
String string = "5";
switch (string) {
case "5":
System.out.print(string + 5 + 2);
case "10":
System.out.print(string + (5 + 2));
}
}
}
問題:このコードをコンパイルおよび実行すると、どのような結果になりますか。
- 12 と出力される
- 552 と出力される
- 57 と出力される
- 55257 と出力される
- 5527 と出力される
- 1212 と出力される。
- コンパイル・エラーが発生する
この問題の答えは4番です。上記コードを実行すると「13417」が出力されます。
この問題ではswitch文の基礎的な知識を問われています。case句内でbreakがないので、ひとつ目のcase句実行後、ふたつ目のcase句まで立て続けに実行されるのです。また文字列と数値の加算演算子は、数値を文字列に変換した上で行われます。
ひとつ目のcase句では「string + 5 + 2」が「string + “5”+ “2”」として実行されます。一方、ふたつ目のcase句では「string + (5 + 2)」が「string + (7)」つまり「string + “7”」として実行されます。そのため、このふたつのcase句が実行され、標準出力に「55257」が出力されるのです。
日時APIについての問題
public class TestLocalDateTimeApi {
public static void main(String[] args) {
LocalDateTime d1 = LocalDateTime.of(2019, 7, 15, 12, 10);
d1.plusMonths(2);
d1.minusDays(-16);
System.out.println(d1.format(DateTimeFormatter.ISO_DATE));
LocalDateTime d2 = LocalDateTime.of(2019, 9, 31, 12, 10);
d2.minusMonths(2);
System.out.println(d2.format(DateTimeFormatter.ISO_DATE));
}
}
問題:このコードをコンパイルおよび実行すると、どのような結果になりますか。
- 何も出力されず、実行時例外がスローされる
- 2019-09-31 と出力されたのち、実行時例外がスローされる
- 2019-10-01 と出力されたのち、実行時例外がスローされる
- 2019-07-15 と出力されたのち、実行時例外がスローされる
- 2019-10-01 と出力される
- 2019-07-31 と出力される
- 2019-10-01 と出力される
- 2019-08-01 と出力される
- 2019-07-15と出力される
- 2019-10-01 と出力される。
この問題の答えは4です。ひとつ目の標準出力処理では作成したLocalDateTimeオブジェクトd1が出力されますが、ふたつ目の標準出力には処理が到達しません。9月は30日までしかないので、存在しない日付を指定したオブジェクト作成処理「LocalDateTime.of(2019, 9, 31, 12, 10);」はエラーとなってしまうのです。
また、正常に出力されるひとつ目の標準出力ですが、この出力される内容はオブジェクト作成時に指定した日時「2019-07-15 」です。
LocalDateTimeオブジェクトd1は作成後、「d1.plusMonths(2);」「d1.minusDays(-16);」で月日を変更したはずですが、なぜでしょうか?答えは「LocalDateTimeオブジェクトはイミュータブルなオブジェクトだから」です。
イミュータブルなオブジェクトとは、プログラミングにおいて自身の変更を行わないオブジェクトです。LocalDateTime.plusMonthsやLocalDateTime.minusDaysは「自身(レシーバ)の変更は行わず、新しいLocalDateTimeオブジェクトを返却するオブジェクト」です。
これらメソッドを実行したからといって、変数d1が保持するLocalDateTimeオブジェクトに変更はありません。そのため、d1を標準出力しても、オブジェクト作成時の日時のままの文字列しか取得できないのです。
ラムダ式の記法についての問題
public class TestLambda {
public static void main(String[] args) {
String[] strArr = { "foo", "hoo", "hoge" };
List strList = new ArrayList<>(Arrays.asList(strArr));
Predicate predicate = // line 1
strList.removeIf(predicate);
for (String str : strList) {
System.out.println(str);
}
}
}
問題:このコードをコンパイルおよび実行して”foo”のみを表示するために、line1に記述できるコードとして正しいものはどれでしょうか。(ふたつ選択してください)
- String s ->s.startsWith(“h”);
- s ->s.startsWith(“h”);
- s ->return s.startsWith(“h”);
- (String s) ->{ s.startsWith(“h”) };
- s ->{ return s.startsWith(“h”);};
この問題の答えは2と5です。ラムダ式の基本的な記法が問われていますね。
ラムダ式の引数は、暗黙的に型が割り当てられます。ですので、型を指定している1と4は間違いです。また波括弧を略した場合、ラムダ式は暗黙的にアロー(->)の右辺をreturnします。ですので、波括弧を略しているのに「return」を書いている3は間違いです。
おすすめの勉強法
ここまででJava Sliverを取得するメリットが理解できたかと思います。では実際に取得するための勉強方法について詳しく解説していきます。
Javaの公式リファレンスを一通り網羅する
公式リファレンスにはJavaの仕様の全てが解説されています。Java SilverはJavaの基本的な知識を満遍なく出題してくるので、公式リファレンスに書いてある基礎的なオブジェクトやメソッドの使い方を網羅できていれば、問題なく解くことができます。
ラムダ式や正規表現などJava初心者が避けがちな内容も、公式リファレンスをよく読み、実際にコードを書いてみれば分かるようになります。
コードの好き嫌いをせず、公式リファレンス記載の内容を満遍なく学習しましょう。
問題集のコードを実際に書いて動かしてみる
実際にJava Silverに出題されがちな問題を、コードを書きながら解いてみると、多くの問題は理解できます。ここで大切なのは、実際に「コードを書いて動かすこと」です。
読んだだけで理解したつもりになるのと、自分でコードを書いて動かしてみたのとでは理解度が大きく変わります。少し応用的な問題が出ても難なく解ける地力をつけるためにも、「実際に書いて動かす」ことを意識しながら問題集に取り組んでみましょう。
役に立つ参考書まとめ
勉強法がわかれば次は参考書です。ここでは2つ紹介します。
徹底攻略 Java SE 8 Silver 問題集
徹底攻略 Java SE 8 Silver 問題集[1Z0-808]対応
通称「黒本」と呼ばれるJava Silver合格のために多くのプログラマが利用している問題集です。豊富な問題パターンと詳細な解説が評判であり、この問題集を一通り解くだけでJava Silver対策の実践演習は十分と言えるでしょう。
全パターンの問題を解いたら、最後に収録されている「総仕上げ問題」で自分の実力をより実際の試験形式に近い形で確かめることができます。
総仕上げ問題でも高得点を取れるようになれたら、自信を持ってJava Silverを受験できるでしょう。
オラクル認定資格教科書 Javaプログラマ
オラクル認定資格教科書 Javaプログラマ Silver SE 8
通称「紫本」と呼ばれるJava Silver合格のための問題集です。黒本と比較して、こちらの方が出題範囲や解説を「合格のための要点を絞ったもの」となっています。ポイントを抑えて効率よく合格のための学習をすることができる問題集です。
要点を抑えているため、プログラミング自体が初経験の駆け出しプログラマにとってはこちらの方が分かりやすいと感じる人も多いです。
黒本同様、全範囲の総仕上げとして挑戦できる実践形式の模擬試験も収録されています。一通りの学習を終えたら模擬試験に挑戦して、高得点を取れるようにしましょう。
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
TechAcademyでは、従来の講義型研修とは違い、実務を想定したカリキュラムで実践的スキルを短期間で確実に身につけられる法人向けオンラインIT・プログラミング研修を展開しています。
1名〜数百名規模・業界を問わず、500社以上の企業様の研修を実施しています。 受講生一人ひとりに現役エンジニアのメンターが付き、皆様のニーズにあったサポートを行います。学習時の「わからない」を確実に解消いたします。