Linux、再び

出荷前のソフトインストールやネットワーク設定、VMWareで動作確認、現地調整で実機テストなんかをやっていたので、簡単なコマンドはわかるけど、細かいところはよくわかっていなかった。

次のアサインされているお仕事は、インフラ系の業務なので、Linuxの復習。

頑張ります。

Java SE11 Goldは、難易度高かった

2年くらい前にやっとJavaの勉強を始めて、半年くらいでJava Bronzeを飛ばしてJava Silverから受けて1回目は50%くらいの正答率で当然不合格、その後に1ヶ月猛勉強して2回目でSilver合格。その後、Javaと似ているというかかなり影響をお互いに受け合ったと思われるC#の案件やってみたら、現場の参考にしたソースコードが全然オブジェクト指向で書かれてなくて、ネット検索もできない環境だったのもあって行き詰まり、撤退させてもらって、心休めておりました。

年明けからすっかりC#に染まっておりSystem.out.println()すらConsole.Writeline()になってたので、Java Silverの問題集を復習して、Java Goldの為に自習を始めました。

 

2ヶ月ちょっとくらいの学習でしたが、ボーダーラインぎりぎりでした。

一応、受かったので社内のプロフィールに記載しておきました。ついでに社内研修でJavaフレームワークをいろいろと教えてくださった先輩方の取得資格調べて見たところ、何百人といる会社の中で、プロフィールの資格欄にJava Goldを記載している方は、3, 4名ぐらいで、バリバリに現場でコード書いてる人達でも、実力確認の為にSilver受けただけの方々が多いようです。

まあ、Java Gold受かっても、Spring FrameworkやらTomcatMavenやらは、全く現場で使ってないからド素人なんですけれどね。

ひとまずSpring系の分厚い本があるので、GWの睡眠導入剤として使わせてもらおうかと思います。

Java SE11 Goldの受験結果

アクセス数が、ほぼ自分のアクセスくらいなので、同じような境遇の方にも、情報を共有しようと思い、先日のJava SE11 Goldの試験結果を報告。

 

取得正答率63%/、63%合否正答率ラインで、合格でした。ご協力いただいた方、黒本、紫本の著者の方々、ありがとうございました!

今までの投稿でお分かりだと思いますが、自分はちょっと前までプログラミングって何それ?っていうレベルでした。

 

問題の出題傾向みたいのは、口外しないこと、という宣誓書を書かされたのでこれ以上はディテールは言えませんが、Silverの時とは違ったなあという感じでした。

 

ひとまず、ご報告まで。

モジュールシステムについて 【Java】

モジュールシステムというのが、SE9から導入されました。大まかにいうと、パッケージよりも上にモジュールという括りができまして、module-info.javaというモジュール定義ファイルに、自身のモジュールが公開するパッケージをexports ******;

という感じで指定して、そのモジュールが利用したいモジュールの名前をrequires *****;

という感じで指定します。Java SE11 Silverですとそれぐらいしか出題されなかったようですが、Goldではprovides, with, opens, usesというキーワードも問われるようです。

 

以前からあるリフレクションという、クラスの定義情報を調べることでインスタンスが具体的に何型かを知らなくても動作させることができる技術の関連で、公開はしないけれどリフレクションではアクセスできるようにするopensというキーワードもあります。公開を許可するモジュールを限定する時は、opens ****** to *******;という風にtoの後にモジュール名を書きます。toの後が複数の場合、カンマで区切ります。

 

usesは、SPI(サービスプロバイダーインタフェース)として利用するインタフェース名を書きます。

そして上記のSPIを実装するライブラリ側の準備として、ライブラリ側のmodulue-info.javaに、provides (SPIのインタフェース名) with (実装クラス名)を指定します。

 

 

 

 

インターフェイスと抽象クラスの違い【Java】

通常のクラスですと、いくつかフィールドや具象メソッドがあります。抽象クラスになると、少なくとも一つ以上の抽象メソッドが定義されます。

インターフェイスとは、クラスに含まれるメソッドの具体的な処理内容を記述せず、変数とメソッドの型のみを定義したものです。

抽象クラス自身にはabstract修飾子をつけて、継承するクラスにはクラス名の後にextends 抽象クラス名 をつけます。多重継承はできません。

インターフェイス自身にはinterface修飾子をつけて、実装するクラスにはクラス名の後にimplements インターフェイス名 をつけます。複数実装する時は、「,」区切りで並べます。

 

試験対策として、タイトルの「インターフェイスと抽象クラスの違い」として、以下の件を覚えておきたいです。

 

インターフェイスにはインスタンスフィールドを定義できないが、抽象クラスには定義できる。

 

インターフェイスには protected なメソッドを定義できないが、抽象クラスには定義できる。

 

enum(列挙型)とは?【Java】

Javaで使う列挙型は、その型に入る値が決まっているものをまとめたものです。

例えば、曜日の列挙型ならば、「月火水木金土日」の七種類しかないので、それ以外は入力できない(されない)ようにできるという事です。

 

試験対策ですが、この列挙型をコンストラクタは、privateでしか修飾できません。一度にいくつものインスタンスを作る事がないからでしょうか。書かなくても暗黙的にprivateになります。

オートボクシング、アンボクシング【Java】

プリミティブ型同士だと暗黙の型変換(int -> doubleなど)できるけど、ラッパークラス同士だとできません。(Integer -> Doubleはダメ)

ボクシングというのはラッパークラスに入れること。アンボクシングはラッパークラスからプリミティブ型にすること。