ディベロッパ試験の勉強をかねてまとめていきたいと思っていたのですが、あっという間に一年の月日は流れ、結局、締め切り間際の駆け込み受験で、事後作成になりました。
内容的にはぎりぎりラインを極めたと思います。
Sunのサイトで試験概要をチェック。
ここで心が折れそうになりましたが、何とか自分を励まして情報収集しました。
試験について必要な情報のほとんどが、ここから入手できました。
一緒に受験しているような気持ちになれます。
(↑割引がよいのでおすすめです)
思い切ってチケット購入。買ってしまったらやるしかない!
ほとんどの技術情報は、Sunのサイトから入手できました。
プログラミングというより、コーディング規約とか提出物の作成方法について参考にしました。
インターネットでも集められそうな情報でしたが、何より日本語だし、頼りました。
真っ先にソースコードをダウンロードしました。
データベースについては、形式が違っていてあまり使えなかったけれど、GUIは参考になりました。
本文は、小論文試験を受けに行く新幹線の中で読みました。
英文とはいっても意外と読みやすく、もっとはやく読んでおけばよかったです。
データベースの部分が知りたくて、ソースコードだけみてみました。
やはりロックについては、いまひとつ納得がいかず、他の方法を検討しました。
自分のときは7問の出題があり、多くを語るとボロが出そうだったので、それぞれ2、3行で済ませてしまいました。
小論文は採点に含まれないというウワサもあり、たいしたことは書けなくてもよさそうですが、思想と実装が矛盾して言葉につまったりしないように、はじめから想定して課題に取り組むとよいかもしれません。
ポイントは、やはり「GUI」「データベース」「ネットワーク」のようです。
データベース部分は、ソースが提供され、それを修正したり指示された機能を追加したりして仕上げました。
実務でデータベースを使うときと同様に、デッドロックにも気をつけました。
機能追加により競合しそうなところができてしまい、提供されたソースの側を変更してみました。
課題の説明文で、提供されたソースに誤りがあれば正すように指示されていて、拡大解釈のような気もしましたが、なんとかセーフだったようです。
java.nio.channels.FileChannelクラスのlockメソッドを使って、排他ロック・行ロックを実装してみました。
具体的な使用方法は、この記事を参考にしました。
一意性のチェックでデッドロックが心配になり、java.util.concurrent.locks.ReadWriteLockを使ってみました。
画面ができると最後までいけそうな気がして、気持ちがはずみました。
基本、Sunのチュートリアルを参考にしておけば間違いないかと。
チュートリアルは英文ですが、ソースコードだけでも参考になりました。
ネットワークは、RMIかソケットかを選択して実装します。
どちらを選んでも適切な理由が説明できればよいようです。
実務を考えると、この機会にソケットをしっかり勉強しておいた方がよかったような気もしますが、開発効率の面からRMIを選択しました。(期限が迫っていたので、、、)
課題提出の際に、マニュアル、javadoc、設計上の選択理由などについてのドキュメントの作成も指示されました。
小論文と重複する部分が多いので、予習にもなりました。
慣れていないと提出物をまとめる作業に意外と手間取ります。
引数や戻り値などのタグが抜けないようにだけ気をつけ、説明は1、2文で済ませてしまいました。
実務ではあまり経験がなかったので、オプション等も確認しながら実行しました。
実務ではアウトだと思いますが、java.security.AllPermissionでいっちゃいました。