Java Silverとは? 試験の概要から必要となる知識まで現役エンジニアが解説!

初心者向けにJava Silverについて解説しています。これはオラクルが主催するJavaに関する認定試験のひとつです。Java Silverの概要や受けるメリットと試験内容の実例、勉強法について説明します。受験の際に役立ててください。

TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。

Java Silverと呼ばれる資格をご存知でしょうか?

オラクル公認のJavaに関する技術認定資格を指します。

今回はJava Silverについて、試験概要から資格獲得に向けた知識まで解説します。

 

目次

 

田島悠介

今回は、資格に関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Java Silverについて詳しく説明していくね!

大石ゆかり

お願いします!

 

 

Java Silverとは

Java Silverとはオラクル公認のJavaの技術レベル認定資格です。

現在Javaの権利を持っているオラクルの資格であるため、その信頼性は極めて高いです。

中級者向けであるJava Silverの他に、入門者向けの資格であるJava Bronzeと、上級者向けのJava Goldがあります。

Java Silverを取得すると、Javaアプリケーションの開発に必要な基本的な知識は一通り網羅できます。

また、様々な開発プロジェクトで発生するコーディング上の様々な問題の対応力も身につけられます。

 

Java SilverやJava Bronze、Java Goldは、Javaのバージョンアップと共に改定されています。

最新の認定試験試験は2019年6月から開始された「Java SE 11」に対応したもので、正式名称は以下の通りです。

 

  • Oracle Certified Java Programmer, Gold SE 11 認定資格
  • Oracle Certified Java Programmer, Silver SE 11 認定資格
  • Oracle Certified Java Programmer, Bronze SE 認定資格

 

[PR] プログラミングで挫折しない学習方法を動画で公開中

Java Silverの試験概要(試験時間や問題数、合格率や試験料)

Java Silverは全180分・80問の選択形式の試験です。63%以上の点数で合格とみなされます。

合格者の割合は公開されていませんが、問われるのはJavaの基本的な技術であるためJavaプログラミングに触れたことのある人なら、早い人で2週間、遅くとも2, 3ヶ月の勉強で合格ラインに到達できます。

プログラミング入門者が独学で勉強して合格を目指す場合、1年ほどの勉強で合格ラインに達するでしょう。

受験には¥32,340が必要です(2021年3月現在)。オラクルの公式ページから受験チケットの購入手続きを行います。

 

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));
        }
    }
}

問題:このコードをコンパイルおよび実行すると、どのような結果になりますか。

  1.  12 と出力される
  2.  552 と出力される
  3.  57 と出力される
  4.  55257 と出力される
  5.  5527 と出力される
  6.  1212 と出力される。
  7.  コンパイル・エラーが発生する

 

この問題の答えは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(2021, 7, 15, 12, 10);
        d1.plusMonths(2);
        d1.minusDays(-16);
        System.out.println(d1.format(DateTimeFormatter.ISO_DATE));

        LocalDateTime d2 = LocalDateTime.of(2021, 9, 31, 12, 10);
        d2.minusMonths(2);
        System.out.println(d2.format(DateTimeFormatter.ISO_DATE));
    }
}

問題:このコードをコンパイルおよび実行すると、どのような結果になりますか。

  1. 何も出力されず、実行時例外がスローされる
  2. 2021-09-31 と出力されたのち、実行時例外がスローされる
  3. 2021-10-01 と出力されたのち、実行時例外がスローされる
  4. 2021-07-15 と出力されたのち、実行時例外がスローされる
  5. 2021-10-01 と出力される
  6. 2021-07-31 と出力される
  7. 2021-10-01 と出力される
  8. 2021-08-01 と出力される
  9. 2021-07-15と出力される
  10. 2021-10-01 と出力される。

 

この問題の答えは4です。

ひとつ目の標準出力処理では作成したLocalDateTimeオブジェクトd1が出力されますが、ふたつ目の標準出力には処理が到達しません。

9月は30日までしかないので、存在しない日付を指定したオブジェクト作成処理「LocalDateTime.of(2021, 9, 31, 12, 10);」はエラーとなります。

 

また、正常に出力されるひとつ目の標準出力ですが、この出力される内容はオブジェクト作成時に指定した日時「2021-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に記述できるコードとして正しいものはどれでしょうか。(ふたつ選択してください)

  1.  String s -> s.startsWith(“h”);
  2. s -> s.startsWith(“h”);
  3. s -> return s.startsWith(“h”);
  4. (String s) -> { s.startsWith(“h”) };
  5. 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 11 Silver 問題集

通称「黒本」と呼ばれるJava Silver合格のために多くのプログラマが利用している問題集です。

豊富な問題パターンと詳細な解説が評判であり、この問題集を一通り解くだけでJava Silver対策の実践演習は十分と言えるでしょう。

全パターンの問題を解いたら、最後に収録されている「総仕上げ問題」で自分の実力をより実際の試験形式に近い形で確かめることができます。

総仕上げ問題でも高得点を取れるようになれたら、自信を持ってJava Silverを受験できるでしょう。

 

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

通称「紫本」と呼ばれるJava Silver合格のための問題集です。

黒本と比較して、こちらの方が出題範囲や解説を「合格のための要点を絞ったもの」となっています。

ポイントを抑えて効率よく合格のための学習をすることができる問題集です。

要点を抑えているため、プログラミング自体が初経験の駆け出しプログラマにとってはこちらの方が分かりやすいと感じる人も多いです。

黒本同様、全範囲の総仕上げとして挑戦できる実践形式の模擬試験も収録されています。一通りの学習を終えたら模擬試験に挑戦して、高得点を取れるようにしましょう。

 

執筆してくれたメンター

太田和樹(おおたかずき)

ITベンチャー企業のPM兼エンジニア普段は主に、Web系アプリケーション開発のプロジェクトマネージャーとプログラミング講師を行っている。

守備範囲はフロントエンド、モバイル、サーバサイド、データサイエンティストと幅広い。その幅広い知見を生かして、複数の領域を組み合わせた新しい提案をするのが得意。

開発実績:画像認識技術を活用した駐車場混雑状況把握(実証実験)、音声認識を活用したヘルプデスク支援システム、Pepperを遠隔操作するアプリの開発、大規模基幹系システムの開発・導入マネジメント地方在住。仕事のほとんどをリモートオフィスで行う。通勤で消耗する代わりに趣味のDIYや家庭菜園、家族との時間を楽しんでいる。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

テックアカデミーでは、従来の講義型研修とは違い、実務を想定したカリキュラムで実践的スキルを短期間で確実に身につけられる法人向けオンラインIT・プログラミング研修を展開しています。

1名〜数百名規模・業界を問わず、500社以上の企業様の研修を実施しています。 受講生一人ひとりに現役エンジニアのメンターが付き、皆様のニーズにあったサポートを行います。学習時の「わからない」を確実に解消いたします。

また、オンライン研修リモート研修に関する記事もあります。興味のある方は合わせてご覧ください。