「Javaが使えます」という人の基準

そういえば、「Javaがつかえます」、という基準はどこにあるだろうか。

そんな考えをまとめてみた。

おいらの場合特定のプロダクトを使いこなせるというよりは、標準APIの基礎が広く薄くわかっているというレベルかなぁ。

たとえば暗記していてクラス名やメソッド名などすらすらでてくる、というのは望ましいけど、そうではなく、JavadocIDEの補完、ネット上の情報見てそれなりにやれるというレベルを期待したいところ。どうせ、開発始めれば細かい使い方はわかるようになるし。

かなーりあまい基準で「そんなへっぽこレベルでできるといわれても困る」とおこられそうだけど。


言語の文法は基本抑えているというのが前提として以下のものが当てはまる人。

  • Java2Dがわかる
    • Graphics/2Dをある程度触れる
    • BufferedImageとVolatileImageの違いを理解している
  • 日付処理がわかる
    • Dateの理解
    • Calendarの理解
  • ファイルの読み書きができる
    • Fileクラスの理解
    • ストリームの理解
    • リーダーの理解
  • ソケット通信ができる
    • ソケットでつなぐことができる
    • サーバーソケットでまち受けできる
  • RMIがわかる
    • 足し算くらいを別VMで実行して結果を求める
  • プリンタへ印刷がわかる
    • Javaで印刷といっても3種類くらい方法があって、一番面倒な印刷サービスまでいかなくとも一番簡単な方法でいいので印刷ができる
  • AWT/Swingがわかる
    • JFrameにJButtonとJLabelとJtextFieldを貼り付けることができる
    • イベントディスパッチスレッドを理解する
    • 具体的には新たにスレッドを立ち上げてそこからSwingコンポーネントを触ることができるか
    • ボタンクリックイベントくらいは理解できる(イベントハンドラの理解)
    • paintComponentで適当にカスタマイズした描画ができる
    • Timerあたりを利用してアニメーションもできる
  • Servlet/JSPがわかる
    • Servletを作成してリクエストパラメータを元に処理ができるか
    • JSPを作成して表示ができるか
    • リクエスト、セッション、アプリケーションというスコープの理解
    • ServletからJSPフォワードしてリクエストスコープのパラメータをわたせるか
  • JDBCがわかる
    • select * from TableというSQLを発行できるか
    • ResultSetで片方向、双方向のカーソル移動
    • Nullの取得方法がわかる
    • deleteRow、updateRow、moveToInsertRow、insertRow等の基礎的な理解
    • トランザクション
  • JavaSoundがわかる
    • PCMの生データをbyte[]でもらってストリーム再生できるか
  • ゲームが作れる
    • 上記を踏まえてスペースインベーダをさらに単純にしたSTGくらいは作れる


Javaでやれること」にたいしてのある程度の見積もりができるレベルというか。細かいところはおいおいやっていけばいいとして、各項目は1,2日勉強するだけで覚えれるレベルなんで、言語の基礎を覚えている人なら2ヶ月くらいでここに上がるのは大丈夫なはず。つまり、言語そのものを理解している人を雇ったとして、新人研修で余裕で全部覚えれますね。

言語自体知らない人を雇ってる場合はしらない。そこが一番時間かかるし、そのための専門教育なんだろうし。

これくらいの基礎があればたぶん、フレームワークやライブラリを覚えろといわれても大丈夫だと思う。